Tranpose backend that uses MPI_Ialltoall(w) with custom MPI datatypes
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(MPI_Comm), | private | :: | comm |
1d communicator |
|||
| logical, | private | :: | is_even | = | .false. |
Is decomposition even |
|
| logical, | private | :: | is_active | = | .false. |
Is async transposition active |
|
| type(handle_t), | private | :: | send |
Handle to send data |
|||
| type(handle_t), | private | :: | recv |
Handle to recieve data |
|||
| type(MPI_Request), | private, | allocatable | :: | requests(:) |
Requests for communication |
||
| integer(kind=int32), | private | :: | n_requests |
Actual number of requests, can be less than size(requests) |
|||
| logical, | private | :: | is_request_created | = | .false. |
Is request created |
Creates transpose handle
Creates transpose handle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_transpose_handle), | intent(inout) | :: | self |
Abstract transpose handle |
||
| type(pencil), | intent(in) | :: | send |
Send pencil |
||
| type(pencil), | intent(in) | :: | recv |
Recv pencil |
||
| integer(kind=int64), | intent(in) | :: | base_storage |
Base storage size |
||
| type(create_args), | intent(inout) | :: | kwargs |
Additional arguments |
Returns number of bytes required by aux buffer
Returns number of bytes required by aux buffer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_transpose_handle), | intent(in) | :: | self |
Abstract Transpose Handle |
Initializes class
Creates transpose_handle_datatype class
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(transpose_handle_datatype), | intent(inout) | :: | self |
Transpose handle |
||
| type(MPI_Comm), | intent(in) | :: | comm |
MPI Communicator |
||
| type(pencil), | intent(in) | :: | send |
Send pencil |
||
| type(pencil), | intent(in) | :: | recv |
Recv pencil |
||
| type(dtfft_transpose_t), | intent(in) | :: | transpose_type |
Type of transpose to create |
||
| integer(kind=int64), | intent(in) | :: | base_storage |
Base storage |
||
| type(create_args), | intent(in) | :: | kwargs |
Additional arguments |
Performs MPI_Ialltoall(w)
Executes transposition
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(transpose_handle_datatype), | intent(inout) | :: | self |
Transpose handle |
||
| real(kind=real32), | intent(inout) | :: | in(:) |
Send pointer |
||
| real(kind=real32), | intent(inout) | :: | out(:) |
Recv pointer |
||
| type(execute_args), | intent(inout) | :: | kwargs |
Additional arguments |
||
| integer(kind=int32), | intent(out) | :: | error_code |
Result of execution |
Waits for MPI_Ialltoall(w) to complete
Ends execution of transposition
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(transpose_handle_datatype), | intent(inout) | :: | self |
Transpose handle |
||
| type(execute_args), | intent(inout) | :: | kwargs |
Additional arguments |
||
| integer(kind=int32), | intent(out) | :: | error_code |
Error code |
Destroys class
Destroys transpose_handle_datatype class
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(transpose_handle_datatype), | intent(inout) | :: | self |
Transpose handle |
Returns .true. if async transposition is active
Returns if async transpose is active
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(transpose_handle_datatype), | intent(in) | :: | self |
Transpose handle |