Gromacs  2025-dev-20240710-afbd73d
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Classes | Public Member Functions
gmx::Gpu3dFft Class Reference

#include <gromacs/fft/gpu_3dfft.h>

Description

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  ImplCuFftMp
 A 3D FFT wrapper class for performing R2C/C2R transforms using cuFFTMp. More...
 
class  ImplHipFft
 A 3D FFT wrapper class for performing R2C/C2R transforms using hipFFT. More...
 
class  ImplHipVkFft
 A 3D FFT wrapper class for performing R2C/C2R transforms using hipFFT. More...
 
class  ImplOcl
 A 3D FFT wrapper class for performing R2C/C2R transforms using clFFT. More...
 
class  ImplOclVkfft
 A 3D FFT wrapper class for performing R2C/C2R transforms using VkFFT. More...
 
class  ImplSycl
 A 3D FFT wrapper class for performing R2C/C2R transforms using SYCL. Not yet implemented. More...
 
class  ImplSyclBbfft
 A 3D FFT wrapper class for performing R2C/C2R transforms using SYCL + double-batched FFT library (internally known as bbfft). 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...
 
class  ImplSyclVkfft
 A 3D FFT wrapper class for performing R2C/C2R transforms using VkFFT. More...
 

Public Member Functions

 Gpu3dFft (FftBackend backend, bool allocateRealGrid, 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...
 

Constructor & Destructor Documentation

gmx::Gpu3dFft::Gpu3dFft ( FftBackend  backend,
bool  allocateRealGrid,
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.

Parameters
[in]backendFFT backend to be instantiated
[in]allocateRealGridTrue if fft real-grid is to be allocated, false if pre-allocated
[in]commMPI communicator, used with distributed-FFT backends
[in]gridSizesInXForEachRankNumber of grid points used with each rank in X-dimension
[in]gridSizesInYForEachRankNumber of grid points used with each rank in Y-dimension
[in]nzGrid dimension in Z
[in]performOutOfPlaceFFTWhether the FFT will be performed out-of-place
[in]contextGPU context.
[in]pmeStreamGPU stream for PME.
[in,out]realGridSizeDimensions of the local real grid, out if allocateRealGrid=true
[in,out]realGridSizePaddedDimensions of the local real grid with padding, out if allocateRealGrid=true
[in,out]complexGridSizePaddedDimensions of the local complex grid with padding, out if allocateRealGrid=true
[in,out]realGridDevice buffer of floats for the local real grid, out if allocateRealGrid=true
[out]complexGridDevice buffer of complex floats for the local complex grid

Member Function Documentation

void gmx::Gpu3dFft::perform3dFft ( gmx_fft_direction  dir,
CommandEvent timingEvent 
)

Performs the FFT transform in given direction.

Parameters
[in]dirFFT transform direction specifier
[out]timingEventpointer to the timing event where timing data is recorded

The documentation for this class was generated from the following files: