2 #ifndef CUDA_XMIPP_UTILS_H 3 #define CUDA_XMIPP_UTILS_H 12 void gpuMalloc(
void** d_data,
size_t Nbytes);
14 void cpuMalloc(
void** h_data,
size_t Nbytes);
32 T*
loadToGPU(
const T* data,
size_t items);
92 #define CONVERT2DIM3(d) (dim3((d).x,(d).y,(d).z)) 99 size_t Xdim, Ydim, Zdim, Ndim, yxdim,
zyxdim, nzyxdim;
105 Xdim=Ydim=Zdim=Ndim=yxdim=zyxdim=nzyxdim=0;
112 Xdim=Ydim=Zdim=Ndim=yxdim=zyxdim=nzyxdim=0;
115 resize(myStream,_Ndim, _Xdim, _Ydim, _Zdim);
118 template<
typename T1>
125 void resize(
myStreamHandle &myStream,
size_t _Ndim,
size_t _Xdim=3,
size_t _Ydim=3,
size_t _Zdim=1);
129 return d_data==NULL && h_data==NULL;
161 lastMatrix.
resize(myStream, Ndim, 3, 3, 1);
184 size_t Xdim, Ydim, Zdim, Ndim, yxdim,
zyxdim, nzyxdim;
189 Xdim=Ydim=Zdim=Ndim=yxdim=zyxdim=nzyxdim=0;
195 Xdim=Ydim=Zdim=Ndim=yxdim=zyxdim=nzyxdim=0;
197 resize(_Xdim, _Ydim, _Zdim, _Ndim);
202 setDims(_Xdim, _Ydim, _Zdim, _Ndim);
206 template<
typename T1>
213 void resize(
size_t _Xdim,
size_t _Ydim=1,
size_t _Zdim=1,
size_t _Ndim=1);
217 return d_data==
nullptr;
222 if (d_data!=
nullptr){
226 Xdim=Ydim=Zdim=Ndim=yxdim=zyxdim=nzyxdim=0;
263 gpuArray.
resize(Xdim,Ydim,Zdim,Ndim);
271 gpuArray.
resize(Xdim,Ydim,Zdim,Ndim);
290 template <
typename T1>
294 template <
typename T1>
301 template <
typename T1>
306 void calculateMax(
float *max_values,
float *posX,
float *posY,
int fixPadding);
310 void setDims(
size_t _Xdim,
size_t _Ydim=1,
size_t _Zdim=1,
size_t _Ndim=1) {
315 yxdim=(size_t)_Ydim*_Xdim;
317 nzyxdim=zyxdim*_Ndim;
void resize(const GpuMultidimArrayAtGpu< T1 > &array)
void gpuFree(void *d_data)
T * loadToGPU(const T *data, size_t items)
void gpuCopyFromGPUToGPU(void *d_dataFrom, void *d_dataTo, size_t Nbytes)
void mycufftDestroy(void *ptr)
void fillImageToGpuStream(T *data, myStreamHandle &myStream, int n=0)
void copyGpuToGpu(GpuMultidimArrayAtGpu< T > &gpuArray)
GpuMultidimArrayAtGpu(size_t _Xdim, size_t _Ydim, size_t _Zdim, size_t _Ndim, T *deviceData)
void gpuCopyFromGPUToGPUStream(void *d_dataFrom, void *d_dataTo, size_t Nbytes, myStreamHandle &myStream)
void cpuMalloc(void **h_data, size_t Nbytes)
void myStreamCreate(myStreamHandle &myStream)
void myStreamDestroy(void *ptr)
void cuda_check_gpu_memory(float *data)
void calculateGridSize(const XmippDim3 &blockSize, XmippDim3 &gridSize) const
void gpuCopyFromGPUToCPU(void *d_data, void *data, size_t Nbytes)
void gpuCopyFromCPUToGPUStream(void *data, void *d_data, size_t Nbytes, myStreamHandle &myStream)
void cpuFree(void *h_data)
GpuMultidimArrayAtGpu(size_t _Xdim, size_t _Ydim=1, size_t _Zdim=1, size_t _Ndim=1)
void gpuCopyFromCPUToGPU(void *data, void *d_data, size_t Nbytes)
void calculateGridSizeVectorized(const XmippDim3 &blockSize, XmippDim3 &gridSize) const
void gpuCopyFromGPUToCPUStream(void *d_data, void *data, size_t Nbytes, myStreamHandle &myStream)
void copyToGpuStream(T *data, myStreamHandle &myStream)
XmippDim3(size_t _x, size_t _y, size_t _z)
void fillImageToGpu(T *data, size_t n=0)
void setTranslationMatrix(float *d_data, float *posX, float *posY, int Ndim, myStreamHandle &myStream)
void cuda_check_gpu_properties(int *maxGridSize)
void setRotationMatrix(float *d_data, float *ang, int Ndim, myStreamHandle &myStream)
void initializeIdentity(float *d_data, float *h_data, int Ndim, myStreamHandle &myStream)
void copyGpuToGpuStream(GpuMultidimArrayAtGpu< T > &gpuArray, myStreamHandle &myStream)
int gridFromBlock(int tasks, int Nthreads)
void gpuMalloc(void **d_data, size_t Nbytes)