This module defines abstract_reshape_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 reshape is active
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_reshape_handle), | intent(in) | :: | self |
Abstract reshape Handle |
Creates reshape handle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_reshape_handle), | intent(inout) | :: | self |
Abstract reshape handle |
||
| type(MPI_Comm), | intent(in) | :: | comm |
MPI Communicator |
||
| type(pencil), | intent(in) | :: | send |
Send pencil |
||
| type(pencil), | intent(in) | :: | recv |
Recv pencil |
||
| type(create_args), | intent(in) | :: | kwargs |
Additional arguments |
Executes reshape handle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_reshape_handle), | intent(inout) | :: | self |
Abstract reshape 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 reshape
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_reshape_handle), | intent(inout) | :: | self |
Abstract reshape Handle |
||
| type(execute_args), | intent(inout) | :: | kwargs |
Additional arguments |
||
| integer(kind=int32), | intent(out) | :: | error_code |
Error code |
Destroys reshape handle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_reshape_handle), | intent(inout) | :: | self |
Abstract reshape 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 |
|||
| integer(kind=int64), | public | :: | base_storage |
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(:) |
|
||
| real(kind=real32), | public, | pointer | :: | p3(:) |
|
Abstract reshape handle type
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | public | :: | is_transpose |
Is this a transpose operation |
| procedure, public, non_overridable, pass(self) :: create | ../../ Creates reshape handle |
| procedure, public, pass(self) :: get_aux_bytes | ../../ Returns number of bytes required by aux buffer |
| procedure(create_interface), public, deferred :: create_private | ../../ Creates reshape handle |
| procedure(execute_interface), public, deferred :: execute | ../../ Executes reshape handle |
| procedure(execute_end_interface), public, deferred :: execute_end | ../../ Finishes async reshape |
| procedure(destroy_interface), public, deferred :: destroy | ../../ Destroys reshape handle |
| procedure(get_async_active_interface), public, deferred :: get_async_active | ../../ Returns if async reshape is active |
This type is a container for allocatable transpose handles
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_reshape_handle), | public, | allocatable | :: | p |
Transpose handle |
Returns number of bytes required by aux buffer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_reshape_handle), | intent(in) | :: | self |
Abstract reshape Handle |
Creates reshape handle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_reshape_handle), | intent(inout) | :: | self |
Abstract reshape handle |
||
| type(pencil), | intent(in) | :: | send |
Send pencil |
||
| type(pencil), | intent(in) | :: | recv |
Recv pencil |
||
| type(create_args), | intent(inout) | :: | kwargs |
Additional arguments |