Transposition class
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(MPI_Comm), | private | :: | comm |
1d communicator |
|||
logical, | private | :: | is_even |
Is decomposition even |
|||
type(handle_t), | private | :: | send |
Handle to send data |
|||
type(handle_t), | private | :: | recv |
Handle to recieve data |
|||
type(MPI_Request), | private | :: | request |
Request for persistent communication |
|||
logical, | private | :: | is_request_created |
Is request created |
Initializes class
Creates transpose_handle_host
class
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_host), | intent(inout) | :: | self |
Transposition class |
||
type(MPI_Comm), | intent(in) | :: | comm |
1d communicator |
||
class(pencil), | intent(in) | :: | send |
Information about send buffer |
||
class(pencil), | intent(in) | :: | recv |
Information about recv buffer |
||
type(MPI_Datatype), | intent(in) | :: | base_type |
Base MPI Datatype |
||
integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
||
integer(kind=int8), | intent(in) | :: | datatype_id |
Type of datatype to use |
Performs MPI_Alltoall(w)
Executes transposition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_host), | intent(inout) | :: | self |
Transposition class |
||
real(kind=real32), | intent(in) | :: | send(:) |
Incoming buffer |
||
real(kind=real32), | intent(inout) | :: | recv(:) |
Resulting buffer |
Destroys class
Destroys transpose_handle_host
class
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_host), | intent(inout) | :: | self |
Transposition class |
Creates two-dimensional transposition datatypes
Creates two-dimensional transposition datatypes
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_host), | intent(inout) | :: | self |
Transposition class |
||
integer(kind=int32), | intent(in) | :: | n_neighbors |
Size of 1d comm |
||
integer(kind=int32), | intent(in) | :: | i |
Counter |
||
class(pencil), | intent(in) | :: | send |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | send_counts(:) |
Rank i is sending this counts |
||
class(pencil), | intent(in) | :: | recv |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | recv_counts(:) |
Rank i is recieving this counts |
||
integer(kind=int8), | intent(in) | :: | datatype_id |
Id of transpose plan to use |
||
type(MPI_Datatype), | intent(in) | :: | base_type |
Base MPI_Datatype |
||
integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
Creates three-dimensional X –> Y, Y –> X transposition datatypes
Creates three-dimensional X –> Y, Y –> X transposition datatypes
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_host), | intent(inout) | :: | self |
Transposition class |
||
integer(kind=int32), | intent(in) | :: | n_neighbors |
Size of 1d comm |
||
integer(kind=int32), | intent(in) | :: | i |
Counter |
||
class(pencil), | intent(in) | :: | send |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | send_counts(:) |
Rank i is sending this counts |
||
class(pencil), | intent(in) | :: | recv |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | recv_counts(:) |
Rank i is recieving this counts |
||
integer(kind=int8), | intent(in) | :: | datatype_id |
Id of transpose plan to use |
||
type(MPI_Datatype), | intent(in) | :: | base_type |
Base MPI_Datatype |
||
integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
Creates three-dimensional Y –> Z, Z –> Y transposition datatypes
Creates three-dimensional Y –> Z, Z –> Y transposition datatypes
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_host), | intent(inout) | :: | self |
Transposition class |
||
integer(kind=int32), | intent(in) | :: | n_neighbors |
Size of 1d comm |
||
integer(kind=int32), | intent(in) | :: | i |
Counter |
||
class(pencil), | intent(in) | :: | send |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | send_counts(:) |
Rank i is sending this counts |
||
class(pencil), | intent(in) | :: | recv |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | recv_counts(:) |
Rank i is recieving this counts |
||
integer(kind=int8), | intent(in) | :: | datatype_id |
Id of transpose plan to use |
||
type(MPI_Datatype), | intent(in) | :: | base_type |
Base MPI_Datatype |
||
integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
Creates three-dimensional X –> Z datatype, only slab!
Creates three-dimensional X –> Z transposition datatypes Can only be used with 3D slab decomposition when slabs are distributed in Z direction
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_host), | intent(inout) | :: | self |
Transposition class |
||
integer(kind=int32), | intent(in) | :: | n_neighbors |
Size of 1d comm |
||
integer(kind=int32), | intent(in) | :: | i |
Counter |
||
class(pencil), | intent(in) | :: | send |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | send_counts(:) |
Rank i is sending this counts |
||
class(pencil), | intent(in) | :: | recv |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | recv_counts(:) |
Rank i is recieving this counts |
||
integer(kind=int8), | intent(in) | :: | datatype_id |
Id of transpose plan to use |
||
type(MPI_Datatype), | intent(in) | :: | base_type |
Base MPI_Datatype |
||
integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
Creates three-dimensional Z –> X datatype, only slab!
Creates three-dimensional Z –> X transposition datatypes Can only be used with 3D slab decomposition when slabs are distributed in Z direction
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_host), | intent(inout) | :: | self |
Transposition class |
||
integer(kind=int32), | intent(in) | :: | n_neighbors |
Size of 1d comm |
||
integer(kind=int32), | intent(in) | :: | i |
Counter |
||
class(pencil), | intent(in) | :: | send |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | send_counts(:) |
Rank i is sending this counts |
||
class(pencil), | intent(in) | :: | recv |
Information about send buffer |
||
integer(kind=int32), | intent(in) | :: | recv_counts(:) |
Rank i is recieving this counts |
||
integer(kind=int8), | intent(in) | :: | datatype_id |
Id of transpose plan to use |
||
type(MPI_Datatype), | intent(in) | :: | base_type |
Base MPI_Datatype |
||
integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |