Xmipp  v3.23.11-Nereus
Public Member Functions | List of all members
RecFourierBufferDataGPU Struct Reference
Inheritance diagram for RecFourierBufferDataGPU:
Inheritance graph
[legend]
Collaboration diagram for RecFourierBufferDataGPU:
Collaboration graph
[legend]

Public Member Functions

void create (RecFourierBufferData *orig)
 
void destroy ()
 
__device__ float * getNthItem (float *array, int itemIndex)
 
void copyDataFrom (RecFourierBufferData *orig, int stream)
 
__device__ int getNoOfSpaces ()
 
- Public Member Functions inherited from RecFourierBufferData
 RecFourierBufferData (bool hasFFTs, bool hasCTFs, int fftSizeX, int fftSizeY, int paddedImgSize, int maxNoOfImages, int noOfSymmetries)
 
 ~RecFourierBufferData ()
 
int getPaddedImgSize ()
 
int getPaddedImgByteSize ()
 
int getFFTsByteSize ()
 
float * getNthItem (float *array, int itemIndex)
 
int getNoOfElements (float *array)
 
int getNoOfElements (RecFourierProjectionTraverseSpace *array)
 
int getMaxByteSize (float *array)
 
int getMaxByteSize (RecFourierProjectionTraverseSpace *array)
 
void invalidate ()
 

Additional Inherited Members

- Public Attributes inherited from RecFourierBufferData
float * FFTs
 
float * CTFs
 
float * modulators
 
float * paddedImages
 
RecFourierProjectionTraverseSpacespaces
 
int fftSizeX
 
int fftSizeY
 
int paddedImgSize
 
int noOfImages
 
int maxNoOfImages
 
int noOfSymmetries
 
bool hasFFTs
 
bool hasCTFs
 
- Protected Member Functions inherited from RecFourierBufferData
 RecFourierBufferData ()
 

Detailed Description

Structure for buffer data on GPU Adds some utility methods for copying data to GPU and device specific code. Variables are stored in the same memory space as holding object, but pointers point to the GPU memory

Definition at line 211 of file cuda_gpu_reconstruct_fourier.cpp.

Member Function Documentation

◆ copyDataFrom()

void RecFourierBufferDataGPU::copyDataFrom ( RecFourierBufferData orig,
int  stream 
)
inline

Method copies data from buffer. Asynchronous method

Definition at line 259 of file cuda_gpu_reconstruct_fourier.cpp.

259  {
260  copyMetadata(orig);
261  copy(orig->FFTs, FFTs, orig, stream);
262  copy(orig->CTFs, CTFs, orig, stream);
263  copy(orig->paddedImages, paddedImages, orig, stream);
264  copy(orig->modulators, modulators, orig, stream);
265  copy(orig->spaces, spaces, orig, stream);
266  }
RecFourierProjectionTraverseSpace * spaces

◆ create()

void RecFourierBufferDataGPU::create ( RecFourierBufferData orig)
inline

Definition at line 217 of file cuda_gpu_reconstruct_fourier.cpp.

217  {
218  copyMetadata(orig);
219  FFTs = CTFs = paddedImages = modulators = NULL;
220 
221  // allocate space at GPU
222  alloc(orig->FFTs, FFTs, orig); // FFT are always necessary
223  alloc(orig->spaces, spaces, orig);
224  if ( ! hasFFTs) {
225  alloc(orig->paddedImages, paddedImages, orig);
226  }
227  if (hasCTFs) {
228  alloc(orig->CTFs, CTFs, orig);
229  alloc(orig->modulators, modulators, orig);
230  }
231  }
RecFourierProjectionTraverseSpace * spaces

◆ destroy()

void RecFourierBufferDataGPU::destroy ( )
inline

Definition at line 233 of file cuda_gpu_reconstruct_fourier.cpp.

233  {
234  cudaFree(FFTs);
235  cudaFree(CTFs);
236  cudaFree(paddedImages);
237  cudaFree(modulators);
238  cudaFree(spaces);
239  gpuErrchk( cudaPeekAtLastError() );
240 
241  invalidate();
242  }
#define gpuErrchk(code)
Definition: cuda_asserts.h:31
RecFourierProjectionTraverseSpace * spaces

◆ getNoOfSpaces()

__device__ int RecFourierBufferDataGPU::getNoOfSpaces ( )
inline

Same as in parent struct, but implemented for device

Definition at line 272 of file cuda_gpu_reconstruct_fourier.cpp.

◆ getNthItem()

__device__ float* RecFourierBufferDataGPU::getNthItem ( float *  array,
int  itemIndex 
)
inline

Same as in parent struct, but implemented for device

Definition at line 248 of file cuda_gpu_reconstruct_fourier.cpp.

248  {
249  if (array == FFTs) return array + (fftSizeX * fftSizeY * itemIndex * 2); // *2 since it's complex
250  if (array == CTFs) return array + (fftSizeX * fftSizeY * itemIndex);
251  if (array == modulators) return array + (fftSizeX * fftSizeY * itemIndex);
252  if (array == paddedImages) return array + (paddedImgSize * paddedImgSize * itemIndex);
253  return NULL; // undefined
254  }

The documentation for this struct was generated from the following file: