gpuNUFFT 0.7.1__tar.gz → 0.7.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/cuda_utils.hpp +16 -1
  2. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/python/gpuNUFFT_operator_python_factory.cpp +6 -7
  3. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/std_gpuNUFFT_kernels.cu +1 -0
  4. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpuNUFFT_operator.cpp +50 -24
  5. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/PKG-INFO +1 -1
  6. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/gpuNUFFT.egg-info/PKG-INFO +1 -1
  7. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/setup.py +1 -1
  8. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/CMakeLists.txt +0 -0
  9. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/doc/CMakeLists.txt +0 -0
  10. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/doc/Doxyfile +0 -0
  11. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/doc/mainpage.dox +0 -0
  12. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/balanced_gpuNUFFT_operator.hpp +0 -0
  13. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/balanced_operator.hpp +0 -0
  14. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/balanced_texture_gpuNUFFT_operator.hpp +0 -0
  15. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/config.hpp +0 -0
  16. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/config.hpp.cmake +0 -0
  17. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/cuda_utils.cuh +0 -0
  18. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/cufft_config.hpp +0 -0
  19. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/cufft_config.hpp.cmake +0 -0
  20. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/gpuNUFFT_cpu.hpp +0 -0
  21. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/gpuNUFFT_kernels.hpp +0 -0
  22. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/gpuNUFFT_operator.hpp +0 -0
  23. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/gpuNUFFT_operator_factory.hpp +0 -0
  24. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/gpuNUFFT_types.hpp +0 -0
  25. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/gpuNUFFT_utils.hpp +0 -0
  26. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/matlab_helper.h +0 -0
  27. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/precomp_kernels.hpp +0 -0
  28. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/precomp_utils.hpp +0 -0
  29. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/inc/texture_gpuNUFFT_operator.hpp +0 -0
  30. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/CMakeLists.txt +0 -0
  31. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/balanced_gpuNUFFT_operator.cpp +0 -0
  32. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/balanced_texture_gpuNUFFT_operator.cpp +0 -0
  33. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/cpu/gpuNUFFT_cpu.cpp +0 -0
  34. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/CMakeLists.txt +0 -0
  35. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/atomic/CMakeLists.txt +0 -0
  36. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/atomic/atomic_gpuNUFFT.cu +0 -0
  37. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/atomic/atomic_gpuNUFFT_kernels.cu +0 -0
  38. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/atomic/texture_gpuNUFFT_kernels.cu +0 -0
  39. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/matlab/CMakeLists.txt +0 -0
  40. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/matlab/gpuNUFFT_adj.cpp +0 -0
  41. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/matlab/gpuNUFFT_forw.cpp +0 -0
  42. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/matlab/gpuNUFFT_operator_matlabfactory.cpp +0 -0
  43. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/matlab/gpuNUFFT_operator_matlabfactory.hpp +0 -0
  44. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/matlab/precomputation/CMakeLists.txt +0 -0
  45. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/matlab/precomputation/gpuNUFFT_precomp.cpp +0 -0
  46. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/precomp_kernels.cu +0 -0
  47. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpu/python/CMakeLists.txt +0 -0
  48. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpuNUFFT_operator_factory.cpp +0 -0
  49. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/gpuNUFFT_utils.cpp +0 -0
  50. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/CUDA/src/texture_gpuNUFFT_operator.cpp +0 -0
  51. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/LICENSE +0 -0
  52. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/MANIFEST.in +0 -0
  53. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/README.md +0 -0
  54. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/gpuNUFFT.egg-info/SOURCES.txt +0 -0
  55. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/gpuNUFFT.egg-info/dependency_links.txt +0 -0
  56. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/gpuNUFFT.egg-info/not-zip-safe +0 -0
  57. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/gpuNUFFT.egg-info/top_level.txt +0 -0
  58. {gpuNUFFT-0.7.1 → gpuNUFFT-0.7.3}/setup.cfg +0 -0
@@ -110,13 +110,28 @@ inline void allocateAndSetMem(TypeName **device_ptr, IndType num_elements,
110
110
  */
111
111
  template <typename TypeName>
112
112
  inline void copyDeviceToDevice(TypeName *device_ptr_src,
113
- TypeName *device_ptr_dest, IndType num_elements)
113
+ TypeName *device_ptr_dest, IndType num_elements
114
+ )
114
115
  {
115
116
  HANDLE_ERROR(cudaMemcpy(device_ptr_dest, device_ptr_src,
116
117
  num_elements * sizeof(TypeName),
117
118
  cudaMemcpyDeviceToDevice));
118
119
  }
119
120
 
121
+ /** \brief CUDA memcpy call to copy data from device ptr to device ptr
122
+ *
123
+ * @param device_ptr_src source device pointer
124
+ * @param device_ptr_dest destination device pointer
125
+ * @param num_elements amount of elements of size TypeName
126
+ */
127
+ template <typename TypeName>
128
+ inline void copyDeviceToDeviceAsync(TypeName *device_ptr_src,
129
+ TypeName *device_ptr_dest, IndType num_elements, cudaStream_t stream=0)
130
+ {
131
+ HANDLE_ERROR(cudaMemcpyAsync(device_ptr_dest, device_ptr_src,
132
+ num_elements * sizeof(TypeName),
133
+ cudaMemcpyDeviceToDevice, stream));
134
+ }
120
135
  /** \brief Copy CUDA memory from device to host
121
136
  *
122
137
  * @param device_ptr device pointer
@@ -107,6 +107,7 @@ class GpuNUFFTPythonOperator
107
107
  gpuNUFFT::GpuNUFFTOperatorFactory factory;
108
108
  gpuNUFFT::GpuNUFFTOperator *gpuNUFFTOp;
109
109
  int trajectory_length, n_coils, dimension;
110
+ float osr;
110
111
  bool has_sense_data;
111
112
  gpuNUFFT::Dimensions imgDims;
112
113
  // sensitivity maps
@@ -129,7 +130,7 @@ class GpuNUFFTPythonOperator
129
130
  public:
130
131
  GpuNUFFTPythonOperator(py::array_t<DType> kspace_loc, py::array_t<int> image_size, int num_coils,
131
132
  py::array_t<std::complex<DType>> sense_maps, py::array_t<DType> density_comp, int kernel_width=3,
132
- int sector_width=8, float osr=2, bool balance_workload=1)
133
+ int sector_width=8, float osr=2, bool balance_workload=1) : osr(osr)
133
134
  {
134
135
  // k-space coordinates
135
136
  py::buffer_info sample_loc = kspace_loc.request();
@@ -140,12 +141,11 @@ class GpuNUFFTPythonOperator
140
141
 
141
142
  // density compensation weights
142
143
  gpuNUFFT::Array<DType> density_compArray;
143
- //if(density_comp.has_value())
144
- //{
144
+ if(density_comp == Py_None)
145
+ {
145
146
  density_compArray = readNumpyArray(density_comp);
146
147
  density_compArray.dim.length = trajectory_length;
147
- // No need else as the init is by default with 0 length and density comp is not applied
148
- //}
148
+ }
149
149
 
150
150
  // image size
151
151
  py::buffer_info img_dim = image_size.request();
@@ -305,7 +305,6 @@ class GpuNUFFTPythonOperator
305
305
  allocate_pinned_memory(&densArray, n_samples * sizeof(CufftType));
306
306
  densArray.dim.length = n_samples;
307
307
 
308
- // TODO: Allocate directly on device and set with kernel.
309
308
  for (long int cnt = 0; cnt < n_samples; cnt++)
310
309
  {
311
310
  densArray.data[cnt].x = 1.0;
@@ -324,7 +323,7 @@ class GpuNUFFTPythonOperator
324
323
 
325
324
  gpuNUFFT::GpuArray<CufftType> image_gpu;
326
325
  image_gpu.dim = imgDims;
327
- allocateDeviceMem(&image_gpu.data, imgDims.count());
326
+ allocateDeviceMem(&image_gpu.data, image_gpu.dim.count());
328
327
 
329
328
  if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
330
329
  printf("error at adj thread synchronization a: %s\n",
@@ -41,6 +41,7 @@ __global__ void updateDensityCompKernel(DType2* density_data, DType2* estimation
41
41
  DType2 data_p = density_data[t];
42
42
  DType2 esti_p = estimation_data[t];
43
43
  data_p.x *= rsqrtf(esti_p.x * esti_p.x + esti_p.y * esti_p.y);
44
+ data_p.y = 0;
44
45
  density_data[t] = data_p;
45
46
  t = t + blockDim.x*gridDim.x;
46
47
  }
@@ -457,7 +457,7 @@ void gpuNUFFT::GpuNUFFTOperator::performGpuNUFFTAdj(
457
457
  if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
458
458
  fprintf(stderr, "error at adj thread synchronization 2: %s\n",
459
459
  cudaGetErrorString(cudaGetLastError()));
460
- if (gpuNUFFTOut == CONVOLUTION)
460
+ if (gpuNUFFTOut == CONVOLUTION || gpuNUFFTOut == DENSITY_ESTIMATION)
461
461
  {
462
462
  if (DEBUG)
463
463
  printf("stopping output after CONVOLUTION step\n");
@@ -939,10 +939,11 @@ void gpuNUFFT::GpuNUFFTOperator::performForwardGpuNUFFT(
939
939
  printf("Memory allocation: %.2f ms\n", stopTiming());
940
940
 
941
941
  int err;
942
-
942
+ cudaStream_t new_stream, old_stream;
943
943
  // iterate over coils and compute result
944
944
  for (int coil_it = 0; coil_it < n_coils; coil_it += n_coils_cc)
945
945
  {
946
+ cudaStreamCreate(&new_stream);
946
947
  unsigned long int data_coil_offset = (long int)coil_it * data_count;
947
948
  unsigned long int im_coil_offset = coil_it * (long int)imdata_count;
948
949
 
@@ -954,32 +955,52 @@ void gpuNUFFT::GpuNUFFTOperator::performForwardGpuNUFFT(
954
955
  // perform automatically "repeating" of input image in case
955
956
  // of existing sensitivity data
956
957
  for (int cnt = 0; cnt < n_coils_cc; cnt++)
957
- copyDeviceToDevice<DType2>(imgData_gpu.data,
958
- imdata_d + cnt * imdata_count, imdata_count);
958
+ copyDeviceToDeviceAsync<DType2>(imgData_gpu.data,
959
+ imdata_d + cnt * imdata_count, imdata_count, new_stream);
959
960
  else
960
- copyDeviceToDevice<DType2>(imgData_gpu.data + im_coil_offset, imdata_d,
961
- imdata_count * n_coils_cc);
961
+ copyDeviceToDeviceAsync<DType2>(imgData_gpu.data + im_coil_offset, imdata_d,
962
+ imdata_count * n_coils_cc, new_stream);
962
963
 
963
964
  // reset temp arrays
964
- cudaMemset(gdata_d, 0,
965
- sizeof(CufftType) * gi_host->grid_width_dim * n_coils_cc);
966
- cudaMemset(data_d, 0, sizeof(CufftType) * data_count * n_coils_cc);
965
+ cudaMemsetAsync(gdata_d, 0,
966
+ sizeof(CufftType) * gi_host->grid_width_dim * n_coils_cc, new_stream);
967
+ cudaMemsetAsync(data_d, 0, sizeof(CufftType) * data_count * n_coils_cc, new_stream);
967
968
 
968
- if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
969
+ if (DEBUG && (cudaStreamSynchronize(new_stream)!= cudaSuccess))
969
970
  printf("error at thread synchronization 1: %s\n",
970
971
  cudaGetErrorString(cudaGetLastError()));
971
972
 
972
973
  if (this->applySensData())
973
974
  {
974
- copyToDevice(this->sens.data + im_coil_offset, sens_d,
975
- imdata_count * n_coils_cc);
975
+ copyToDeviceAsync(this->sens.data + im_coil_offset, sens_d,
976
+ imdata_count * n_coils_cc, new_stream);
976
977
  performSensMul(imdata_d, sens_d, gi_host, false);
977
978
  }
978
979
 
980
+ if(gpuNUFFTOut == DENSITY_ESTIMATION)
981
+ {
982
+ // convolution and resampling to non-standard trajectory
983
+ forwardConvolution(data_d, crds_d, imdata_d, NULL, sectors_d,
984
+ sector_centers_d, gi_host);
985
+ if (DEBUG && (cudaStreamSynchronize(new_stream) != cudaSuccess))
986
+ printf("error at thread synchronization 7: %s\n",
987
+ cudaGetErrorString(cudaGetLastError()));
988
+
989
+ if (debugTiming)
990
+ printf("Forward Convolution: %.2f ms\n", stopTiming());
991
+ // write result in correct order back into output array
992
+ writeOrderedGPU(data_sorted_d, data_indices_d, data_d,
993
+ (int)this->kSpaceTraj.count(), n_coils_cc);
994
+ copyDeviceToDeviceAsync(data_sorted_d, data_d, data_count * n_coils_cc, new_stream);
995
+ if ((coil_it + n_coils_cc) < (n_coils))
996
+ continue;
997
+ freeTotalDeviceMemory(imdata_d, NULL);
998
+ this->freeDeviceMemory();
999
+ return;
1000
+ }
979
1001
  // apodization Correction
980
1002
  performForwardDeapodization(imdata_d, deapo_d, gi_host);
981
-
982
- if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
1003
+ if (DEBUG && (cudaStreamSynchronize(new_stream) != cudaSuccess))
983
1004
  printf("error at thread synchronization 2: %s\n",
984
1005
  cudaGetErrorString(cudaGetLastError()));
985
1006
  // resize by oversampling factor and zero pad
@@ -988,13 +1009,13 @@ void gpuNUFFT::GpuNUFFTOperator::performForwardGpuNUFFT(
988
1009
  if (debugTiming)
989
1010
  startTiming();
990
1011
 
991
- if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
1012
+ if (DEBUG && (cudaStreamSynchronize(new_stream) != cudaSuccess))
992
1013
  printf("error at thread synchronization 3: %s\n",
993
1014
  cudaGetErrorString(cudaGetLastError()));
994
1015
  // shift image to get correct zero frequency position
995
1016
  performFFTShift(gdata_d, INVERSE, getGridDims(), gi_host);
996
1017
 
997
- if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
1018
+ if (DEBUG && (cudaStreamSynchronize(new_stream) != cudaSuccess))
998
1019
  printf("error at thread synchronization 4: %s\n",
999
1020
  cudaGetErrorString(cudaGetLastError()));
1000
1021
  // eventually free imdata_d
@@ -1012,12 +1033,12 @@ void gpuNUFFT::GpuNUFFTOperator::performForwardGpuNUFFT(
1012
1033
  c++;
1013
1034
  }
1014
1035
 
1015
- if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
1036
+ if (DEBUG && (cudaStreamSynchronize(new_stream) != cudaSuccess))
1016
1037
  printf("error at thread synchronization 5: %s\n",
1017
1038
  cudaGetErrorString(cudaGetLastError()));
1018
1039
  performFFTShift(gdata_d, FORWARD, getGridDims(), gi_host);
1019
1040
 
1020
- if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
1041
+ if (DEBUG && (cudaStreamSynchronize(new_stream) != cudaSuccess))
1021
1042
  printf("error at thread synchronization 6: %s\n",
1022
1043
  cudaGetErrorString(cudaGetLastError()));
1023
1044
 
@@ -1030,7 +1051,7 @@ void gpuNUFFT::GpuNUFFTOperator::performForwardGpuNUFFT(
1030
1051
  // convolution and resampling to non-standard trajectory
1031
1052
  forwardConvolution(data_d, crds_d, gdata_d, NULL, sectors_d,
1032
1053
  sector_centers_d, gi_host);
1033
- if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
1054
+ if (DEBUG && (cudaStreamSynchronize(new_stream) != cudaSuccess))
1034
1055
  printf("error at thread synchronization 7: %s\n",
1035
1056
  cudaGetErrorString(cudaGetLastError()));
1036
1057
 
@@ -1038,15 +1059,20 @@ void gpuNUFFT::GpuNUFFTOperator::performForwardGpuNUFFT(
1038
1059
  printf("Forward Convolution: %.2f ms\n", stopTiming());
1039
1060
 
1040
1061
  performFFTScaling(data_d, gi_host->data_count, gi_host);
1041
- if (DEBUG && (cudaDeviceSynchronize() != cudaSuccess))
1062
+ if (DEBUG && (cudaStreamSynchronize(new_stream) != cudaSuccess))
1042
1063
  printf("error: at thread synchronization 8: %s\n",
1043
1064
  cudaGetErrorString(cudaGetLastError()));
1044
1065
 
1045
1066
  // write result in correct order back into output array
1046
1067
  writeOrderedGPU(data_sorted_d, data_indices_d, data_d,
1047
1068
  (int)this->kSpaceTraj.count(), n_coils_cc);
1048
-
1049
- copyDeviceToDevice(data_sorted_d, data_d, data_count * n_coils_cc);
1069
+ if(coil_it > 1)
1070
+ {
1071
+ cudaStreamSynchronize(old_stream);
1072
+ cudaStreamDestroy(old_stream);
1073
+ }
1074
+ copyDeviceToDeviceAsync(data_sorted_d, data_d, data_count * n_coils_cc, new_stream);
1075
+ old_stream = new_stream;
1050
1076
  } // iterate over coils
1051
1077
 
1052
1078
  freeTotalDeviceMemory(imdata_d, NULL);
@@ -1172,8 +1198,6 @@ void gpuNUFFT::GpuNUFFTOperator::performForwardGpuNUFFT(
1172
1198
  performSensMul(imdata_d, sens_d, gi_host, false);
1173
1199
  }
1174
1200
 
1175
- // apodization Correction
1176
- performForwardDeapodization(imdata_d, deapo_d, gi_host);
1177
1201
  if(gpuNUFFTOut == DENSITY_ESTIMATION)
1178
1202
  {
1179
1203
  forwardConvolution(data_d, crds_d, imdata_d, NULL, sectors_d,
@@ -1188,6 +1212,8 @@ void gpuNUFFT::GpuNUFFTOperator::performForwardGpuNUFFT(
1188
1212
  this->freeDeviceMemory();
1189
1213
  return;
1190
1214
  }
1215
+ // apodization Correction
1216
+ performForwardDeapodization(imdata_d, deapo_d, gi_host);
1191
1217
  if (DEBUG && (cudaThreadSynchronize() != cudaSuccess))
1192
1218
  printf("error at thread synchronization 2: %s\n",
1193
1219
  cudaGetErrorString(cudaGetLastError()));
@@ -1,5 +1,5 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gpuNUFFT
3
- Version: 0.7.1
3
+ Version: 0.7.3
4
4
  Summary: gpuNUFFT - An open source GPU Library for 3D Gridding and NUFFT
5
5
  License-File: LICENSE
@@ -1,5 +1,5 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gpuNUFFT
3
- Version: 0.7.1
3
+ Version: 0.7.3
4
4
  Summary: gpuNUFFT - An open source GPU Library for 3D Gridding and NUFFT
5
5
  License-File: LICENSE
@@ -103,7 +103,7 @@ class CMakeBuild(build_ext):
103
103
 
104
104
  setup(
105
105
  name="gpuNUFFT",
106
- version="0.7.1",
106
+ version="0.7.3",
107
107
  description="gpuNUFFT - An open source GPU Library for 3D Gridding and NUFFT",
108
108
  ext_modules=[
109
109
  CMakeExtension("gpuNUFFT", sourcedir=os.path.join("CUDA")),
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes