dtfft_backend_cufftmp_m Module

cuFFTMp GPU Backend backend_cufftmp


Uses

  • module~~dtfft_backend_cufftmp_m~~UsesGraph module~dtfft_backend_cufftmp_m dtfft_backend_cufftmp_m iso_c_binding iso_c_binding module~dtfft_backend_cufftmp_m->iso_c_binding iso_fortran_env iso_fortran_env module~dtfft_backend_cufftmp_m->iso_fortran_env module~dtfft_abstract_backend dtfft_abstract_backend module~dtfft_backend_cufftmp_m->module~dtfft_abstract_backend module~dtfft_interface_cuda_runtime dtfft_interface_cuda_runtime module~dtfft_backend_cufftmp_m->module~dtfft_interface_cuda_runtime module~dtfft_interface_cufft dtfft_interface_cufft module~dtfft_backend_cufftmp_m->module~dtfft_interface_cufft module~dtfft_interface_nvshmem dtfft_interface_nvshmem module~dtfft_backend_cufftmp_m->module~dtfft_interface_nvshmem module~dtfft_parameters dtfft_parameters module~dtfft_backend_cufftmp_m->module~dtfft_parameters module~dtfft_pencil dtfft_pencil module~dtfft_backend_cufftmp_m->module~dtfft_pencil module~dtfft_utils dtfft_utils module~dtfft_backend_cufftmp_m->module~dtfft_utils mpi_f08 mpi_f08 module~dtfft_backend_cufftmp_m->mpi_f08 module~dtfft_abstract_backend->iso_c_binding module~dtfft_abstract_backend->iso_fortran_env module~dtfft_abstract_backend->module~dtfft_interface_cuda_runtime module~dtfft_abstract_backend->module~dtfft_parameters module~dtfft_abstract_backend->module~dtfft_pencil module~dtfft_abstract_backend->module~dtfft_utils module~dtfft_abstract_backend->mpi_f08 module~dtfft_interface_nccl dtfft_interface_nccl module~dtfft_abstract_backend->module~dtfft_interface_nccl module~dtfft_nvrtc_kernel dtfft_nvrtc_kernel module~dtfft_abstract_backend->module~dtfft_nvrtc_kernel module~dtfft_interface_cuda_runtime->iso_c_binding module~dtfft_interface_cuda_runtime->module~dtfft_parameters module~dtfft_interface_cuda_runtime->module~dtfft_utils module~dtfft_interface_cufft->iso_c_binding module~dtfft_interface_cufft->iso_fortran_env module~dtfft_interface_cufft->module~dtfft_parameters module~dtfft_interface_cufft->module~dtfft_utils module~dtfft_interface_nvshmem->iso_c_binding module~dtfft_interface_nvshmem->iso_fortran_env module~dtfft_interface_nvshmem->module~dtfft_parameters module~dtfft_interface_nvshmem->module~dtfft_utils module~dtfft_parameters->iso_c_binding module~dtfft_parameters->iso_fortran_env module~dtfft_parameters->mpi_f08 module~dtfft_pencil->iso_c_binding module~dtfft_pencil->iso_fortran_env module~dtfft_pencil->module~dtfft_interface_cuda_runtime module~dtfft_pencil->module~dtfft_parameters module~dtfft_pencil->module~dtfft_utils module~dtfft_pencil->mpi_f08 module~dtfft_utils->iso_c_binding module~dtfft_utils->iso_fortran_env module~dtfft_utils->module~dtfft_parameters module~dtfft_utils->mpi_f08 module~dtfft_interface_nccl->iso_c_binding module~dtfft_interface_nccl->module~dtfft_parameters module~dtfft_interface_nccl->module~dtfft_utils module~dtfft_nvrtc_kernel->iso_c_binding module~dtfft_nvrtc_kernel->iso_fortran_env module~dtfft_nvrtc_kernel->module~dtfft_interface_cuda_runtime module~dtfft_nvrtc_kernel->module~dtfft_parameters module~dtfft_nvrtc_kernel->module~dtfft_utils module~dtfft_nvrtc_kernel->mpi_f08 module~dtfft_interface_cuda dtfft_interface_cuda module~dtfft_nvrtc_kernel->module~dtfft_interface_cuda module~dtfft_interface_nvrtc dtfft_interface_nvrtc module~dtfft_nvrtc_kernel->module~dtfft_interface_nvrtc module~dtfft_interface_nvtx dtfft_interface_nvtx module~dtfft_nvrtc_kernel->module~dtfft_interface_nvtx module~dtfft_interface_cuda->iso_c_binding module~dtfft_interface_cuda->iso_fortran_env module~dtfft_interface_cuda->module~dtfft_interface_cuda_runtime module~dtfft_interface_cuda->module~dtfft_parameters module~dtfft_interface_cuda->module~dtfft_utils module~dtfft_interface_nvrtc->iso_c_binding module~dtfft_interface_nvrtc->iso_fortran_env module~dtfft_interface_nvrtc->module~dtfft_interface_cuda_runtime module~dtfft_interface_nvrtc->module~dtfft_parameters module~dtfft_interface_nvrtc->module~dtfft_utils module~dtfft_interface_nvtx->iso_c_binding module~dtfft_interface_nvtx->module~dtfft_utils

Used by

  • module~~dtfft_backend_cufftmp_m~~UsedByGraph module~dtfft_backend_cufftmp_m dtfft_backend_cufftmp_m module~dtfft_transpose_handle_cuda dtfft_transpose_handle_cuda module~dtfft_transpose_handle_cuda->module~dtfft_backend_cufftmp_m module~dtfft_transpose_plan_cuda dtfft_transpose_plan_cuda module~dtfft_transpose_plan_cuda->module~dtfft_transpose_handle_cuda module~dtfft_plan dtfft_plan module~dtfft_plan->module~dtfft_transpose_plan_cuda module~dtfft dtfft module~dtfft->module~dtfft_plan module~dtfft_api dtfft_api module~dtfft_api->module~dtfft_plan

Derived Types

type, public, extends(abstract_backend) ::  backend_cufftmp

cuFFTMp GPU Backend

Components

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

Backend type

logical, public :: is_selfcopy

If backend is self-copying

logical, public :: is_pipelined

If backend is pipelined

integer(kind=int64), public :: aux_size

Number of bytes required by aux buffer

integer(kind=int64), public :: send_recv_buffer_size

Number of float elements used in c_f_pointer

type(MPI_Comm), public :: comm

MPI Communicator

integer(kind=int32), public, allocatable :: comm_mapping(:)

Mapping of 1d comm ranks to global comm

integer(kind=int32), public :: comm_size

Size of MPI Comm

integer(kind=int32), public :: comm_rank

Rank in MPI Comm

integer(kind=int64), public, allocatable :: send_displs(:)

Send data displacements, in float elements

integer(kind=int64), public, allocatable :: send_floats(:)

Send data elements, in float elements

integer(kind=int64), public, allocatable :: recv_displs(:)

Recv data displacements, in float elements

integer(kind=int64), public, allocatable :: recv_floats(:)

Recv data elements, in float elements

type(cudaEvent), public :: execution_event

Event for main execution stream

type(cudaEvent), public :: copy_event

Event for copy stream

type(dtfft_stream_t), public :: copy_stream

Stream for copy operations

integer(kind=int64), public :: self_copy_bytes

Number of bytes to copy it itself

integer(kind=int64), public :: self_send_displ

Displacement for send buffer

integer(kind=int64), public :: self_recv_displ

Displacement for recv buffer

type(nvrtc_kernel), public, pointer :: unpack_kernel

Kernel for unpacking data

type(nvrtc_kernel), public, pointer :: unpack_kernel2

Kernel for unpacking data

type(cufftReshapeHandle), private :: plan

Type-Bound Procedures

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

Creates Abstract GPU Backend

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

Executes GPU Backend

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

Destroys Abstract GPU Backend

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

Returns number of bytes required by aux buffer

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

Sets unpack kernel for pipelined backend

procedure, public :: create_private => create
procedure, public :: execute_private => execute
procedure, public :: destroy_private => destroy

type, private ::  Box3D

Components

Type Visibility Attributes Name Initial
integer(kind=c_long_long), public :: lower(3)
integer(kind=c_long_long), public :: upper(3)
integer(kind=c_long_long), public :: strides(3)

Subroutines

private subroutine create(self, helper, tranpose_type, base_storage)

Creates cuFFTMp GPU Backend

Arguments

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

cuFFTMp GPU Backend

type(backend_helper), intent(in) :: helper

Backend helper

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

Type of transpose to create

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

Number of bytes to store single element

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

Executes cuFFTMp GPU Backend

Arguments

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

cuFFTMp GPU Backend

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

Send pointer

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

Recv pointer

type(dtfft_stream_t), intent(in) :: stream

Main execution CUDA stream

real(kind=real32), intent(inout), target :: aux(:)

Aux pointer

private subroutine destroy(self)

Destroys cuFFTMp GPU Backend

Arguments

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

cuFFTMp GPU Backend