Highly Efficient FFT for Exascale: HeFFTe v2.3
Backend common wrappers
Collaboration diagram for Backend common wrappers:

Classes

struct  heffte::tag::cpu
 Indicates the use of cpu backend and that all input/output data and arrays will be bound to the cpu. More...
 
struct  heffte::tag::gpu
 Indicates the use of gpu backend and that all input/output data and arrays will be bound to the gpu device. More...
 
struct  heffte::backend::data_manipulator< location_tag >
 Common data-transfer operations, must be specializes for each location (cpu/gpu). More...
 
struct  heffte::backend::data_manipulator< tag::cpu >
 Common data-transfer operations on the cpu. More...
 
struct  heffte::backend::is_enabled< tag >
 Allows to define whether a specific backend interface has been enabled. More...
 
struct  heffte::backend::buffer_traits< backend_tag, type >
 Defines the container for the temporary buffers. More...
 
struct  heffte::backend::uses_gpu< backend_tag, typename >
 Struct that specializes to true type if the location of the backend is on the gpu (false type otherwise). More...
 
struct  heffte::backend::uses_gpu< backend_tag, typename std::enable_if< std::is_same< typename buffer_traits< backend_tag >::location, tag::gpu >::value, void >::type >
 Specialization for the on-gpu case. More...
 
struct  heffte::backend::device_instance< backend_tag >
 Holds the auxiliary variables needed by each backend. More...
 
struct  heffte::backend::default_backend< location_tag >
 Defines inverse mapping from the location tag to a default backend tag. More...
 
struct  heffte::backend::uses_fft_types< backend_tag >
 Defines whether the backend accepts the standard FFT real-complex or complex-complex transform. More...
 
struct  heffte::backend::check_types< backend_tag, input, output, typename >
 Set to true/false type depending whether the types are compatible with the backend transform. More...
 
struct  heffte::backend::check_types< backend_tag, input, output, typename std::enable_if< uses_fft_types< backend_tag >::value and((std::is_same< input, float >::value and is_ccomplex< output >::value) or(std::is_same< input, double >::value and is_zcomplex< output >::value) or(is_ccomplex< input >::value and is_ccomplex< output >::value) or(is_zcomplex< input >::value and is_zcomplex< output >::value))>::type >
 Defines the types compatible for a standard FFT transform. More...
 
struct  heffte::backend::uses_fft_types< fftw_cos >
 Sets the cos() transform types. More...
 
struct  heffte::backend::uses_fft_types< fftw_sin >
 Sets the sin() transform types. More...
 
struct  heffte::backend::check_types< backend_tag, input, output, typename std::enable_if< not uses_fft_types< backend_tag >::value and((std::is_same< input, float >::value and std::is_same< output, float >::value) or(std::is_same< input, double >::value and std::is_same< output, double >::value))>::type >
 Defines the types compatible for a cos() transform. More...
 
class  heffte::executor_base
 Base class for all backend executors. More...
 
struct  heffte::one_dim_backend< typename >
 Indicates the structure that will be used by the fft backend. More...
 
struct  heffte::default_plan_options< typename >
 Defines a set of default plan options for a given backend. More...
 

Functions

template<typename backend_tag >
std::string heffte::backend::name ()
 Returns the human readable name of the backend.
 
template<>
std::string heffte::backend::name< tag::cpu > ()
 Indicates the name of the location tag.
 
template<>
std::string heffte::backend::name< tag::gpu > ()
 Indicates the name of the location tag.
 
template<typename scalar_type >
std::vector< scalar_type > heffte::make_buffer_container (void *, size_t size)
 Factory method to create new buffer container for the CPU backends.
 
template<typename backend_tag >
constexpr bool heffte::has_executor2d ()
 Defines whether the executor has a 2D version (slabs).
 
template<typename backend_tag >
constexpr bool heffte::has_executor3d ()
 Defines whether the executor has a 3D version (single rank).
 
template<typename index >
int heffte::fft1d_get_howmany (box3d< index > const box, int const dimension)
 Return the number of 1-D ffts contained in the box in the given dimension.
 
template<typename index >
int heffte::fft1d_get_stride (box3d< index > const box, int const dimension)
 Return the stride of the 1-D ffts contained in the box in the given dimension.
 

Detailed Description

Sub-module that encompasses all backend wrappers and meta data.