Gromacs
2022.2
|
#include <gromacs/fft/gpu_3dfft.h>
A 3D FFT class for performing R2C/C2R transforms.
Classes | |
class | Impl |
Impl base class for all FFT backends. More... | |
class | ImplCuFft |
A 3D FFT wrapper class for performing R2C/C2R transforms using cuFFT. More... | |
class | ImplOcl |
A 3D FFT wrapper class for performing R2C/C2R transforms using clFFT. More... | |
class | ImplSycl |
A 3D FFT wrapper class for performing R2C/C2R transforms using SYCL. Not yet implemented. More... | |
class | ImplSyclMkl |
A 3D FFT wrapper class for performing R2C/C2R transforms using SYCL + MKL. More... | |
class | ImplSyclRocfft |
A 3D FFT wrapper class for performing R2C/C2R transforms using rocFFT for hipSYCL targetting ROCm devices. More... | |
Public Member Functions | |
Gpu3dFft (FftBackend backend, bool allocateGrids, MPI_Comm comm, ArrayRef< const int > gridSizesInXForEachRank, ArrayRef< const int > gridSizesInYForEachRank, int nz, bool performOutOfPlaceFFT, const DeviceContext &context, const DeviceStream &pmeStream, ivec realGridSize, ivec realGridSizePadded, ivec complexGridSizePadded, DeviceBuffer< float > *realGrid, DeviceBuffer< float > *complexGrid) | |
Construct 3D FFT object for given backend. More... | |
~Gpu3dFft () | |
Destroys the FFT plans. | |
void | perform3dFft (gmx_fft_direction dir, CommandEvent *timingEvent) |
Performs the FFT transform in given direction. More... | |
gmx::Gpu3dFft::Gpu3dFft | ( | FftBackend | backend, |
bool | allocateGrids, | ||
MPI_Comm | comm, | ||
ArrayRef< const int > | gridSizesInXForEachRank, | ||
ArrayRef< const int > | gridSizesInYForEachRank, | ||
int | nz, | ||
bool | performOutOfPlaceFFT, | ||
const DeviceContext & | context, | ||
const DeviceStream & | pmeStream, | ||
ivec | realGridSize, | ||
ivec | realGridSizePadded, | ||
ivec | complexGridSizePadded, | ||
DeviceBuffer< float > * | realGrid, | ||
DeviceBuffer< float > * | complexGrid | ||
) |
Construct 3D FFT object for given backend.
[in] | backend | FFT backend to be instantiated |
[in] | allocateGrids | True if fft grids are to be allocated, false if pre-allocated |
[in] | comm | MPI communicator, used with distributed-FFT backends |
[in] | gridSizesInXForEachRank | Number of grid points used with each rank in X-dimension |
[in] | gridSizesInYForEachRank | Number of grid points used with each rank in Y-dimension |
[in] | nz | Grid dimension in Z |
[in] | performOutOfPlaceFFT | Whether the FFT will be performed out-of-place |
[in] | context | GPU context. |
[in] | pmeStream | GPU stream for PME. |
[in,out] | realGridSize | Dimensions of the local real grid, out if allocateGrids=true |
[in,out] | realGridSizePadded | Dimensions of the local real grid with padding, out if allocateGrids=true |
[in,out] | complexGridSizePadded | Dimensions of the local complex grid with padding, out if allocateGrids=true |
[in,out] | realGrid | Device buffer of floats for the local real grid, out if allocateGrids=true |
[in,out] | complexGrid | Device buffer of complex floats for the local complex grid, out if allocateGrids=true |
void gmx::Gpu3dFft::perform3dFft | ( | gmx_fft_direction | dir, |
CommandEvent * | timingEvent | ||
) |
Performs the FFT transform in given direction.
[in] | dir | FFT transform direction specifier |
[out] | timingEvent | pointer to the timing event where timing data is recorded |