Highly Efficient FFT for Exascale: HeFFTe v2.3
heffte::logic_plan3d< index > Struct Template Reference

The logic plan incorporates the order and types of operations in a transform. More...

#include <heffte_plan_logic.h>

Public Attributes

std::vector< box3d< index > > in_shape [4]
 Holds the input shapes for the 4 forward reshapes (backwards reverses in and out).
 
std::vector< box3d< index > > out_shape [4]
 Holds the output shapes for the 4 forward reshapes (backwards reverses in and out).
 
std::array< int, 3 > fft_direction
 Direction of the 1-D FFT transforms.
 
long long index_count
 The total number of indexes in all directions.
 
plan_options const options
 Extra options used in the plan creation.
 
int const mpi_rank
 MPI rank used in the plan creation.
 

Detailed Description

template<typename index>
struct heffte::logic_plan3d< index >

The logic plan incorporates the order and types of operations in a transform.

The logic_plan is used to separate the logic of the order of basic operations (reshape or fft execute) from the constructor of the fft3d and fft3d_r2c classes. In this manner, detection of pencils vs. brick distribution of the data and/or making decisions regarding the transposition of indexing can be done in sufficiently robust and complex logic without clutter of the main classes or unnecessary repetition of code.

Node that a reshape operation i will be performed only if in_shape[i] and out_shape[i] are different.

Specifically:

  • in_shape[0] is the set of input boxes
  • out_shape[0] is the geometry to be used for the fist 1-D FFT operation which will happen in fft_direction[0]
  • in_shape[1] is either out_shape[0] or, in the r2c case, the boxes with reduced dimension
  • in_shape[i] -> out_shape[i] for i = 1, 2, will hold the intermediate shapes
  • in_shape[i] may be equal to out_shape[i] for any i = 0, 1, 2, 3
  • 1-D FFT transforms will be applied to out_shape[1] and out_shape[2] in directions fft_direction[0] and fft_direction[1]
  • out_shape[3] is the set of output boxes
  • index_count is the produce of all indexes, used in scaling
  • options will hold a copy of the set of options used in the construction

The documentation for this struct was generated from the following file: