|
Highly Efficient FFT for Exascale: HeFFTe v2.3
|
Special case of the reshape that does not involve MPI communication but applies a transpose instead. More...
#include <heffte_reshape3d.h>
Public Member Functions | |
| reshape3d_transpose (typename backend::device_instance< location_tag >::stream_type q, pack_plan_3d< index > const cplan) | |
| Constructor using the provided unpack plan. | |
| void | apply (int batch_size, float const source[], float destination[], float workspace[]) const override final |
| Apply the reshape operations, single precision overload. | |
| void | apply (int batch_size, double const source[], double destination[], double workspace[]) const override final |
| Apply the reshape operations, double precision overload. | |
| void | apply (int batch_size, std::complex< float > const source[], std::complex< float > destination[], std::complex< float > workspace[]) const override final |
| Apply the reshape operations, single precision complex overload. | |
| void | apply (int batch_size, std::complex< double > const source[], std::complex< double > destination[], std::complex< double > workspace[]) const override final |
| Apply the reshape operations, double precision complex overload. | |
Public Member Functions inherited from heffte::reshape3d_base< index > | |
| reshape3d_base (index cinput_size, index coutput_size) | |
| Constructor that sets the input and output sizes. | |
| virtual | ~reshape3d_base ()=default |
| Default virtual destructor. | |
| index | size_intput () const |
| Returns the input size. | |
| index | size_output () const |
| Returns the output size. | |
| virtual size_t | size_workspace () const |
| Returns the workspace size. | |
Public Member Functions inherited from heffte::backend::device_instance< location_tag > | |
| device_instance (void *=nullptr) | |
| Empty constructor. | |
| virtual | ~device_instance ()=default |
| Default destructor. | |
| void * | stream () |
| Returns the nullptr. | |
| void * | stream () const |
| Returns the nullptr (const case). | |
| void | synchronize_device () const |
| Syncs the execution with the queue, no-op in the CPU case. | |
Additional Inherited Members | |
Public Types inherited from heffte::backend::device_instance< location_tag > | |
| using | stream_type = void * |
| The type for the internal stream, the cpu uses just a void pointer. | |
Protected Member Functions inherited from heffte::reshape3d_base< index > | |
| template<typename scalar_type > | |
| scalar_type * | cpu_send_buffer (size_t num_entries) const |
| Allocates and returns a CPU buffer when GPU-Aware communication has been disabled. | |
| template<typename scalar_type > | |
| scalar_type * | cpu_recv_buffer (size_t num_entries) const |
| Allocates and returns a CPU buffer when GPU-Aware communication has been disabled. | |
Protected Attributes inherited from heffte::reshape3d_base< index > | |
| index const | input_size |
| Stores the size of the input. | |
| index const | output_size |
| Stores the size of the output. | |
| std::vector< float > | send_unaware |
| Temp buffers for the gpu-unaware algorithms. | |
| std::vector< float > | recv_unaware |
| Temp buffers for the gpu-unaware algorithms. | |
Special case of the reshape that does not involve MPI communication but applies a transpose instead.
The operations is implemented as a single unpack operation using the transpose_packer with the same location tag.