This module defines abstract_transpose_handle type and its type bound procedures.
This handle is used to perform data transpositions between distributed pencils.
The actual implementation of the handle is deferred to the
create_private, execute, execute_end, destroy and get_async_active procedures.
Returns if async transpose is active
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_transpose_handle), | intent(in) | :: | self |
Abstract Transpose Handle |
Creates transpose handle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_transpose_handle), | intent(inout) | :: | self |
Abstract 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 |
Executes transpose handle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_transpose_handle), | intent(inout) | :: | self |
Abstract 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 |
Error code |
Finishes async transpose
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_transpose_handle), | intent(inout) | :: | self |
Abstract Transpose Handle |
||
| type(execute_args), | intent(inout) | :: | kwargs |
Additional arguments |
||
| integer(kind=int32), | intent(out) | :: | error_code |
Error code |
Destroys transpose handle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_transpose_handle), | intent(inout) | :: | self |
Abstract Transpose Handle |
Arguments for creating transpose handle
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(dtfft_platform_t), | public | :: | platform |
Platform type |
|||
| type(backend_helper), | public | :: | helper |
Backend helper |
|||
| type(dtfft_effort_t), | public | :: | effort |
Effort level for generating transpose kernels |
|||
| type(dtfft_backend_t), | public | :: | backend |
Backend type |
|||
| logical, | public | :: | force_effort |
Should effort be forced or not |
|||
| type(MPI_Datatype), | public | :: | base_type |
Base MPI Datatype |
|||
| integer(kind=int8), | public | :: | datatype_id |
Type of datatype to use |
|||
| integer(kind=int8), | public | :: | comm_id |
ID of communicator to use |
Arguments for executing transpose handle
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(dtfft_stream_t), | public | :: | stream |
Stream to execute on |
|||
| type(async_exec_t), | public | :: | exec_type |
Async execution type |
|||
| real(kind=real32), | public, | pointer | :: | p1(:) |
|
||
| real(kind=real32), | public, | pointer | :: | p2(:) |
|
Abstract transpose handle type
| procedure, public, non_overridable, pass(self) :: create | ../../ Creates transpose handle |
| procedure, public, pass(self) :: get_aux_size | ../../ Returns number of bytes required by aux buffer |
| procedure(create_interface), public, deferred :: create_private | ../../ Creates transpose handle |
| procedure(execute_interface), public, deferred :: execute | ../../ Executes transpose handle |
| procedure(execute_end_interface), public, deferred :: execute_end | ../../ Finishes async transpose |
| procedure(destroy_interface), public, deferred :: destroy | ../../ Destroys transpose handle |
| procedure(get_async_active_interface), public, deferred :: get_async_active | ../../ Returns if async transpose is active |
Returns number of bytes required by aux buffer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_transpose_handle), | intent(in) | :: | self |
Abstract 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 |