transpose_handle_cuda Derived Type

type, public :: transpose_handle_cuda

CUDA Transpose Handle


Inherits

type~~transpose_handle_cuda~~InheritsGraph type~transpose_handle_cuda transpose_handle_cuda type~abstract_backend abstract_backend type~transpose_handle_cuda->type~abstract_backend comm_handle type~dtfft_transpose_t dtfft_transpose_t type~transpose_handle_cuda->type~dtfft_transpose_t transpose_type type~nvrtc_kernel nvrtc_kernel type~transpose_handle_cuda->type~nvrtc_kernel transpose_kernel, unpack_kernel, unpack_kernel2 type~abstract_backend->type~nvrtc_kernel unpack_kernel, unpack_kernel2 MPI_Comm MPI_Comm type~abstract_backend->MPI_Comm comm type~cudaevent cudaEvent type~abstract_backend->type~cudaevent execution_event, copy_event type~dtfft_backend_t dtfft_backend_t type~abstract_backend->type~dtfft_backend_t backend type~dtfft_stream_t dtfft_stream_t type~abstract_backend->type~dtfft_stream_t copy_stream type~cufunction CUfunction type~nvrtc_kernel->type~cufunction cuda_kernel type~dim3 dim3 type~nvrtc_kernel->type~dim3 num_blocks, block_size type~kernelargs kernelArgs type~nvrtc_kernel->type~kernelargs args c_ptr c_ptr type~cudaevent->c_ptr event type~cufunction->c_ptr ptr type~dtfft_stream_t->c_ptr stream type~kernelargs->c_ptr ptrs

Inherited by

type~~transpose_handle_cuda~~InheritedByGraph type~transpose_handle_cuda transpose_handle_cuda type~transpose_plan_cuda transpose_plan_cuda type~transpose_plan_cuda->type~transpose_handle_cuda fplans, bplans

Components

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


Type-Bound Procedures

procedure, public, pass(self) :: create

Creates CUDA Transpose Handle

  • private subroutine create(self, helper, send, recv, base_storage, backend)

    Creates CUDA Transpose Handle

    Arguments

    Type IntentOptional 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

procedure, public, pass(self) :: execute

Executes transpose - exchange - unpack

  • private subroutine execute(self, in, out, stream, aux)

    Executes transpose - exchange - unpack

    Arguments

    Type IntentOptional 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

procedure, public, pass(self) :: destroy

Destroys CUDA Transpose Handle

  • private subroutine destroy(self)

    Destroys CUDA Transpose Handle

    Arguments

    Type IntentOptional Attributes Name
    class(transpose_handle_cuda), intent(inout) :: self

    CUDA Transpose Handle

procedure, public, pass(self) :: get_aux_size

Returns number of bytes required by aux buffer

  • private function get_aux_size(self)

    Returns number of bytes required by aux buffer

    Arguments

    Type IntentOptional Attributes Name
    class(transpose_handle_cuda), intent(in) :: self

    CUDA Transpose Handle

    Return Value integer(kind=int64)

procedure, public, pass(self) :: get_tranpose_type

Returns transpose_type, associated with handle