Routines, row decomposition, data structures and communication for the 3D-FFT.
More...
|
template<typename T > |
static void | fft_sendrecv (T const *const sendbuf, int scount, int dest, T *const recvbuf, int rcount, int source, boost::mpi::communicator const &comm, int tag) |
|
std::optional< std::vector< int > > | fft::find_comm_groups (Utils::Vector3i const &grid1, Utils::Vector3i const &grid2, std::span< int const > node_list1, std::span< int > node_list2, std::span< int > pos, std::span< int > my_pos, int rank) |
| This ugly function does the bookkeeping: which nodes have to communicate to each other, when you change the node grid.
|
|
int | fft::anonymous_namespace{fft.cpp}::calc_local_mesh (const int *n_pos, const int *n_grid, const int *mesh, const double *mesh_off, int *loc_mesh, int *start) |
| Calculate the local fft mesh.
|
|
int | fft::anonymous_namespace{fft.cpp}::calc_send_block (const int *pos1, const int *grid1, const int *pos2, const int *grid2, const int *mesh, const double *mesh_off, int *block) |
| Calculate a send (or recv.) block for grid communication during a decomposition change.
|
|
template<typename FloatType > |
void | fft::anonymous_namespace{fft.cpp}::pack_block_permute1 (FloatType const *const in, FloatType *const out, const int *start, const int *size, const int *dim, int element) |
| Pack a block with dimensions size[0] * size[1] * size[2] starting at start of an input 3D-grid with dimension dim into an output 3D-grid with dimensions size[2] * size[0] * size[1] with a simultaneous one-fold permutation of the indices.
|
|
template<typename FloatType > |
void | fft::anonymous_namespace{fft.cpp}::pack_block_permute2 (FloatType const *const in, FloatType *const out, const int *start, const int *size, const int *dim, int element) |
| Pack a block with dimensions size[0] * size[1] * size[2] starting at start of an input 3D-grid with dimension dim into an output 3D-grid with dimensions size[2] * size[0] * size[1] with a simultaneous two-fold permutation of the indices.
|
|
int | fft::map_3don2d_grid (int const g3d[3], int g2d[3]) |
| Calculate 'best' mapping between a 2D and 3D grid.
|
|
void | fft::calc_2d_grid (int n, int grid[3]) |
| Calculate most square 2D grid.
|
|
Routines, row decomposition, data structures and communication for the 3D-FFT.
Definition in file fft.cpp.