dtfft_abstract_reshape_handle Module

This module defines abstract_reshape_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_reshape_handle~~UsesGraph module~dtfft_abstract_reshape_handle dtfft_abstract_reshape_handle iso_fortran_env iso_fortran_env module~dtfft_abstract_reshape_handle->iso_fortran_env module~dtfft_abstract_backend dtfft_abstract_backend module~dtfft_abstract_reshape_handle->module~dtfft_abstract_backend module~dtfft_parameters dtfft_parameters module~dtfft_abstract_reshape_handle->module~dtfft_parameters module~dtfft_pencil dtfft_pencil module~dtfft_abstract_reshape_handle->module~dtfft_pencil mpi_f08 mpi_f08 module~dtfft_abstract_reshape_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_interface_nvtx dtfft_interface_nvtx module~dtfft_abstract_backend->module~dtfft_interface_nvtx 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_config 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_interface_nvtx module~dtfft_abstract_kernel->module~dtfft_utils 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_interface_nvtx->iso_c_binding module~dtfft_interface_nvtx->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

Used by

  • module~~dtfft_abstract_reshape_handle~~UsedByGraph module~dtfft_abstract_reshape_handle dtfft_abstract_reshape_handle module~dtfft_reshape_handle_datatype dtfft_reshape_handle_datatype module~dtfft_reshape_handle_datatype->module~dtfft_abstract_reshape_handle module~dtfft_reshape_handle_generic dtfft_reshape_handle_generic module~dtfft_reshape_handle_generic->module~dtfft_abstract_reshape_handle module~dtfft_reshape_plan dtfft_reshape_plan module~dtfft_reshape_plan->module~dtfft_abstract_reshape_handle module~dtfft_reshape_plan_base dtfft_reshape_plan_base module~dtfft_reshape_plan->module~dtfft_reshape_plan_base module~dtfft_reshape_plan_base->module~dtfft_abstract_reshape_handle module~dtfft_reshape_plan_base->module~dtfft_reshape_handle_datatype module~dtfft_reshape_plan_base->module~dtfft_reshape_handle_generic module~dtfft_transpose_plan dtfft_transpose_plan module~dtfft_transpose_plan->module~dtfft_abstract_reshape_handle module~dtfft_transpose_plan->module~dtfft_reshape_plan_base module~dtfft_plan dtfft_plan module~dtfft_plan->module~dtfft_reshape_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 reshape is active

    Arguments

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

    Abstract reshape Handle

    Return Value logical

abstract interface

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

    Creates reshape handle

    Arguments

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

    Abstract reshape handle

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

    MPI Communicator

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

    Send pencil

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

    Recv pencil

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

    Additional arguments

abstract interface

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

    Executes reshape handle

    Arguments

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

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

    Arguments

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

    Abstract reshape 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 reshape handle

    Arguments

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

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

integer(kind=int64), public :: base_storage

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

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

in pointer for unpack-free generic reshape

type, public, abstract ::  abstract_reshape_handle

Abstract reshape handle type

Components

Type Visibility Attributes Name Initial
logical, public :: is_transpose

Is this a transpose operation

Type-Bound Procedures

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

Creates reshape handle

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

Returns number of bytes required by aux buffer

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

Creates reshape handle

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

Executes reshape handle

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

Finishes async reshape

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

Destroys reshape handle

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

Returns if async reshape is active

type, public ::  reshape_container

This type is a container for allocatable transpose handles

Components

Type Visibility Attributes Name Initial
class(abstract_reshape_handle), public, allocatable :: p

Transpose handle


Functions

private pure function get_aux_bytes(self)

Returns number of bytes required by aux buffer

Arguments

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

Abstract reshape Handle

Return Value integer(kind=int64)


Subroutines

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

Creates reshape handle

Arguments

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

Abstract reshape handle

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

Send pencil

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

Recv pencil

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

Additional arguments