Cabana 0.8.0-dev
 
Loading...
Searching...
No Matches
Cabana_Grid_FastFourierTransform.hpp File Reference

Fast Fourier transforms. More...

#include <Cabana_Grid_Array.hpp>
#include <Cabana_Grid_Types.hpp>
#include <Kokkos_Core.hpp>
#include <Kokkos_Profiling_ScopedRegion.hpp>
#include <heffte_fft3d.h>
#include <array>
#include <memory>
#include <type_traits>
Include dependency graph for Cabana_Grid_FastFourierTransform.hpp:

Go to the source code of this file.

Classes

struct  Cabana::Grid::Experimental::FFTScaleFull
 Tag for full scaling of FFT. More...
 
struct  Cabana::Grid::Experimental::FFTScaleNone
 Tag for no scaling of FFT. More...
 
struct  Cabana::Grid::Experimental::FFTScaleSymmetric
 Tag for symmetric scaling of FFT. More...
 
struct  Cabana::Grid::Experimental::FFTBackendFFTW
 Tag specifying FFTW backend for FFT (host default). More...
 
struct  Cabana::Grid::Experimental::FFTBackendMKL
 Tag specifying MKL backend for FFT. More...
 
struct  Cabana::Grid::Experimental::is_matching_array< ArrayEntity, ArrayMesh, ArrayMemorySpace, ArrayScalar, Entity, Mesh, MemorySpace, Scalar, SFINAE >
 Matching Array static type checker. More...
 
struct  Cabana::Grid::Experimental::is_matching_array< ArrayEntity, ArrayMesh, ArrayMemorySpace, ArrayScalar, Entity, Mesh, MemorySpace, Scalar, typename std::enable_if< std::is_same< ArrayEntity, Entity >::value &&std::is_same< ArrayMesh, Mesh >::value &&std::is_same< ArrayMemorySpace, MemorySpace >::value >::type >
 Matching Array static type checker. More...
 
class  Cabana::Grid::Experimental::FastFourierTransformParams
 Parameters controlling details for fast Fourier transforms. More...
 
class  Cabana::Grid::Experimental::FastFourierTransform< EntityType, MeshType, Scalar, MemorySpace, Derived >
 2D/3D distributed fast Fourier transform base implementation. More...
 
class  Cabana::Grid::Experimental::HeffteFastFourierTransform< EntityType, MeshType, Scalar, MemorySpace, ExecSpace, BackendType >
 Interface to heFFTe fast Fourier transform library. More...
 

Namespaces

namespace  Cabana
 Core: particle data structures and algorithms.
 

Enumerations

enum class  Cabana::Grid::Experimental::FFTCommPattern : unsigned int { alltoallv = 0u , p2p = 1u , alltoall = 2u , p2p_plined = 3u }
 Choices of heFFTe MPI communication patterns.
 

Functions

template<class Scalar, class MemorySpace, class BackendType, class EntityType, class MeshType, class ExecSpace>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform (ExecSpace exec_space, const ArrayLayout< EntityType, MeshType > &layout, const FastFourierTransformParams &params)
 
template<class Scalar, class MemorySpace, class EntityType, class MeshType, class ExecSpace>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform (ExecSpace exec_space, const ArrayLayout< EntityType, MeshType > &layout, const FastFourierTransformParams &params)
 
template<class Scalar, class MemorySpace, class BackendType, class EntityType, class MeshType, class ExecSpace>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform (ExecSpace exec_space, const ArrayLayout< EntityType, MeshType > &layout)
 
template<class Scalar, class MemorySpace, class EntityType, class MeshType, class ExecSpace>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform (ExecSpace exec_space, const ArrayLayout< EntityType, MeshType > &layout)
 
template<class Scalar, class MemorySpace, class BackendType, class EntityType, class MeshType>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform (const ArrayLayout< EntityType, MeshType > &layout, const FastFourierTransformParams &params)
 
template<class Scalar, class MemorySpace, class EntityType, class MeshType>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform (const ArrayLayout< EntityType, MeshType > &layout, const FastFourierTransformParams &params)
 
template<class Scalar, class MemorySpace, class BackendType, class EntityType, class MeshType>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform (const ArrayLayout< EntityType, MeshType > &layout)
 
template<class Scalar, class MemorySpace, class EntityType, class MeshType>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform (const ArrayLayout< EntityType, MeshType > &layout)
 

Detailed Description

Fast Fourier transforms.

Function Documentation

◆ createHeffteFastFourierTransform() [1/8]

template<class Scalar, class MemorySpace, class BackendType, class EntityType, class MeshType>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform ( const ArrayLayout< EntityType, MeshType > & layout)

Creation function for heFFTe FFT with explicit FFT backend and default parameters.

Parameters
layoutFFT entity array

◆ createHeffteFastFourierTransform() [2/8]

template<class Scalar, class MemorySpace, class EntityType, class MeshType>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform ( const ArrayLayout< EntityType, MeshType > & layout)

Creation function for heFFTe FFT with default FFT backend and default parameters.

Parameters
layoutFFT entity array

◆ createHeffteFastFourierTransform() [3/8]

template<class Scalar, class MemorySpace, class BackendType, class EntityType, class MeshType>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform ( const ArrayLayout< EntityType, MeshType > & layout,
const FastFourierTransformParams & params )

Creation function for heFFTe FFT with explicit FFT backend.

Parameters
layoutFFT entity array
paramsFFT parameters

◆ createHeffteFastFourierTransform() [4/8]

template<class Scalar, class MemorySpace, class EntityType, class MeshType>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform ( const ArrayLayout< EntityType, MeshType > & layout,
const FastFourierTransformParams & params )

Creation function for heFFTe FFT with default FFT backend.

Parameters
layoutFFT entity array
paramsFFT parameters

◆ createHeffteFastFourierTransform() [5/8]

template<class Scalar, class MemorySpace, class BackendType, class EntityType, class MeshType, class ExecSpace>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform ( ExecSpace exec_space,
const ArrayLayout< EntityType, MeshType > & layout )

Creation function for heFFTe FFT with explicit FFT backend and default parameters.

Parameters
exec_spaceKokkos execution space
layoutFFT entity array

◆ createHeffteFastFourierTransform() [6/8]

template<class Scalar, class MemorySpace, class EntityType, class MeshType, class ExecSpace>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform ( ExecSpace exec_space,
const ArrayLayout< EntityType, MeshType > & layout )

Creation function for heFFTe FFT with default FFT backend and default parameters.

Parameters
exec_spaceKokkos execution space
layoutFFT entity array

◆ createHeffteFastFourierTransform() [7/8]

template<class Scalar, class MemorySpace, class BackendType, class EntityType, class MeshType, class ExecSpace>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform ( ExecSpace exec_space,
const ArrayLayout< EntityType, MeshType > & layout,
const FastFourierTransformParams & params )

Creation function for heFFTe FFT with explicit FFT backend.

Parameters
exec_spaceKokkos execution space
layoutFFT entity array
paramsFFT parameters

◆ createHeffteFastFourierTransform() [8/8]

template<class Scalar, class MemorySpace, class EntityType, class MeshType, class ExecSpace>
auto Cabana::Grid::Experimental::createHeffteFastFourierTransform ( ExecSpace exec_space,
const ArrayLayout< EntityType, MeshType > & layout,
const FastFourierTransformParams & params )

Creation function for heFFTe FFT with default FFT backend.

Parameters
exec_spaceKokkos execution space
layoutFFT entity array
paramsFFT parameters