This module describes transpose_handle_cuda class
CUDA Transpose Handle
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(dtfft_transpose_t), | private | :: | transpose_type | ||||
logical, | private | :: | has_exchange | = | .false. |
If current handle has exchanges between GPUs |
|
logical, | private | :: | is_pipelined | = | .false. |
If underlying exchanges are pipelined |
|
type(nvrtc_kernel), | private | :: | transpose_kernel |
Transposes data |
|||
type(nvrtc_kernel), | private | :: | unpack_kernel |
Unpacks data |
|||
type(nvrtc_kernel), | private | :: | unpack_kernel2 | ||||
class(abstract_backend), | private, | allocatable | :: | comm_handle |
Communication handle |
procedure, public, pass(self) :: create | ../../ Creates CUDA Transpose Handle |
procedure, public, pass(self) :: execute | ../../ Executes transpose - exchange - unpack |
procedure, public, pass(self) :: destroy | ../../ Destroys CUDA Transpose Handle |
procedure, public, pass(self) :: get_aux_size | ../../ Returns number of bytes required by aux buffer |
procedure, public, pass(self) :: get_tranpose_type | ../../ Returns transpose_type, associated with handle |
Helper class used to obtain displacements and counts needed to send to other processes
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=int32), | public, | allocatable | :: | ls(:,:) |
Starts of my data that I should send or recv while communicating with other processes |
||
integer(kind=int32), | public, | allocatable | :: | ln(:,:) |
Counts of my data that I should send or recv while communicating with other processes |
||
integer(kind=int32), | public, | allocatable | :: | sizes(:,:) |
Counts of every rank in a comm |
||
integer(kind=int32), | public, | allocatable | :: | starts(:,:) |
Starts of every rank in a comm |
||
integer(kind=int32), | public, | allocatable | :: | displs(:) |
Local buffer displacement |
||
integer(kind=int32), | public, | allocatable | :: | counts(:) |
Number of elements to send or recv |
procedure, public, pass(self) :: create => create_data_handle | ../../ Creates handle |
procedure, public, pass(self) :: destroy => destroy_data_handle | ../../ Destroys handle |
Returns number of bytes required by aux buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_cuda), | intent(in) | :: | self |
CUDA Transpose Handle |
Returns transpose_type, associated with handle
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_cuda), | intent(in) | :: | self |
CUDA Transpose Handle |
Creates handle
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(data_handle), | intent(inout) | :: | self |
Helper class |
||
type(pencil), | intent(in) | :: | info |
Pencil info |
||
type(MPI_Comm), | intent(in) | :: | comm |
MPI communicator |
||
integer(kind=int32), | intent(in) | :: | comm_size |
Size of |
Destroys handle
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(data_handle), | intent(inout) | :: | self |
Helper class |
Creates CUDA Transpose Handle
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_cuda), | intent(inout) | :: | self |
CUDA Transpose Handle |
||
type(backend_helper), | intent(in) | :: | helper |
Backend helper |
||
type(pencil), | intent(in) | :: | send |
Send pencil |
||
type(pencil), | intent(in) | :: | recv |
Recv pencil |
||
integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
||
type(dtfft_backend_t), | intent(in) | :: | backend |
Backend type |
Executes transpose - exchange - unpack
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_cuda), | intent(inout) | :: | self |
CUDA Transpose Handle |
||
real(kind=real32), | intent(inout) | :: | in(:) |
Send pointer |
||
real(kind=real32), | intent(inout) | :: | out(:) |
Recv pointer |
||
type(dtfft_stream_t), | intent(in) | :: | stream |
Main execution CUDA stream |
||
real(kind=real32), | intent(inout) | :: | aux(:) |
Aux pointer |
Destroys CUDA Transpose Handle
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(transpose_handle_cuda), | intent(inout) | :: | self |
CUDA Transpose Handle |