abstract_transpose_plan Derived Type

type, public, abstract :: abstract_transpose_plan

The most Abstract Transpose Plan


Inherits

type~~abstract_transpose_plan~~InheritsGraph type~abstract_transpose_plan abstract_transpose_plan type~backend_helper backend_helper type~abstract_transpose_plan->type~backend_helper helper type~dtfft_backend_t dtfft_backend_t type~abstract_transpose_plan->type~dtfft_backend_t backend MPI_Comm MPI_Comm type~backend_helper->MPI_Comm comms c_ptr c_ptr type~backend_helper->c_ptr nccl_register type~dtfft_transpose_t dtfft_transpose_t type~backend_helper->type~dtfft_transpose_t tranpose_type type~ncclcomm ncclComm type~backend_helper->type~ncclcomm nccl_comm type~pencil pencil type~backend_helper->type~pencil pencils type~ncclcomm->c_ptr member

Inherited by

type~~abstract_transpose_plan~~InheritedByGraph type~abstract_transpose_plan abstract_transpose_plan type~dtfft_plan_t dtfft_plan_t type~dtfft_plan_t->type~abstract_transpose_plan plan type~transpose_plan_cuda transpose_plan_cuda type~transpose_plan_cuda->type~abstract_transpose_plan type~transpose_plan_host transpose_plan_host type~transpose_plan_host->type~abstract_transpose_plan type~dtfft_core_c2c dtfft_core_c2c type~dtfft_core_c2c->type~dtfft_plan_t type~dtfft_plan_r2r_t dtfft_plan_r2r_t type~dtfft_plan_r2r_t->type~dtfft_plan_t type~plan_c plan_c type~plan_c->type~dtfft_plan_t p type~dtfft_plan_c2c_t dtfft_plan_c2c_t type~dtfft_plan_c2c_t->type~dtfft_core_c2c type~dtfft_plan_r2c_t dtfft_plan_r2c_t type~dtfft_plan_r2c_t->type~dtfft_core_c2c

Components

Type Visibility Attributes Name Initial
type(dtfft_backend_t), public :: backend = DTFFT_BACKEND_MPI_DATATYPE

GPU backend

type(backend_helper), public :: helper

Backend helper

logical, public :: is_z_slab

Z-slab optimization flag (for 3D transforms)

integer(kind=int64), public :: min_buffer_size

Minimal buffer size for transposition


Type-Bound Procedures

procedure, public, pass(self) :: create

Create transposition plan

  • private function create(self, dims, base_comm_, effort, base_dtype, base_storage, cart_comm, comms, pencils) result(error_code)

    Creates transposition plans

    Arguments

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

    Transposition class

    integer(kind=int32), intent(in) :: dims(:)

    Global sizes of the transform requested

    type(MPI_Comm), intent(in) :: base_comm_

    Base communicator

    type(dtfft_effort_t), intent(in) :: effort

    dtFFT planner type of effort

    type(MPI_Datatype), intent(in) :: base_dtype

    Base MPI_Datatype

    integer(kind=int64), intent(in) :: base_storage

    Number of bytes needed to store single element

    type(MPI_Comm), intent(out) :: cart_comm

    Cartesian communicator

    type(MPI_Comm), intent(out) :: comms(:)

    Array of 1d communicators

    type(pencil), intent(out) :: pencils(:)

    Data distributing meta

    Return Value integer(kind=int32)

    Error code

procedure, public, pass(self) :: execute

Executes transposition

  • private subroutine execute(self, in, out, transpose_type)

    Executes single transposition

    Arguments

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

    Transposition class

    type(c_ptr), intent(in) :: in

    Incoming pointer

    type(c_ptr), intent(in) :: out

    Result pointer

    type(dtfft_transpose_t), intent(in) :: transpose_type

    Type of transpose

procedure(create_interface), public, deferred, pass(self) :: create_private

Creates overriding class

  • function create_interface(self, dims, transposed_dims, base_comm, comm_dims, effort, base_dtype, base_storage, is_custom_cart_comm, cart_comm, comms, pencils) result(error_code) Prototype

    Creates transposition plans

    Arguments

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

    Transposition class

    integer(kind=int32), intent(in) :: dims(:)

    Global sizes of the transform requested

    integer(kind=int32), intent(in) :: transposed_dims(:,:)

    Transposed sizes of the transform requested

    type(MPI_Comm), intent(in) :: base_comm

    Base MPI communicator

    integer(kind=int32), intent(in) :: comm_dims(:)

    Dims in cartesian communicator

    type(dtfft_effort_t), intent(in) :: effort

    dtFFT planner type of effort

    type(MPI_Datatype), intent(in) :: base_dtype

    Base MPI_Datatype

    integer(kind=int64), intent(in) :: base_storage

    Number of bytes needed to store single element

    logical, intent(in) :: is_custom_cart_comm

    Custom cartesian communicator provided by user

    type(MPI_Comm), intent(out) :: cart_comm

    Cartesian communicator

    type(MPI_Comm), intent(out) :: comms(:)

    Array of 1d communicators

    type(pencil), intent(out) :: pencils(:)

    Data distributing meta

    Return Value integer(kind=int32)

    Error code

procedure(execute_interface), public, deferred, pass(self) :: execute_private

Executes overriding class

  • subroutine execute_interface(self, in, out, transpose_type) Prototype

    Executes single transposition

    Arguments

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

    Transposition class

    real(kind=real32), intent(inout) :: in(:)

    Incoming buffer

    real(kind=real32), intent(inout) :: out(:)

    Resulting buffer

    type(dtfft_transpose_t), intent(in) :: transpose_type

    Type of transpose

procedure(destroy_interface), public, deferred, pass(self) :: destroy

Destroys overriding class

  • subroutine destroy_interface(self) Prototype

    Destroys transposition plans

    Arguments

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

    Transposition class

procedure, public, non_overridable, pass(self) :: get_backend

Returns backend id

procedure, public, non_overridable, pass(self) :: mem_alloc

Allocates memory based on selected backend

  • private subroutine mem_alloc(self, comm, alloc_bytes, ptr, error_code)

    Allocates memory based on selected backend

    Arguments

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

    Transposition class

    type(MPI_Comm), intent(in) :: comm

    MPI communicator

    integer(kind=int64), intent(in) :: alloc_bytes

    Number of bytes to allocate

    type(c_ptr), intent(out) :: ptr

    Pointer to the allocated memory

    integer(kind=int32), intent(out) :: error_code

    Error code

procedure, public, non_overridable, pass(self) :: mem_free

Frees memory allocated with mem_alloc

  • private subroutine mem_free(self, ptr, error_code)

    Frees memory allocated with mem_alloc

    Arguments

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

    Transposition class

    type(c_ptr), intent(in) :: ptr

    Pointer to the memory to free

    integer(kind=int32), intent(out) :: error_code

    Error code