Highly Efficient FFT for Exascale: HeFFTe v2.3
|
Classes | |
struct | heffte::backend::is_enabled< onemkl > |
Indicate that the oneMKL backend has been enabled. More... | |
struct | heffte::backend::is_enabled< onemkl_cos > |
Indicate that the oneMKL backend has been enabled. More... | |
struct | heffte::backend::is_enabled< onemkl_sin > |
Indicate that the oneMKL backend has been enabled. More... | |
struct | heffte::backend::device_instance< tag::gpu > |
The CUDA backend uses a CUDA stream. More... | |
struct | heffte::backend::buffer_traits< onemkl > |
Defines the location type-tag and the oneAPI container. More... | |
struct | heffte::backend::buffer_traits< onemkl_cos > |
Defines the location type-tag and the oneAPI container. More... | |
struct | heffte::backend::buffer_traits< onemkl_sin > |
Defines the location type-tag and the oneAPI container. More... | |
class | heffte::onemkl_executor |
Wrapper around the oneMKL API. More... | |
class | heffte::onemkl_executor_r2c |
Wrapper to oneMKL API for real-to-complex transform with shortening of the data. More... | |
struct | heffte::one_dim_backend< backend::onemkl > |
Helper struct that defines the types and creates instances of one-dimensional executors. More... | |
struct | heffte::one_dim_backend< backend::onemkl_cos > |
Helper struct that defines the types and creates instances of one-dimensional executors. More... | |
struct | heffte::one_dim_backend< backend::onemkl_sin > |
Helper struct that defines the types and creates instances of one-dimensional executors. More... | |
struct | heffte::default_plan_options< backend::onemkl > |
Sets the default options for the oneMKL backend. More... | |
struct | heffte::default_plan_options< backend::onemkl_cos > |
Sets the default options for the oneMKL backend. More... | |
struct | heffte::default_plan_options< backend::onemkl_sin > |
Sets the default options for the oneMKL backend. More... | |
struct | heffte::backend::onemkl |
Type-tag for the oneMKL backend. More... | |
struct | heffte::backend::onemkl_cos |
Type-tag for the Cosine Transform using the oneMKL backend. More... | |
struct | heffte::backend::onemkl_sin |
Type-tag for the Sine Transform using the oneMKL backend. More... | |
Functions | |
template<typename precision_type , typename index > | |
void | heffte::oapi::convert (sycl::queue &stream, index num_entries, precision_type const source[], std::complex< precision_type > destination[]) |
Convert real numbers to complex when both are located on the GPU device. More... | |
template<typename precision_type , typename index > | |
void | heffte::oapi::convert (sycl::queue &stream, index num_entries, std::complex< precision_type > const source[], precision_type destination[]) |
Convert complex numbers to real when both are located on the GPU device. More... | |
template<typename scalar_type , typename index > | |
void | heffte::oapi::scale_data (sycl::queue &stream, index num_entries, scalar_type *data, double scale_factor) |
Scales real data (double or float) by the scaling factor. | |
template<typename scalar_type , typename index > | |
void | heffte::oapi::direct_pack (sycl::queue &stream, index nfast, index nmid, index nslow, index line_stride, index plane_stide, scalar_type const source[], scalar_type destination[]) |
Performs a direct-pack operation for data sitting on the GPU device. More... | |
template<typename scalar_type , typename index > | |
void | heffte::oapi::direct_unpack (sycl::queue &stream, index nfast, index nmid, index nslow, index line_stride, index plane_stide, scalar_type const source[], scalar_type destination[]) |
Performs a direct-unpack operation for data sitting on the GPU device. More... | |
template<typename scalar_type , typename index > | |
void | heffte::oapi::transpose_unpack (sycl::queue &stream, index nfast, index nmid, index nslow, index line_stride, index plane_stide, index buff_line_stride, index buff_plane_stride, int map0, int map1, int map2, scalar_type const source[], scalar_type destination[]) |
Performs a transpose-unpack operation for data sitting on the GPU device. More... | |
template<> | |
std::string | heffte::backend::name< onemkl > () |
Returns the human readable name of the oneMKL backend. | |
template<> | |
std::string | heffte::backend::name< onemkl_cos > () |
Returns the human readable name of the oneMKL backend. | |
template<> | |
std::string | heffte::backend::name< onemkl_sin > () |
Returns the human readable name of the oneMKL backend. | |
Variables | |
sycl::queue | heffte::oapi::internal_sycl_queue |
Default queue to use in case the user does not provide one. More... | |
Wrappers and template specializations related to the oneMKL backend. Requires CMake option:
In addition to the oneMKL wrappers, this also includes a series of kernels for packing/unpacking/scaling the data, as well as a simple container that wraps around SYCL arrays for RAII style of resource management.
void heffte::oapi::convert | ( | sycl::queue & | stream, |
index | num_entries, | ||
precision_type const | source[], | ||
std::complex< precision_type > | destination[] | ||
) |
Convert real numbers to complex when both are located on the GPU device.
Launches a SYCL/DPC++ kernel.
void heffte::oapi::convert | ( | sycl::queue & | stream, |
index | num_entries, | ||
std::complex< precision_type > const | source[], | ||
precision_type | destination[] | ||
) |
Convert complex numbers to real when both are located on the GPU device.
Launches a SYCL/DPC++ kernel.
void heffte::oapi::direct_pack | ( | sycl::queue & | stream, |
index | nfast, | ||
index | nmid, | ||
index | nslow, | ||
index | line_stride, | ||
index | plane_stide, | ||
scalar_type const | source[], | ||
scalar_type | destination[] | ||
) |
Performs a direct-pack operation for data sitting on the GPU device.
Launches a SYCL/DPC++ kernel.
void heffte::oapi::direct_unpack | ( | sycl::queue & | stream, |
index | nfast, | ||
index | nmid, | ||
index | nslow, | ||
index | line_stride, | ||
index | plane_stide, | ||
scalar_type const | source[], | ||
scalar_type | destination[] | ||
) |
Performs a direct-unpack operation for data sitting on the GPU device.
Launches a SYCL/DPC++ kernel.
void heffte::oapi::transpose_unpack | ( | sycl::queue & | stream, |
index | nfast, | ||
index | nmid, | ||
index | nslow, | ||
index | line_stride, | ||
index | plane_stide, | ||
index | buff_line_stride, | ||
index | buff_plane_stride, | ||
int | map0, | ||
int | map1, | ||
int | map2, | ||
scalar_type const | source[], | ||
scalar_type | destination[] | ||
) |
Performs a transpose-unpack operation for data sitting on the GPU device.
Launches a SYCL/DPC++ kernel.
|
extern |
Default queue to use in case the user does not provide one.
The SYCL/DPC++ standard does not provide a default queue, unlike CUDA and ROCm. For API consistency, heFFTe will use this queue which will be shard by all objects created by the library. However, it is strongly recommended that the user provide their own queue in the constructor of the heffte::fft3d and heffte::fft3d_r2c objects.