A class describing an operator for converting from/to different MPI layouts using AlltoAll.
More...
|
using | idx_range_type1 = typename Layout1::discrete_domain_type |
| The type of the index range of the first MPI layout.
|
|
using | idx_range_type2 = typename Layout2::discrete_domain_type |
| The type of the index range of the second MPI layout.
|
|
using | distributed_idx_range_type1 = typename Layout1::distributed_sub_idx_range |
| The type of the index range of the first MPI layout.
|
|
using | distributed_idx_range_type2 = typename Layout2::distributed_sub_idx_range |
| The type of the index range of the second MPI layout.
|
|
using | idx_range_type1 = typename Layout1::discrete_domain_type |
| The type of the index range of the first MPI layout.
|
|
using | idx_range_type2 = typename Layout2::discrete_domain_type |
| The type of the index range of the second MPI layout.
|
|
|
template<class IdxRange > |
| MPITransposeAllToAll (IdxRange global_idx_range, MPI_Comm comm) |
| A constructor for the transpose operator.
|
|
template<class Layout > |
auto | get_local_idx_range () |
| Getter for the local index range.
|
|
template<class ElementType , class InIdxRange , class IdxRangeOut , class MemSpace , class ExecSpace > |
void | operator() (ExecSpace const &execution_space, Field< ElementType, IdxRangeOut, MemSpace > recv_field, ConstField< ElementType, InIdxRange, MemSpace > send_field) |
| An operator which transposes from one layout to another.
|
|
template<class OutLayout , class ElementType , class MemSpace , class ExecSpace , class InIdxRange > |
void | transpose_to (ExecSpace const &execution_space, Field< ElementType, typename OutLayout::discrete_domain_type, MemSpace > recv_field, ConstField< ElementType, InIdxRange, MemSpace > send_field) |
| An operator which transposes from one layout to another.
|
|
| IMPITranspose (MPI_Comm comm) |
| A constructor for the class.
|
|
template<class Layout1, class Layout2>
class MPITransposeAllToAll< Layout1, Layout2 >
A class describing an operator for converting from/to different MPI layouts using AlltoAll.
This class implements a basic AlltoAll operator and currently only works with a basic MPIBlockLayout.
- Template Parameters
-
Layout1 | One of the MPI layouts. |
Layout2 | The other MPI layouts. |
template<class Layout1 , class Layout2 >
template<class ElementType , class InIdxRange , class IdxRangeOut , class MemSpace , class ExecSpace >
void MPITransposeAllToAll< Layout1, Layout2 >::operator() |
( |
ExecSpace const & |
execution_space, |
|
|
Field< ElementType, IdxRangeOut, MemSpace > |
recv_field, |
|
|
ConstField< ElementType, InIdxRange, MemSpace > |
send_field |
|
) |
| |
|
inline |
An operator which transposes from one layout to another.
If the dimensions are ordered differently in the index ranges of the two layouts then this function can be used. If the index ranges have the same type then the transpose_to function must be used to disambiguate.
- Parameters
-
[in] | execution_space | The execution space (Host/Device) where the code will run. |
[out] | recv_field | The chunk which will describe the data in the new layout. This data is gathered from the MPI processes. |
[in] | send_field | The chunk describing the data in the current layout. This data will be scattered to other MPI processes. |
template<class Layout1 , class Layout2 >
template<class OutLayout , class ElementType , class MemSpace , class ExecSpace , class InIdxRange >
void MPITransposeAllToAll< Layout1, Layout2 >::transpose_to |
( |
ExecSpace const & |
execution_space, |
|
|
Field< ElementType, typename OutLayout::discrete_domain_type, MemSpace > |
recv_field, |
|
|
ConstField< ElementType, InIdxRange, MemSpace > |
send_field |
|
) |
| |
|
inline |
An operator which transposes from one layout to another.
If the dimensions are ordered differently in the index ranges of the two layouts then this function can be used. If the index ranges have the same type then the transpose_to function must be used to disambiguate.
- Template Parameters
-
OutLayout | The layout that the data should be transposed to. |
- Parameters
-
[in] | execution_space | The execution space (Host/Device) where the code will run. |
[out] | recv_field | The chunk which will describe the data in the new layout. This data is gathered from the MPI processes. |
[in] | send_field | The chunk describing the data in the current layout. This data will be scattered to other MPI processes. |