dtfft_abstract_transpose_handle Module

This module defines abstract_transpose_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.


Uses

  • module~~dtfft_abstract_transpose_handle~~UsesGraph module~dtfft_abstract_transpose_handle dtfft_abstract_transpose_handle iso_fortran_env iso_fortran_env module~dtfft_abstract_transpose_handle->iso_fortran_env module~dtfft_abstract_backend dtfft_abstract_backend module~dtfft_abstract_transpose_handle->module~dtfft_abstract_backend module~dtfft_parameters dtfft_parameters module~dtfft_abstract_transpose_handle->module~dtfft_parameters module~dtfft_pencil dtfft_pencil module~dtfft_abstract_transpose_handle->module~dtfft_pencil mpi_f08 mpi_f08 module~dtfft_abstract_transpose_handle->mpi_f08 module~dtfft_abstract_backend->iso_fortran_env module~dtfft_abstract_backend->module~dtfft_parameters module~dtfft_abstract_backend->module~dtfft_pencil module~dtfft_abstract_backend->mpi_f08 iso_c_binding iso_c_binding module~dtfft_abstract_backend->iso_c_binding module~dtfft_abstract_kernel dtfft_abstract_kernel module~dtfft_abstract_backend->module~dtfft_abstract_kernel module~dtfft_config dtfft_config module~dtfft_abstract_backend->module~dtfft_config module~dtfft_errors dtfft_errors module~dtfft_abstract_backend->module~dtfft_errors module~dtfft_interface_cuda_runtime dtfft_interface_cuda_runtime module~dtfft_abstract_backend->module~dtfft_interface_cuda_runtime module~dtfft_interface_nccl dtfft_interface_nccl module~dtfft_abstract_backend->module~dtfft_interface_nccl module~dtfft_utils dtfft_utils module~dtfft_abstract_backend->module~dtfft_utils module~dtfft_parameters->iso_fortran_env module~dtfft_parameters->mpi_f08 module~dtfft_parameters->iso_c_binding module~dtfft_pencil->iso_fortran_env module~dtfft_pencil->module~dtfft_parameters module~dtfft_pencil->mpi_f08 module~dtfft_pencil->iso_c_binding module~dtfft_pencil->module~dtfft_errors module~dtfft_pencil->module~dtfft_interface_cuda_runtime module~dtfft_pencil->module~dtfft_utils module~dtfft_abstract_kernel->iso_fortran_env module~dtfft_abstract_kernel->module~dtfft_parameters module~dtfft_abstract_kernel->mpi_f08 module~dtfft_abstract_kernel->module~dtfft_utils module~dtfft_interface_nvtx dtfft_interface_nvtx module~dtfft_abstract_kernel->module~dtfft_interface_nvtx module~dtfft_config->iso_fortran_env module~dtfft_config->module~dtfft_parameters module~dtfft_config->mpi_f08 module~dtfft_config->iso_c_binding module~dtfft_config->module~dtfft_errors module~dtfft_config->module~dtfft_interface_cuda_runtime module~dtfft_config->module~dtfft_utils module~dtfft_errors->iso_fortran_env module~dtfft_interface_cuda_runtime->module~dtfft_parameters module~dtfft_interface_cuda_runtime->iso_c_binding module~dtfft_interface_cuda_runtime->module~dtfft_utils module~dtfft_interface_nccl->module~dtfft_parameters module~dtfft_interface_nccl->iso_c_binding module~dtfft_interface_nccl->module~dtfft_utils module~dtfft_utils->iso_fortran_env module~dtfft_utils->module~dtfft_parameters module~dtfft_utils->mpi_f08 module~dtfft_utils->iso_c_binding module~dtfft_utils->module~dtfft_errors module~dtfft_interface_nvtx->iso_c_binding module~dtfft_interface_nvtx->module~dtfft_utils

Used by

  • module~~dtfft_abstract_transpose_handle~~UsedByGraph module~dtfft_abstract_transpose_handle dtfft_abstract_transpose_handle module~dtfft_transpose_handle_datatype dtfft_transpose_handle_datatype module~dtfft_transpose_handle_datatype->module~dtfft_abstract_transpose_handle module~dtfft_transpose_handle_generic dtfft_transpose_handle_generic module~dtfft_transpose_handle_generic->module~dtfft_abstract_transpose_handle module~dtfft_transpose_plan dtfft_transpose_plan module~dtfft_transpose_plan->module~dtfft_abstract_transpose_handle module~dtfft_transpose_plan->module~dtfft_transpose_handle_datatype module~dtfft_transpose_plan->module~dtfft_transpose_handle_generic module~dtfft_plan dtfft_plan module~dtfft_plan->module~dtfft_transpose_plan module~dtfft dtfft module~dtfft->module~dtfft_plan module~dtfft_api dtfft_api module~dtfft_api->module~dtfft_plan

Abstract Interfaces

abstract interface

  • private elemental function get_async_active_interface(self)

    Returns if async transpose is active

    Arguments

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

    Abstract Transpose Handle

    Return Value logical

abstract interface

  • private subroutine create_interface(self, comm, send, recv, transpose_type, base_storage, kwargs)

    Creates transpose handle

    Arguments

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

    Abstract transpose handle

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

    MPI Communicator

    type(pencil), intent(in) :: send

    Send pencil

    type(pencil), intent(in) :: recv

    Recv pencil

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

    Type of transpose to create

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

    Base storage

    type(create_args), intent(in) :: kwargs

    Additional arguments

abstract interface

  • private subroutine execute_interface(self, in, out, kwargs, error_code)

    Executes transpose handle

    Arguments

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

    Abstract Transpose 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

abstract interface

  • private subroutine execute_end_interface(self, kwargs, error_code)

    Finishes async transpose

    Arguments

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

    Abstract Transpose Handle

    type(execute_args), intent(inout) :: kwargs

    Additional arguments

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

    Error code

abstract interface

  • private subroutine destroy_interface(self)

    Destroys transpose handle

    Arguments

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

    Abstract Transpose Handle


Derived Types

type, public ::  create_args

Arguments for creating transpose handle

Components

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

type, public ::  execute_args

Arguments for executing transpose handle

Components

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(:)

aux pointer for pipelined operations, in pointer for execute_end

real(kind=real32), public, pointer :: p2(:)

out pointer for execute_end

type, public, abstract ::  abstract_transpose_handle

Abstract transpose handle type

Type-Bound Procedures

procedure, public, non_overridable, pass(self) :: create ../../

Creates transpose handle

procedure, public, pass(self) :: get_aux_size ../../

Returns number of bytes required by aux buffer

procedure(create_interface), public, deferred :: create_private ../../

Creates transpose handle

procedure(execute_interface), public, deferred :: execute ../../

Executes transpose handle

procedure(execute_end_interface), public, deferred :: execute_end ../../

Finishes async transpose

procedure(destroy_interface), public, deferred :: destroy ../../

Destroys transpose handle

procedure(get_async_active_interface), public, deferred :: get_async_active ../../

Returns if async transpose is active


Functions

private pure function get_aux_size(self)

Returns number of bytes required by aux buffer

Arguments

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

Abstract Transpose Handle

Return Value integer(kind=int64)


Subroutines

private subroutine create(self, send, recv, base_storage, kwargs)

Creates transpose handle

Arguments

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

Abstract transpose handle

type(pencil), intent(in) :: send

Send pencil

type(pencil), intent(in) :: recv

Recv pencil

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

Base storage size

type(create_args), intent(inout) :: kwargs

Additional arguments