dtfft_plan Module

This module describes dtfft_plan_t, dtfft_plan_c2c_t, dtfft_plan_r2c_t and dtfft_plan_r2r_t types


Uses

  • module~~dtfft_plan~~UsesGraph module~dtfft_plan dtfft_plan iso_c_binding iso_c_binding module~dtfft_plan->iso_c_binding iso_fortran_env iso_fortran_env module~dtfft_plan->iso_fortran_env module~dtfft_abstract_executor dtfft_abstract_executor module~dtfft_plan->module~dtfft_abstract_executor module~dtfft_abstract_transpose_plan dtfft_abstract_transpose_plan module~dtfft_plan->module~dtfft_abstract_transpose_plan module~dtfft_config dtfft_config module~dtfft_plan->module~dtfft_config module~dtfft_executor_cufft_m dtfft_executor_cufft_m module~dtfft_plan->module~dtfft_executor_cufft_m module~dtfft_executor_fftw_m dtfft_executor_fftw_m module~dtfft_plan->module~dtfft_executor_fftw_m module~dtfft_executor_mkl_m dtfft_executor_mkl_m module~dtfft_plan->module~dtfft_executor_mkl_m module~dtfft_executor_vkfft_m dtfft_executor_vkfft_m module~dtfft_plan->module~dtfft_executor_vkfft_m module~dtfft_interface_cuda_runtime dtfft_interface_cuda_runtime module~dtfft_plan->module~dtfft_interface_cuda_runtime module~dtfft_interface_nvshmem dtfft_interface_nvshmem module~dtfft_plan->module~dtfft_interface_nvshmem module~dtfft_interface_nvtx dtfft_interface_nvtx module~dtfft_plan->module~dtfft_interface_nvtx module~dtfft_nvrtc_kernel dtfft_nvrtc_kernel module~dtfft_plan->module~dtfft_nvrtc_kernel module~dtfft_parameters dtfft_parameters module~dtfft_plan->module~dtfft_parameters module~dtfft_pencil dtfft_pencil module~dtfft_plan->module~dtfft_pencil module~dtfft_transpose_plan_cuda dtfft_transpose_plan_cuda module~dtfft_plan->module~dtfft_transpose_plan_cuda module~dtfft_transpose_plan_host dtfft_transpose_plan_host module~dtfft_plan->module~dtfft_transpose_plan_host module~dtfft_utils dtfft_utils module~dtfft_plan->module~dtfft_utils mpi_f08 mpi_f08 module~dtfft_plan->mpi_f08 module~dtfft_abstract_executor->iso_c_binding module~dtfft_abstract_executor->iso_fortran_env module~dtfft_abstract_executor->module~dtfft_interface_nvtx module~dtfft_abstract_executor->module~dtfft_parameters module~dtfft_abstract_executor->module~dtfft_pencil module~dtfft_abstract_executor->module~dtfft_utils module~dtfft_abstract_transpose_plan->iso_c_binding module~dtfft_abstract_transpose_plan->iso_fortran_env module~dtfft_abstract_transpose_plan->module~dtfft_config module~dtfft_abstract_transpose_plan->module~dtfft_interface_cuda_runtime module~dtfft_abstract_transpose_plan->module~dtfft_interface_nvshmem module~dtfft_abstract_transpose_plan->module~dtfft_interface_nvtx module~dtfft_abstract_transpose_plan->module~dtfft_nvrtc_kernel module~dtfft_abstract_transpose_plan->module~dtfft_parameters module~dtfft_abstract_transpose_plan->module~dtfft_pencil module~dtfft_abstract_transpose_plan->module~dtfft_utils module~dtfft_abstract_transpose_plan->mpi_f08 module~dtfft_abstract_backend dtfft_abstract_backend module~dtfft_abstract_transpose_plan->module~dtfft_abstract_backend module~dtfft_interface_nccl dtfft_interface_nccl module~dtfft_abstract_transpose_plan->module~dtfft_interface_nccl module~dtfft_config->iso_c_binding module~dtfft_config->iso_fortran_env module~dtfft_config->module~dtfft_interface_cuda_runtime module~dtfft_config->module~dtfft_parameters module~dtfft_config->module~dtfft_utils module~dtfft_config->mpi_f08 module~dtfft_executor_cufft_m->iso_c_binding module~dtfft_executor_cufft_m->iso_fortran_env module~dtfft_executor_cufft_m->module~dtfft_abstract_executor module~dtfft_executor_cufft_m->module~dtfft_config module~dtfft_executor_cufft_m->module~dtfft_interface_cuda_runtime module~dtfft_executor_cufft_m->module~dtfft_parameters module~dtfft_executor_cufft_m->module~dtfft_utils module~dtfft_executor_cufft_m->mpi_f08 module~dtfft_interface_cufft dtfft_interface_cufft module~dtfft_executor_cufft_m->module~dtfft_interface_cufft module~dtfft_executor_fftw_m->iso_c_binding module~dtfft_executor_fftw_m->iso_fortran_env module~dtfft_executor_fftw_m->module~dtfft_abstract_executor module~dtfft_executor_fftw_m->module~dtfft_parameters module~dtfft_executor_fftw_m->module~dtfft_pencil module~dtfft_executor_fftw_m->module~dtfft_utils module~dtfft_interface_fftw_m dtfft_interface_fftw_m module~dtfft_executor_fftw_m->module~dtfft_interface_fftw_m module~dtfft_executor_mkl_m->iso_c_binding module~dtfft_executor_mkl_m->iso_fortran_env module~dtfft_executor_mkl_m->module~dtfft_abstract_executor module~dtfft_executor_mkl_m->module~dtfft_parameters module~dtfft_executor_mkl_m->module~dtfft_utils module~dtfft_executor_mkl_m->mpi_f08 module~dtfft_interface_mkl_m dtfft_interface_mkl_m module~dtfft_executor_mkl_m->module~dtfft_interface_mkl_m module~dtfft_interface_mkl_native_m dtfft_interface_mkl_native_m module~dtfft_executor_mkl_m->module~dtfft_interface_mkl_native_m module~dtfft_executor_vkfft_m->iso_c_binding module~dtfft_executor_vkfft_m->iso_fortran_env module~dtfft_executor_vkfft_m->module~dtfft_abstract_executor module~dtfft_executor_vkfft_m->module~dtfft_config module~dtfft_executor_vkfft_m->module~dtfft_parameters module~dtfft_interface_vkfft_m dtfft_interface_vkfft_m module~dtfft_executor_vkfft_m->module~dtfft_interface_vkfft_m 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_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_interface_nvtx->iso_c_binding module~dtfft_interface_nvtx->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_interface_nvtx 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_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_transpose_plan_cuda->iso_c_binding module~dtfft_transpose_plan_cuda->iso_fortran_env module~dtfft_transpose_plan_cuda->module~dtfft_abstract_transpose_plan module~dtfft_transpose_plan_cuda->module~dtfft_config module~dtfft_transpose_plan_cuda->module~dtfft_interface_cuda_runtime module~dtfft_transpose_plan_cuda->module~dtfft_interface_nvtx module~dtfft_transpose_plan_cuda->module~dtfft_nvrtc_kernel module~dtfft_transpose_plan_cuda->module~dtfft_parameters module~dtfft_transpose_plan_cuda->module~dtfft_pencil module~dtfft_transpose_plan_cuda->module~dtfft_utils module~dtfft_transpose_plan_cuda->mpi_f08 module~dtfft_transpose_plan_cuda->module~dtfft_abstract_backend module~dtfft_transpose_plan_cuda->module~dtfft_interface_cuda module~dtfft_transpose_plan_cuda->module~dtfft_interface_nvrtc module~dtfft_transpose_handle_cuda dtfft_transpose_handle_cuda module~dtfft_transpose_plan_cuda->module~dtfft_transpose_handle_cuda module~dtfft_transpose_plan_host->iso_fortran_env module~dtfft_transpose_plan_host->module~dtfft_abstract_transpose_plan module~dtfft_transpose_plan_host->module~dtfft_interface_nvtx module~dtfft_transpose_plan_host->module~dtfft_parameters module~dtfft_transpose_plan_host->module~dtfft_pencil module~dtfft_transpose_plan_host->module~dtfft_utils module~dtfft_transpose_plan_host->mpi_f08 module~dtfft_transpose_handle_host dtfft_transpose_handle_host module~dtfft_transpose_plan_host->module~dtfft_transpose_handle_host 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_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_nvrtc_kernel 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_abstract_backend->module~dtfft_interface_nccl 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_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_fftw_m->iso_c_binding dtfft_interface_fftw_native_m dtfft_interface_fftw_native_m module~dtfft_interface_fftw_m->dtfft_interface_fftw_native_m module~dtfft_interface_mkl_m->iso_c_binding module~dtfft_interface_mkl_m->module~dtfft_utils MKL_DFTI MKL_DFTI module~dtfft_interface_mkl_native_m->MKL_DFTI module~dtfft_interface_nccl->iso_c_binding module~dtfft_interface_nccl->module~dtfft_parameters module~dtfft_interface_nccl->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_vkfft_m->iso_c_binding module~dtfft_interface_vkfft_m->iso_fortran_env module~dtfft_interface_vkfft_m->module~dtfft_parameters module~dtfft_interface_vkfft_m->module~dtfft_utils module~dtfft_transpose_handle_cuda->iso_c_binding module~dtfft_transpose_handle_cuda->iso_fortran_env module~dtfft_transpose_handle_cuda->module~dtfft_interface_cuda_runtime module~dtfft_transpose_handle_cuda->module~dtfft_interface_nvtx module~dtfft_transpose_handle_cuda->module~dtfft_nvrtc_kernel module~dtfft_transpose_handle_cuda->module~dtfft_parameters module~dtfft_transpose_handle_cuda->module~dtfft_pencil module~dtfft_transpose_handle_cuda->module~dtfft_utils module~dtfft_transpose_handle_cuda->mpi_f08 module~dtfft_transpose_handle_cuda->module~dtfft_abstract_backend module~dtfft_backend_cufftmp_m dtfft_backend_cufftmp_m module~dtfft_transpose_handle_cuda->module~dtfft_backend_cufftmp_m module~dtfft_backend_mpi dtfft_backend_mpi module~dtfft_transpose_handle_cuda->module~dtfft_backend_mpi module~dtfft_backend_nccl_m dtfft_backend_nccl_m module~dtfft_transpose_handle_cuda->module~dtfft_backend_nccl_m module~dtfft_transpose_handle_host->iso_fortran_env module~dtfft_transpose_handle_host->module~dtfft_interface_nvtx module~dtfft_transpose_handle_host->module~dtfft_parameters module~dtfft_transpose_handle_host->module~dtfft_pencil module~dtfft_transpose_handle_host->mpi_f08 module~dtfft_backend_cufftmp_m->iso_c_binding module~dtfft_backend_cufftmp_m->iso_fortran_env module~dtfft_backend_cufftmp_m->module~dtfft_interface_cuda_runtime module~dtfft_backend_cufftmp_m->module~dtfft_interface_nvshmem module~dtfft_backend_cufftmp_m->module~dtfft_parameters module~dtfft_backend_cufftmp_m->module~dtfft_pencil module~dtfft_backend_cufftmp_m->module~dtfft_utils module~dtfft_backend_cufftmp_m->mpi_f08 module~dtfft_backend_cufftmp_m->module~dtfft_abstract_backend module~dtfft_backend_cufftmp_m->module~dtfft_interface_cufft module~dtfft_backend_mpi->iso_c_binding module~dtfft_backend_mpi->iso_fortran_env module~dtfft_backend_mpi->module~dtfft_interface_cuda_runtime module~dtfft_backend_mpi->module~dtfft_parameters module~dtfft_backend_mpi->module~dtfft_utils module~dtfft_backend_mpi->mpi_f08 module~dtfft_backend_mpi->module~dtfft_abstract_backend module~dtfft_backend_nccl_m->iso_c_binding module~dtfft_backend_nccl_m->iso_fortran_env module~dtfft_backend_nccl_m->module~dtfft_interface_cuda_runtime module~dtfft_backend_nccl_m->module~dtfft_parameters module~dtfft_backend_nccl_m->module~dtfft_utils module~dtfft_backend_nccl_m->mpi_f08 module~dtfft_backend_nccl_m->module~dtfft_abstract_backend module~dtfft_backend_nccl_m->module~dtfft_interface_nccl

Used by

  • module~~dtfft_plan~~UsedByGraph module~dtfft_plan dtfft_plan module~dtfft dtfft module~dtfft->module~dtfft_plan module~dtfft_api dtfft_api module~dtfft_api->module~dtfft_plan

Derived Types

type, public, abstract ::  dtfft_plan_t

Abstract class for all dtFFT plans

Components

Type Visibility Attributes Name Initial
integer(kind=int8), private :: ndims

Number of global dimensions

integer(kind=int32), private, allocatable :: dims(:)

Global dimensions

type(dtfft_precision_t), private :: precision

Precision of transform

logical, private :: is_created = .false.

Plan creation flag

logical, private :: is_transpose_plan = .false.

Plan is transpose only

logical, private :: is_aux_alloc = .false.

Auxiliary buffer is allocated internally

logical, private :: is_z_slab = .false.

Using Z-slab optimization

Read more…
type(dtfft_effort_t), private :: effort

User defined type of effort

integer(kind=int64), private :: storage_size

Single element size in bytes

type(dtfft_executor_t), private :: executor

FFT executor type

type(MPI_Comm), private :: comm

Grid communicator

type(MPI_Comm), private, allocatable :: comms(:)

Local 1d communicators

class(abstract_transpose_plan), private, allocatable :: plan

Transpose plan handle

type(pencil), private, allocatable :: pencils(:)

Information about data aligment and datatypes

type(dtfft_platform_t), private :: platform

Execution platform

type(dtfft_stream_t), private :: stream

CUDA Stream associated with current plan

type(c_ptr), private :: aux_ptr

Auxiliary pointer

type(fft_executor), private, allocatable :: fft(:)

Internal fft runners

integer(kind=int32), private, allocatable :: fft_mapping(:)

Memory and plan creation optimization. In case same FFTs needs to be run in different dimensions only single FFT plan needs to be created

Type-Bound Procedures

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

Performs single transposition

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

Performs single transposition using type(c_ptr) pointers instead of buffers

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

Executes plan

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

Executes plan using type(c_ptr) pointers instead of buffers

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

Destroys plan

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

Returns local starts and counts in real and fourier spaces

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

Wrapper around get_local_sizes to obtain number of elements only

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

Returns logical value is Z-slab optimization is enabled

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

Returns pencil decomposition

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

Returns number of bytes required to store single element.

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

Returns minimum number of bytes required to execute plan

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

Prints plan details

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

Allocates memory for type(c_ptr)

generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d ../../

Allocates memory specific for this plan

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

Frees previously allocated memory for type(c_ptr)

generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d ../../

Frees previously allocated memory specific for this plan

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

Returns plan execution platform

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

Returns selected GPU backend during autotuning

generic, public :: get_stream => get_stream_ptr, get_stream_int64 ../../

Returns CUDA stream associated with plan

procedure, private, pass(self), non_overridable :: get_stream_ptr ../../

Returns CUDA stream associated with plan

procedure, private, pass(self), non_overridable :: get_stream_int64 ../../

Returns CUDA stream associated with plan

procedure, private, pass(self), non_overridable :: execute_private ../../

Executes plan

procedure, private, pass(self), non_overridable :: check_create_args ../../

Check arguments provided to create subroutines

procedure, private, pass(self), non_overridable :: create_private ../../

Creates core

procedure, private, pass(self), non_overridable :: alloc_fft_plans ../../

Allocates fft_executor classes

procedure, private, pass(self), non_overridable :: check_aux ../../

Checks if aux buffer was passed and if not will allocate one internally

procedure, private, pass(self), non_overridable :: mem_alloc_r32_1d ../../

Allocates memory for 1d real32 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_r64_1d ../../

Allocates memory for 1d real64 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_r32_2d ../../

Allocates memory for 2d real32 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_r64_2d ../../

Allocates memory for 2d real64 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_r32_3d ../../

Allocates memory for 2d real32 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_r64_3d ../../

Allocates memory for 2d real64 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_c32_1d ../../

Allocates memory for 1d complex32 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_c64_1d ../../

Allocates memory for 1d complex64 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_c32_2d ../../

Allocates memory for 2d complex32 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_c64_2d ../../

Allocates memory for 2d complex64 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_c32_3d ../../

Allocates memory for 3d complex32 pointer

procedure, private, pass(self), non_overridable :: mem_alloc_c64_3d ../../

Allocates memory for 3d complex64 pointer

procedure, private, pass(self), non_overridable :: mem_free_r32_1d ../../

Frees real32 1d pointer

procedure, private, pass(self), non_overridable :: mem_free_r64_1d ../../

Frees real64 1d pointer

procedure, private, pass(self), non_overridable :: mem_free_r32_2d ../../

Frees real32 2d pointer

procedure, private, pass(self), non_overridable :: mem_free_r64_2d ../../

Frees real64 2d pointer

procedure, private, pass(self), non_overridable :: mem_free_r32_3d ../../

Frees real32 3d pointer

procedure, private, pass(self), non_overridable :: mem_free_r64_3d ../../

Frees real64 3d pointer

procedure, private, pass(self), non_overridable :: mem_free_c32_1d ../../

Frees complex32 1d pointer

procedure, private, pass(self), non_overridable :: mem_free_c64_1d ../../

Frees complex64 1d pointer

procedure, private, pass(self), non_overridable :: mem_free_c32_2d ../../

Frees complex32 2d pointer

procedure, private, pass(self), non_overridable :: mem_free_c64_2d ../../

Frees complex64 2d pointer

procedure, private, pass(self), non_overridable :: mem_free_c32_3d ../../

Frees complex32 3d pointer

procedure, private, pass(self), non_overridable :: mem_free_c64_3d ../../

Frees complex64 3d pointer

type, public, extends(dtfft_core_c2c) ::  dtfft_plan_c2c_t

C2C Plan

Type-Bound Procedures

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

Performs single transposition

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

Performs single transposition using type(c_ptr) pointers instead of buffers

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

Executes plan

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

Executes plan using type(c_ptr) pointers instead of buffers

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

Destroys plan

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

Returns local starts and counts in real and fourier spaces

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

Wrapper around get_local_sizes to obtain number of elements only

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

Returns logical value is Z-slab optimization is enabled

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

Returns pencil decomposition

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

Returns number of bytes required to store single element.

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

Returns minimum number of bytes required to execute plan

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

Prints plan details

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

Allocates memory for type(c_ptr)

generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d ../../

Allocates memory specific for this plan

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

Frees previously allocated memory for type(c_ptr)

generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d ../../

Frees previously allocated memory specific for this plan

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

Returns plan execution platform

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

Returns selected GPU backend during autotuning

generic, public :: get_stream => get_stream_ptr, get_stream_int64 ../../

Returns CUDA stream associated with plan

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

Creates C2C plan

type, public, extends(dtfft_core_c2c) ::  dtfft_plan_r2c_t

R2C Plan

Components

Type Visibility Attributes Name Initial
type(pencil), private :: real_pencil

“Real” pencil decomposition info

Type-Bound Procedures

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

Performs single transposition

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

Performs single transposition using type(c_ptr) pointers instead of buffers

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

Executes plan

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

Executes plan using type(c_ptr) pointers instead of buffers

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

Destroys plan

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

Returns local starts and counts in real and fourier spaces

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

Wrapper around get_local_sizes to obtain number of elements only

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

Returns logical value is Z-slab optimization is enabled

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

Returns pencil decomposition

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

Returns number of bytes required to store single element.

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

Returns minimum number of bytes required to execute plan

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

Prints plan details

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

Allocates memory for type(c_ptr)

generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d ../../

Allocates memory specific for this plan

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

Frees previously allocated memory for type(c_ptr)

generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d ../../

Frees previously allocated memory specific for this plan

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

Returns plan execution platform

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

Returns selected GPU backend during autotuning

generic, public :: get_stream => get_stream_ptr, get_stream_int64 ../../

Returns CUDA stream associated with plan

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

Creates R2C plan

type, public, extends(dtfft_plan_t) ::  dtfft_plan_r2r_t

R2R Plan

Type-Bound Procedures

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

Performs single transposition

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

Performs single transposition using type(c_ptr) pointers instead of buffers

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

Executes plan

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

Executes plan using type(c_ptr) pointers instead of buffers

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

Destroys plan

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

Returns local starts and counts in real and fourier spaces

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

Wrapper around get_local_sizes to obtain number of elements only

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

Returns logical value is Z-slab optimization is enabled

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

Returns pencil decomposition

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

Returns number of bytes required to store single element.

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

Returns minimum number of bytes required to execute plan

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

Prints plan details

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

Allocates memory for type(c_ptr)

generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d ../../

Allocates memory specific for this plan

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

Frees previously allocated memory for type(c_ptr)

generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d ../../

Frees previously allocated memory specific for this plan

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

Returns plan execution platform

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

Returns selected GPU backend during autotuning

generic, public :: get_stream => get_stream_ptr, get_stream_int64 ../../

Returns CUDA stream associated with plan

procedure, public, pass(self) :: create => create_r2r ../../

Creates R2R plan

type, private ::  fft_executor

FFT handle

Components

Type Visibility Attributes Name Initial
class(abstract_executor), public, allocatable :: fft

Executor

type, private, abstract, extends(dtfft_plan_t) ::  dtfft_core_c2c

Abstract C2C Plan

Type-Bound Procedures

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

Performs single transposition

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

Performs single transposition using type(c_ptr) pointers instead of buffers

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

Executes plan

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

Executes plan using type(c_ptr) pointers instead of buffers

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

Destroys plan

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

Returns local starts and counts in real and fourier spaces

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

Wrapper around get_local_sizes to obtain number of elements only

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

Returns logical value is Z-slab optimization is enabled

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

Returns pencil decomposition

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

Returns number of bytes required to store single element.

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

Returns minimum number of bytes required to execute plan

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

Prints plan details

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

Allocates memory for type(c_ptr)

generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d ../../

Allocates memory specific for this plan

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

Frees previously allocated memory for type(c_ptr)

generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d ../../

Frees previously allocated memory specific for this plan

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

Returns plan execution platform

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

Returns selected GPU backend during autotuning

generic, public :: get_stream => get_stream_ptr, get_stream_int64 ../../

Returns CUDA stream associated with plan

procedure, private, pass(self), non_overridable :: create_c2c_internal ../../

Creates plan for both C2C and R2C


Functions

private function get_z_slab_enabled(self, error_code)

Returns logical value is Z-slab optimization enabled internally

Arguments

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

Abstract plan

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

Optional error code returned to user

Return Value logical

private function get_pencil(self, dim, error_code)

Returns pencil decomposition

Arguments

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

Abstract plan

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

Required dimension:

Read more…
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

Return Value type(dtfft_pencil_t)

private function get_element_size(self, error_code)

Returns number of bytes required to store single element.

Arguments

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

Abstract plan

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

Optional error code returned to user

Return Value integer(kind=int64)

private function get_alloc_bytes(self, error_code)

Returns minimum number of bytes required to execute plan

Arguments

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

Abstract plan

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

Optional error code returned to user

Return Value integer(kind=int64)

private function get_platform(self, error_code)

Returns execution platform of the plan (HOST or CUDA)

Arguments

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

Abstract plan

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

Optional error code returned to user

Return Value type(dtfft_platform_t)

private function get_backend(self, error_code)

Returns selected GPU backend during autotuning

Arguments

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

Abstract plan

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

Optional error code returned to user

Return Value type(dtfft_backend_t)

private function check_device_pointers(in, out, backend, aux) result(error_code)

Checks if device pointers are provided by user

Arguments

Type IntentOptional Attributes Name
type(c_ptr), intent(in) :: in

First pointer

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

Second pointer

type(dtfft_backend_t), intent(in) :: backend

Backend. Required to check for nvshmem pointer

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

Optional auxiliary pointer.

Return Value integer(kind=int32)

private function get_alloc_size(self, error_code) result(alloc_size)

Wrapper around get_local_sizes to obtain number of elements only

Arguments

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

Abstract plan

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

Optional error code returned to user

Return Value integer(kind=int64)

Minimal number of elements required to execute plan

private function create_private(self, dims, sngl_type, sngl_storage_size, dbl_type, dbl_storage_size, comm, precision, effort, executor, kinds)

Creates core

Arguments

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

Abstract plan

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

Global dimensions of transform

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

MPI_Datatype for single precision plan

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

Number of bytes needed to store single element (single precision)

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

MPI_Datatype for double precision plan

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

Number of bytes needed to store single element (double precision)

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

User-defined communicator

type(dtfft_precision_t), intent(in), optional :: precision

Precision of transform: DTFFT_SINGLE or DTFFT_DOUBLE

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

How thoroughly dtFFT searches for the optimal plan

type(dtfft_executor_t), intent(in), optional :: executor

Type of External FFT Executor

type(dtfft_r2r_kind_t), intent(in), optional :: kinds(:)

Kinds of R2R transform

Return Value integer(kind=int32)

private function check_create_args(self, dims, comm, precision, effort, executor, kinds)

Check arguments provided by user and sets private variables

Arguments

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

Abstract plan

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

Global dimensions of transform

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

Optional MPI Communicator

type(dtfft_precision_t), intent(in), optional :: precision

Precision of transform: DTFFT_SINGLE or DTFFT_DOUBLE

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

How thoroughly dtFFT searches for the optimal plan

type(dtfft_executor_t), intent(in), optional :: executor

Type of External FFT Executor

type(dtfft_r2r_kind_t), intent(in), optional :: kinds(:)

Kinds of R2R transform

Return Value integer(kind=int32)

private function create_c2c_internal(self, dims, comm, precision, effort, executor)

Creates plan for both C2C and R2C

Arguments

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

C2C Plan

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

Global dimensions of transform

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

Communicator

type(dtfft_precision_t), intent(in), optional :: precision

Presicion of Transform

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

How thoroughly dtFFT searches for the optimal plan

type(dtfft_executor_t), intent(in), optional :: executor

Type of External FFT Executor

Return Value integer(kind=int32)


Subroutines

private subroutine transpose(self, in, out, transpose_type, error_code)

Performs single transposition

Read more…

Arguments

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

Abstract plan

type(*), intent(inout), target :: in(..)

Incoming buffer of any rank and kind. Note that this buffer will be modified in GPU build

type(*), intent(inout), target :: out(..)

Resulting buffer of any rank and kind

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

Type of transposition.

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

Optional error code returned to user

private subroutine transpose_ptr(self, in, out, transpose_type, error_code)

Performs single transposition using type(c_ptr) pointers instead of buffers

Read more…

Arguments

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

Abstract plan

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

Incoming pointer. Note that values of this pointer will be modified in GPU build

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

Resulting pointer

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

Type of transposition.

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

Optional error code returned to user

private subroutine execute(self, in, out, execute_type, aux, error_code)

Executes plan

Arguments

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

Abstract plan

type(*), intent(inout), target :: in(..)

Incoming buffer of any rank and kind

type(*), intent(inout), target :: out(..)

Resulting buffer of any rank and kind

type(dtfft_execute_t), intent(in) :: execute_type

Type of execution.

type(*), intent(inout), optional, target :: aux(..)

Optional auxiliary buffer. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

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

Optional error code returned to user

private subroutine execute_ptr(self, in, out, execute_type, aux, error_code)

Executes plan using type(c_ptr) pointers instead of buffers

Arguments

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

Abstract plan

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

Incoming pointer. Note that values of this pointer will be modified in GPU build

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

Resulting pointer

type(dtfft_execute_t), intent(in) :: execute_type

Type of execution.

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

Optional auxiliary buffer. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

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

Optional error code returned to user

private subroutine execute_private(self, in, out, execute_type, aux, inplace)

Executes plan with specified auxiliary buffer

Arguments

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

Abstract plan

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

Source pointer

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

Target pointer

type(dtfft_execute_t), intent(in) :: execute_type

Type of execution.

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

Auxiliary pointer.

logical, intent(in) :: inplace

Inplace execution flag

private subroutine destroy(self, error_code)

Destroys plan, frees all memory

Arguments

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

Abstract plan

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

Optional Error Code returned to user

private subroutine report(self, error_code)

Prints plan-related information to stdout

Arguments

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

Abstract plan

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

Optional error code returned to user

private subroutine get_stream_ptr(self, stream, error_code)

Returns CUDA stream associated with plan

Arguments

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

Abstract plan

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

dtFFT Stream

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

Optional error code returned to user

private subroutine get_stream_int64(self, stream, error_code)

Returns CUDA stream associated with plan

Arguments

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

Abstract plan

integer(kind=int64), intent(out) :: stream

CUDA-Fortran Stream

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

Optional error code returned to user

private subroutine get_local_sizes(self, in_starts, in_counts, out_starts, out_counts, alloc_size, error_code)

Obtain local starts and counts in real and fourier spaces

Arguments

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

Abstract plan

integer(kind=int32), intent(out), optional :: in_starts(:)

Starts of local portion of data in real space (0-based)

integer(kind=int32), intent(out), optional :: in_counts(:)

Number of elements of local portion of data in ‘real’ space

integer(kind=int32), intent(out), optional :: out_starts(:)

Starts of local portion of data in fourier space (0-based)

integer(kind=int32), intent(out), optional :: out_counts(:)

Number of elements of local portion of data in fourier space

integer(kind=int64), intent(out), optional :: alloc_size

Minimal number of elements required to execute plan

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

Optional error code returned to user

private subroutine alloc_fft_plans(self, kinds)

Allocates abstract_executor with required FFT class and populates fft_mapping with similar FFT ids

Arguments

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

Abstract plan

type(dtfft_r2r_kind_t), intent(in), optional :: kinds(:)

Kinds of R2R transform

private subroutine check_aux(self, aux)

Checks if aux buffer was passed by user and if not will allocate one internally

Arguments

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

Abstract plan

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

Optional auxiliary buffer.

private subroutine create_r2r(self, dims, kinds, comm, precision, effort, executor, error_code)

R2R Plan Constructor

Arguments

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

R2R Plan

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

Global dimensions of transform

type(dtfft_r2r_kind_t), intent(in), optional :: kinds(:)

Kinds of R2R transform

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

Communicator

type(dtfft_precision_t), intent(in), optional :: precision

Presicion of Transform

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

How thoroughly dtFFT searches for the optimal plan

type(dtfft_executor_t), intent(in), optional :: executor

Type of External FFT Executor

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

Optional Error Code returned to user

private subroutine create_c2c(self, dims, comm, precision, effort, executor, error_code)

C2C Plan Constructor

Arguments

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

C2C Plan

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

Global dimensions of transform

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

Communicator

type(dtfft_precision_t), intent(in), optional :: precision

Presicion of Transform

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

How thoroughly dtFFT searches for the optimal plan

type(dtfft_executor_t), intent(in), optional :: executor

Type of External FFT Executor

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

Optional Error Code returned to user

private subroutine create_r2c(self, dims, executor, comm, precision, effort, error_code)

R2C Generic Plan Constructor

Arguments

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

C2C Plan

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

Global dimensions of transform

type(dtfft_executor_t), intent(in) :: executor

Type of External FFT Executor

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

Communicator

type(dtfft_precision_t), intent(in), optional :: precision

Presicion of Transform

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

How thoroughly dtFFT searches for the optimal plan

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

Optional Error Code returned to user

private subroutine mem_alloc_ptr(self, alloc_bytes, ptr, error_code)

Allocates memory specific for this plan

Arguments

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

Abstract plan

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

Number of bytes to allocate

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

Allocated pointer

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

Optional error code returned to user

private subroutine mem_free_ptr(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

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

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_alloc_r32_1d(self, alloc_size, ptr, lbound, error_code)

Allocates pointer of rank 1

Arguments

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

Abstract plan

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

Number of elements to allocate

real(kind=real32), intent(out), pointer :: ptr(:)
integer(kind=int32), intent(in), optional :: lbound
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_alloc_r32_2d(self, alloc_size, ptr, sizes, lbounds, error_code)

Allocates pointer of rank 2

Arguments

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

Abstract plan

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

Number of elements to allocate

real(kind=real32), intent(out), pointer :: ptr(:,:)
integer(kind=int32), intent(in) :: sizes(2)
integer(kind=int32), intent(in), optional :: lbounds(2)
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_alloc_r32_3d(self, alloc_size, ptr, sizes, lbounds, error_code)

Allocates pointer of rank 3

Arguments

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

Abstract plan

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

Number of elements to allocate

real(kind=real32), intent(out), pointer :: ptr(:,:,:)
integer(kind=int32), intent(in) :: sizes(3)
integer(kind=int32), intent(in), optional :: lbounds(3)
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_free_r32_1d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

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

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_free_r32_2d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

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

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_free_r32_3d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

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

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_alloc_r64_1d(self, alloc_size, ptr, lbound, error_code)

Allocates pointer of rank 1

Arguments

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

Abstract plan

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

Number of elements to allocate

real(kind=real64), intent(out), pointer :: ptr(:)
integer(kind=int32), intent(in), optional :: lbound
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_alloc_r64_2d(self, alloc_size, ptr, sizes, lbounds, error_code)

Allocates pointer of rank 2

Arguments

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

Abstract plan

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

Number of elements to allocate

real(kind=real64), intent(out), pointer :: ptr(:,:)
integer(kind=int32), intent(in) :: sizes(2)
integer(kind=int32), intent(in), optional :: lbounds(2)
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_alloc_r64_3d(self, alloc_size, ptr, sizes, lbounds, error_code)

Allocates pointer of rank 3

Arguments

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

Abstract plan

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

Number of elements to allocate

real(kind=real64), intent(out), pointer :: ptr(:,:,:)
integer(kind=int32), intent(in) :: sizes(3)
integer(kind=int32), intent(in), optional :: lbounds(3)
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_free_r64_1d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

real(kind=real64), intent(inout), target :: ptr(:)

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_free_r64_2d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

real(kind=real64), intent(inout), target :: ptr(:,:)

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_free_r64_3d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

real(kind=real64), intent(inout), target :: ptr(:,:,:)

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_alloc_c32_1d(self, alloc_size, ptr, lbound, error_code)

Allocates pointer of rank 1

Arguments

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

Abstract plan

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

Number of elements to allocate

complex(kind=real32), intent(out), pointer :: ptr(:)
integer(kind=int32), intent(in), optional :: lbound
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_alloc_c32_2d(self, alloc_size, ptr, sizes, lbounds, error_code)

Allocates pointer of rank 2

Arguments

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

Abstract plan

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

Number of elements to allocate

complex(kind=real32), intent(out), pointer :: ptr(:,:)
integer(kind=int32), intent(in) :: sizes(2)
integer(kind=int32), intent(in), optional :: lbounds(2)
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_alloc_c32_3d(self, alloc_size, ptr, sizes, lbounds, error_code)

Allocates pointer of rank 3

Arguments

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

Abstract plan

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

Number of elements to allocate

complex(kind=real32), intent(out), pointer :: ptr(:,:,:)
integer(kind=int32), intent(in) :: sizes(3)
integer(kind=int32), intent(in), optional :: lbounds(3)
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_free_c32_1d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

complex(kind=real32), intent(inout), target :: ptr(:)

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_free_c32_2d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

complex(kind=real32), intent(inout), target :: ptr(:,:)

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_free_c32_3d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

complex(kind=real32), intent(inout), target :: ptr(:,:,:)

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_alloc_c64_1d(self, alloc_size, ptr, lbound, error_code)

Allocates pointer of rank 1

Arguments

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

Abstract plan

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

Number of elements to allocate

complex(kind=real64), intent(out), pointer :: ptr(:)
integer(kind=int32), intent(in), optional :: lbound
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_alloc_c64_2d(self, alloc_size, ptr, sizes, lbounds, error_code)

Allocates pointer of rank 2

Arguments

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

Abstract plan

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

Number of elements to allocate

complex(kind=real64), intent(out), pointer :: ptr(:,:)
integer(kind=int32), intent(in) :: sizes(2)
integer(kind=int32), intent(in), optional :: lbounds(2)
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_alloc_c64_3d(self, alloc_size, ptr, sizes, lbounds, error_code)

Allocates pointer of rank 3

Arguments

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

Abstract plan

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

Number of elements to allocate

complex(kind=real64), intent(out), pointer :: ptr(:,:,:)
integer(kind=int32), intent(in) :: sizes(3)
integer(kind=int32), intent(in), optional :: lbounds(3)
integer(kind=int32), intent(out), optional :: error_code

Optional error code returned to user

private subroutine mem_free_c64_1d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

complex(kind=real64), intent(inout), target :: ptr(:)

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_free_c64_2d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

complex(kind=real64), intent(inout), target :: ptr(:,:)

Pointer allocated with mem_alloc

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

Optional error code returned to user

private subroutine mem_free_c64_3d(self, ptr, error_code)

Frees previously allocated memory specific for this plan

Arguments

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

Abstract plan

complex(kind=real64), intent(inout), target :: ptr(:,:,:)

Pointer allocated with mem_alloc

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

Optional error code returned to user