This module describes Abstraction for all Tranpose plans: abstract_transpose_plan
Creates transposition plans
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_transpose_plan), | intent(inout) | :: | self |
Transposition class |
||
integer(kind=int32), | intent(in) | :: | dims(:) |
Global sizes of the transform requested |
||
integer(kind=int32), | intent(in) | :: | transposed_dims(:,:) |
Transposed sizes of the transform requested |
||
type(MPI_Comm), | intent(in) | :: | base_comm |
Base MPI communicator |
||
integer(kind=int32), | intent(in) | :: | comm_dims(:) |
Dims in cartesian communicator |
||
type(dtfft_effort_t), | intent(in) | :: | effort |
|
||
type(MPI_Datatype), | intent(in) | :: | base_dtype |
Base MPI_Datatype |
||
integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
||
logical, | intent(in) | :: | is_custom_cart_comm |
Custom cartesian communicator provided by user |
||
type(MPI_Comm), | intent(out) | :: | cart_comm |
Cartesian communicator |
||
type(MPI_Comm), | intent(out) | :: | comms(:) |
Array of 1d communicators |
||
type(pencil), | intent(out) | :: | pencils(:) |
Data distributing meta |
Error code
Executes single transposition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_transpose_plan), | intent(inout) | :: | self |
Transposition class |
||
real(kind=real32), | intent(inout) | :: | in(:) |
Incoming buffer |
||
real(kind=real32), | intent(inout) | :: | out(:) |
Resulting buffer |
||
type(dtfft_transpose_t), | intent(in) | :: | transpose_type |
Type of transpose |
Destroys transposition plans
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_transpose_plan), | intent(inout) | :: | self |
Transposition class |
The most Abstract Transpose Plan
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(dtfft_backend_t), | public | :: | backend | = | DTFFT_BACKEND_MPI_DATATYPE |
GPU backend |
|
type(backend_helper), | public | :: | helper |
Backend helper |
|||
logical, | public | :: | is_z_slab |
Z-slab optimization flag (for 3D transforms) |
|||
integer(kind=int64), | public | :: | min_buffer_size |
Minimal buffer size for transposition |
procedure, public, pass(self) :: create | ../../ Create transposition plan |
procedure, public, pass(self) :: execute | ../../ Executes transposition |
procedure(create_interface), public, deferred, pass(self) :: create_private | ../../ Creates overriding class |
procedure(execute_interface), public, deferred, pass(self) :: execute_private | ../../ Executes overriding class |
procedure(destroy_interface), public, deferred, pass(self) :: destroy | ../../ Destroys overriding class |
procedure, public, non_overridable, pass(self) :: get_backend | ../../ Returns backend id |
procedure, public, non_overridable, pass(self) :: mem_alloc | ../../ Allocates memory based on selected backend |
procedure, public, non_overridable, pass(self) :: mem_free | ../../ Frees memory allocated with mem_alloc |
Creates transposition plans
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_transpose_plan), | intent(inout) | :: | self |
Transposition class |
||
integer(kind=int32), | intent(in) | :: | dims(:) |
Global sizes of the transform requested |
||
type(MPI_Comm), | intent(in) | :: | base_comm_ |
Base communicator |
||
type(dtfft_effort_t), | intent(in) | :: | effort |
|
||
type(MPI_Datatype), | intent(in) | :: | base_dtype |
Base MPI_Datatype |
||
integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
||
type(MPI_Comm), | intent(out) | :: | cart_comm |
Cartesian communicator |
||
type(MPI_Comm), | intent(out) | :: | comms(:) |
Array of 1d communicators |
||
type(pencil), | intent(out) | :: | pencils(:) |
Data distributing meta |
Error code
Returns plan GPU backend
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_transpose_plan), | intent(in) | :: | self |
Transposition class |
Allocates memory based on backend
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(backend_helper), | intent(inout) | :: | helper |
Backend helper |
||
type(dtfft_backend_t), | intent(in) | :: | backend |
GPU backend |
||
type(MPI_Comm), | intent(in) | :: | comm |
MPI communicator |
||
integer(kind=int64), | intent(in) | :: | alloc_bytes |
Number of bytes to allocate |
||
type(c_ptr), | intent(out) | :: | ptr |
Pointer to the allocated memory |
||
integer(kind=int32), | intent(out) | :: | error_code |
Error code |
Frees memory based on backend
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(backend_helper), | intent(inout) | :: | helper |
Backend helper |
||
type(dtfft_backend_t), | intent(in) | :: | backend |
GPU backend |
||
type(c_ptr), | intent(in) | :: | ptr |
Pointer to the memory to free |
||
integer(kind=int32), | intent(out) | :: | error_code |
Error code |
Creates cartesian communicator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MPI_Comm), | intent(in) | :: | old_comm |
Communicator to create cartesian from |
||
integer(kind=int32), | intent(in) | :: | comm_dims(:) |
Dims in cartesian communicator |
||
type(MPI_Comm), | intent(out) | :: | comm |
Cartesian communicator |
||
type(MPI_Comm), | intent(out) | :: | local_comms(:) |
1d communicators in cartesian communicator |
Executes single transposition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_transpose_plan), | intent(inout) | :: | self |
Transposition class |
||
type(c_ptr), | intent(in) | :: | in |
Incoming pointer |
||
type(c_ptr), | intent(in) | :: | out |
Result pointer |
||
type(dtfft_transpose_t), | intent(in) | :: | transpose_type |
Type of transpose |
Allocates memory based on selected backend
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_transpose_plan), | intent(inout) | :: | self |
Transposition class |
||
type(MPI_Comm), | intent(in) | :: | comm |
MPI communicator |
||
integer(kind=int64), | intent(in) | :: | alloc_bytes |
Number of bytes to allocate |
||
type(c_ptr), | intent(out) | :: | ptr |
Pointer to the allocated memory |
||
integer(kind=int32), | intent(out) | :: | error_code |
Error code |
Frees memory allocated with mem_alloc
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_transpose_plan), | intent(inout) | :: | self |
Transposition class |
||
type(c_ptr), | intent(in) | :: | ptr |
Pointer to the memory to free |
||
integer(kind=int32), | intent(out) | :: | error_code |
Error code |