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_config dtfft_config module~dtfft_plan->module~dtfft_config module~dtfft_errors dtfft_errors module~dtfft_plan->module~dtfft_errors 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_parameters dtfft_parameters module~dtfft_plan->module~dtfft_parameters module~dtfft_pencil dtfft_pencil module~dtfft_plan->module~dtfft_pencil module~dtfft_reshape_plan dtfft_reshape_plan module~dtfft_plan->module~dtfft_reshape_plan module~dtfft_transpose_plan dtfft_transpose_plan module~dtfft_plan->module~dtfft_transpose_plan 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_errors 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_executor->mpi_f08 module~dtfft_config->iso_c_binding module~dtfft_config->iso_fortran_env module~dtfft_config->module~dtfft_errors 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_abstract_compressor dtfft_abstract_compressor module~dtfft_config->module~dtfft_abstract_compressor module~dtfft_errors->iso_fortran_env 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_errors 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_errors 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_errors 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_errors module~dtfft_executor_vkfft_m->module~dtfft_parameters module~dtfft_executor_vkfft_m->module~dtfft_utils module~dtfft_executor_vkfft_m->mpi_f08 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->iso_fortran_env 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_nvshmem->mpi_f08 module~dtfft_interface_nvtx->iso_c_binding module~dtfft_interface_nvtx->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_config module~dtfft_pencil->module~dtfft_errors 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_reshape_plan->iso_fortran_env module~dtfft_reshape_plan->module~dtfft_config module~dtfft_reshape_plan->module~dtfft_errors module~dtfft_reshape_plan->module~dtfft_interface_nvtx module~dtfft_reshape_plan->module~dtfft_parameters module~dtfft_reshape_plan->module~dtfft_pencil module~dtfft_reshape_plan->module~dtfft_utils module~dtfft_reshape_plan->mpi_f08 module~dtfft_abstract_backend dtfft_abstract_backend module~dtfft_reshape_plan->module~dtfft_abstract_backend module~dtfft_reshape_plan->module~dtfft_abstract_compressor module~dtfft_abstract_reshape_handle dtfft_abstract_reshape_handle 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_transpose_plan->iso_c_binding module~dtfft_transpose_plan->iso_fortran_env module~dtfft_transpose_plan->module~dtfft_config module~dtfft_transpose_plan->module~dtfft_errors module~dtfft_transpose_plan->module~dtfft_interface_nvtx module~dtfft_transpose_plan->module~dtfft_parameters module~dtfft_transpose_plan->module~dtfft_pencil module~dtfft_transpose_plan->module~dtfft_utils module~dtfft_transpose_plan->mpi_f08 module~dtfft_transpose_plan->module~dtfft_abstract_backend module~dtfft_transpose_plan->module~dtfft_abstract_compressor module~dtfft_transpose_plan->module~dtfft_abstract_reshape_handle module~dtfft_transpose_plan->module~dtfft_reshape_plan_base module~dtfft_utils->iso_c_binding module~dtfft_utils->iso_fortran_env module~dtfft_utils->module~dtfft_errors 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_errors module~dtfft_abstract_backend->module~dtfft_interface_cuda_runtime module~dtfft_abstract_backend->module~dtfft_interface_nvtx 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_kernel dtfft_abstract_kernel module~dtfft_abstract_backend->module~dtfft_abstract_kernel module~dtfft_interface_nccl dtfft_interface_nccl module~dtfft_abstract_backend->module~dtfft_interface_nccl module~dtfft_abstract_compressor->iso_c_binding module~dtfft_abstract_compressor->iso_fortran_env module~dtfft_abstract_compressor->module~dtfft_errors module~dtfft_abstract_compressor->module~dtfft_interface_nvtx module~dtfft_abstract_compressor->module~dtfft_parameters module~dtfft_abstract_compressor->module~dtfft_utils module~dtfft_abstract_compressor->mpi_f08 module~dtfft_abstract_reshape_handle->iso_c_binding module~dtfft_abstract_reshape_handle->iso_fortran_env module~dtfft_abstract_reshape_handle->module~dtfft_config module~dtfft_abstract_reshape_handle->module~dtfft_parameters module~dtfft_abstract_reshape_handle->module~dtfft_pencil module~dtfft_abstract_reshape_handle->module~dtfft_utils module~dtfft_abstract_reshape_handle->mpi_f08 module~dtfft_abstract_reshape_handle->module~dtfft_abstract_backend module~dtfft_abstract_reshape_handle->module~dtfft_abstract_compressor 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_vkfft_m->iso_c_binding module~dtfft_interface_vkfft_m->iso_fortran_env module~dtfft_interface_vkfft_m->module~dtfft_errors module~dtfft_interface_vkfft_m->module~dtfft_parameters module~dtfft_interface_vkfft_m->module~dtfft_utils module~dtfft_reshape_plan_base->iso_c_binding module~dtfft_reshape_plan_base->iso_fortran_env module~dtfft_reshape_plan_base->module~dtfft_config module~dtfft_reshape_plan_base->module~dtfft_errors module~dtfft_reshape_plan_base->module~dtfft_interface_cuda_runtime module~dtfft_reshape_plan_base->module~dtfft_interface_nvshmem module~dtfft_reshape_plan_base->module~dtfft_interface_nvtx module~dtfft_reshape_plan_base->module~dtfft_parameters module~dtfft_reshape_plan_base->module~dtfft_pencil module~dtfft_reshape_plan_base->module~dtfft_utils module~dtfft_reshape_plan_base->mpi_f08 module~dtfft_reshape_plan_base->module~dtfft_abstract_backend module~dtfft_reshape_plan_base->module~dtfft_abstract_compressor module~dtfft_reshape_plan_base->module~dtfft_abstract_reshape_handle module~dtfft_interface_cuda dtfft_interface_cuda module~dtfft_reshape_plan_base->module~dtfft_interface_cuda module~dtfft_reshape_plan_base->module~dtfft_interface_nccl module~dtfft_interface_nvrtc dtfft_interface_nvrtc module~dtfft_reshape_plan_base->module~dtfft_interface_nvrtc module~dtfft_reshape_handle_datatype dtfft_reshape_handle_datatype module~dtfft_reshape_plan_base->module~dtfft_reshape_handle_datatype module~dtfft_reshape_handle_generic dtfft_reshape_handle_generic module~dtfft_reshape_plan_base->module~dtfft_reshape_handle_generic module~dtfft_abstract_kernel->iso_c_binding module~dtfft_abstract_kernel->iso_fortran_env module~dtfft_abstract_kernel->module~dtfft_config module~dtfft_abstract_kernel->module~dtfft_interface_nvtx module~dtfft_abstract_kernel->module~dtfft_parameters module~dtfft_abstract_kernel->module~dtfft_utils module~dtfft_abstract_kernel->mpi_f08 module~dtfft_abstract_kernel->module~dtfft_abstract_compressor module~dtfft_interface_cuda->iso_c_binding module~dtfft_interface_cuda->iso_fortran_env module~dtfft_interface_cuda->module~dtfft_errors module~dtfft_interface_cuda->module~dtfft_parameters module~dtfft_interface_cuda->module~dtfft_utils module~dtfft_interface_cuda->mpi_f08 module~dtfft_interface_nccl->iso_c_binding module~dtfft_interface_nccl->iso_fortran_env 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_errors module~dtfft_interface_nvrtc->module~dtfft_utils module~dtfft_reshape_handle_datatype->iso_c_binding module~dtfft_reshape_handle_datatype->iso_fortran_env module~dtfft_reshape_handle_datatype->module~dtfft_errors module~dtfft_reshape_handle_datatype->module~dtfft_interface_nvtx module~dtfft_reshape_handle_datatype->module~dtfft_parameters module~dtfft_reshape_handle_datatype->module~dtfft_pencil module~dtfft_reshape_handle_datatype->mpi_f08 module~dtfft_reshape_handle_datatype->module~dtfft_abstract_reshape_handle module~dtfft_reshape_handle_generic->iso_c_binding module~dtfft_reshape_handle_generic->iso_fortran_env module~dtfft_reshape_handle_generic->module~dtfft_config module~dtfft_reshape_handle_generic->module~dtfft_errors module~dtfft_reshape_handle_generic->module~dtfft_parameters module~dtfft_reshape_handle_generic->module~dtfft_pencil module~dtfft_reshape_handle_generic->module~dtfft_utils module~dtfft_reshape_handle_generic->mpi_f08 module~dtfft_reshape_handle_generic->module~dtfft_abstract_backend module~dtfft_reshape_handle_generic->module~dtfft_abstract_compressor module~dtfft_reshape_handle_generic->module~dtfft_abstract_reshape_handle module~dtfft_reshape_handle_generic->module~dtfft_abstract_kernel module~dtfft_backend_cufftmp_m dtfft_backend_cufftmp_m module~dtfft_reshape_handle_generic->module~dtfft_backend_cufftmp_m module~dtfft_backend_mpi dtfft_backend_mpi module~dtfft_reshape_handle_generic->module~dtfft_backend_mpi module~dtfft_backend_nccl_m dtfft_backend_nccl_m module~dtfft_reshape_handle_generic->module~dtfft_backend_nccl_m module~dtfft_kernel_device dtfft_kernel_device module~dtfft_reshape_handle_generic->module~dtfft_kernel_device module~dtfft_kernel_host dtfft_kernel_host module~dtfft_reshape_handle_generic->module~dtfft_kernel_host module~dtfft_backend_cufftmp_m->iso_c_binding module~dtfft_backend_cufftmp_m->iso_fortran_env module~dtfft_backend_cufftmp_m->module~dtfft_errors 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_errors module~dtfft_backend_mpi->module~dtfft_interface_cuda_runtime module~dtfft_backend_mpi->module~dtfft_interface_nvtx 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_errors 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 module~dtfft_kernel_device->iso_c_binding module~dtfft_kernel_device->iso_fortran_env module~dtfft_kernel_device->module~dtfft_config module~dtfft_kernel_device->module~dtfft_interface_cuda_runtime module~dtfft_kernel_device->module~dtfft_interface_nvtx module~dtfft_kernel_device->module~dtfft_parameters module~dtfft_kernel_device->module~dtfft_utils module~dtfft_kernel_device->mpi_f08 module~dtfft_kernel_device->module~dtfft_abstract_kernel module~dtfft_kernel_device->module~dtfft_interface_cuda module~dtfft_nvrtc_block_optimizer dtfft_nvrtc_block_optimizer module~dtfft_kernel_device->module~dtfft_nvrtc_block_optimizer module~dtfft_nvrtc_module_cache dtfft_nvrtc_module_cache module~dtfft_kernel_device->module~dtfft_nvrtc_module_cache module~dtfft_kernel_host->iso_c_binding module~dtfft_kernel_host->iso_fortran_env module~dtfft_kernel_host->module~dtfft_config module~dtfft_kernel_host->module~dtfft_interface_nvtx module~dtfft_kernel_host->module~dtfft_parameters module~dtfft_kernel_host->module~dtfft_utils module~dtfft_kernel_host->mpi_f08 module~dtfft_kernel_host->module~dtfft_abstract_kernel module~dtfft_nvrtc_block_optimizer->iso_fortran_env module~dtfft_nvrtc_block_optimizer->module~dtfft_config module~dtfft_nvrtc_block_optimizer->module~dtfft_interface_cuda_runtime module~dtfft_nvrtc_block_optimizer->module~dtfft_parameters module~dtfft_nvrtc_block_optimizer->module~dtfft_utils module~dtfft_nvrtc_block_optimizer->mpi_f08 module~dtfft_nvrtc_block_optimizer->module~dtfft_abstract_kernel module~dtfft_nvrtc_module_cache->iso_c_binding module~dtfft_nvrtc_module_cache->iso_fortran_env module~dtfft_nvrtc_module_cache->module~dtfft_config module~dtfft_nvrtc_module_cache->module~dtfft_errors module~dtfft_nvrtc_module_cache->module~dtfft_interface_cuda_runtime module~dtfft_nvrtc_module_cache->module~dtfft_utils module~dtfft_nvrtc_module_cache->mpi_f08 module~dtfft_nvrtc_module_cache->module~dtfft_abstract_kernel module~dtfft_nvrtc_module_cache->module~dtfft_interface_cuda module~dtfft_nvrtc_module_cache->module~dtfft_nvrtc_block_optimizer module~dtfft_nvrtc_module dtfft_nvrtc_module module~dtfft_nvrtc_module_cache->module~dtfft_nvrtc_module module~dtfft_nvrtc_module->iso_c_binding module~dtfft_nvrtc_module->iso_fortran_env module~dtfft_nvrtc_module->module~dtfft_config module~dtfft_nvrtc_module->module~dtfft_errors module~dtfft_nvrtc_module->module~dtfft_interface_cuda_runtime module~dtfft_nvrtc_module->module~dtfft_interface_nvtx module~dtfft_nvrtc_module->module~dtfft_parameters module~dtfft_nvrtc_module->module~dtfft_utils module~dtfft_nvrtc_module->mpi_f08 module~dtfft_nvrtc_module->module~dtfft_abstract_kernel module~dtfft_nvrtc_module->module~dtfft_interface_cuda module~dtfft_nvrtc_module->module~dtfft_interface_nvrtc module~dtfft_nvrtc_module->module~dtfft_nvrtc_block_optimizer

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

Variables

Type Visibility Attributes Name Initial
integer(kind=int32), private, parameter :: CHECK_AUX_CALLED_BY_RESHAPE = 2

Indicates that check_aux was called by reshape operation

integer(kind=int32), private, parameter :: CHECK_AUX_CALLED_BY_EXECUTE = 3

Indicates that check_aux was called by execute operation


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

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

Grid decomposition 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…
logical, private :: is_y_slab = .false.

Using Y-slab optimization

Read more…
logical, private :: is_reshape_enabled = .false.

Reshape operations from bricks to pencils and vice versa are enabled

logical, private :: is_final_reshape_enabled = .false.

Final reshape from pencils to bricks in fourier space is enabled Default is .false., which means data remains in pencils layout in fourier space

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

type(transpose_plan), private :: plan

Transpose plan handle

type(reshape_plan), private :: rplan

Reshape plan handle

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

Information about data aligment and datatypes

type(pencil), private :: bricks(2)

Pencil decomposition info in bricks layout for both real and fourier spaces

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 :: transpose_start ../../

Starts an asynchronous transpose operation

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

Starts an asynchronous transpose operation using type(c_ptr) pointers instead of buffers

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

Ends previously started transposition

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 :: reshape ../../

Performs reshape from bricks to pencils layout or vice versa

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

Performs reshape from bricks to pencils layout or vice versa using type(c_ptr) pointers instead of buffers

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

Starts an asynchronous reshape operation

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

Starts an asynchronous reshape operation using type(c_ptr) pointers instead of buffers

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

Ends an asynchronous reshape operation

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_y_slab_enabled ../../

Returns logical value is Y-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 :: get_aux_size ../../

Returns size of auxiliary buffer in elements

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

Returns minimum number of bytes required for auxiliary buffer

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

Returns size of auxiliary buffer for reshape in elements

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

Returns minimum number of bytes required for auxiliary buffer for reshape

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

Returns size of auxiliary buffer for transpose in elements

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

Returns minimum number of bytes required for auxiliary buffer for transpose

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

Returns FFT Executor associated with plan

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

Returns global dimensions

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

Returns grid decomposition dimensions

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

Returns precision of plan

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

Prints plan details

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

Reports compression

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_backend ../../

Returns selected backend during autotuning

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

Returns selected backend for reshape operations during autotuning

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

Returns plan execution platform

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 :: execute_2d ../../

Executes 2d plan

procedure, private, pass(self), non_overridable :: execute_2d_reshape
procedure, private, pass(self), non_overridable :: execute_z_slab ../../

Executes Z slab plan

procedure, private, pass(self), non_overridable :: execute_z_slab_reshape
procedure, private, pass(self), non_overridable :: execute_generic ../../

Executes plan with specified auxiliary buffer

procedure, private, pass(self), non_overridable :: execute_generic_reshape
procedure, private, pass(self), non_overridable :: transpose_private ../../

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

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

Performs reshape from bricks to pencils layout or vice versa using type(c_ptr) pointers instead of buffers

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 :: get_local_sizes_internal
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 :: transpose_start ../../

Starts an asynchronous transpose operation

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

Starts an asynchronous transpose operation using type(c_ptr) pointers instead of buffers

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

Ends previously started transposition

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 :: reshape ../../

Performs reshape from bricks to pencils layout or vice versa

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

Performs reshape from bricks to pencils layout or vice versa using type(c_ptr) pointers instead of buffers

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

Starts an asynchronous reshape operation

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

Starts an asynchronous reshape operation using type(c_ptr) pointers instead of buffers

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

Ends an asynchronous reshape operation

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_y_slab_enabled ../../

Returns logical value is Y-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 :: get_aux_size ../../

Returns size of auxiliary buffer in elements

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

Returns minimum number of bytes required for auxiliary buffer

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

Returns size of auxiliary buffer for reshape in elements

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

Returns minimum number of bytes required for auxiliary buffer for reshape

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

Returns size of auxiliary buffer for transpose in elements

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

Returns minimum number of bytes required for auxiliary buffer for transpose

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

Returns FFT Executor associated with plan

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

Returns global dimensions

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

Returns grid decomposition dimensions

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

Returns precision of plan

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

Prints plan details

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

Reports compression

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_backend ../../

Returns selected backend during autotuning

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

Returns selected backend for reshape operations during autotuning

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

Returns plan execution platform

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

Returns CUDA stream associated with plan

generic, public :: create => create_c2c, create_c2c_pencil ../../

Creates C2C plan

procedure, private, pass(self) :: create_c2c ../../

Creates C2C plan using global dimensions

procedure, private, pass(self) :: create_c2c_pencil ../../

Creates C2C plan using Pencil of local data

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

Private method that combines common logic for C2C plan creation

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 :: transpose_start ../../

Starts an asynchronous transpose operation

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

Starts an asynchronous transpose operation using type(c_ptr) pointers instead of buffers

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

Ends previously started transposition

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 :: reshape ../../

Performs reshape from bricks to pencils layout or vice versa

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

Performs reshape from bricks to pencils layout or vice versa using type(c_ptr) pointers instead of buffers

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

Starts an asynchronous reshape operation

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

Starts an asynchronous reshape operation using type(c_ptr) pointers instead of buffers

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

Ends an asynchronous reshape operation

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_y_slab_enabled ../../

Returns logical value is Y-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 :: get_aux_size ../../

Returns size of auxiliary buffer in elements

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

Returns minimum number of bytes required for auxiliary buffer

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

Returns size of auxiliary buffer for reshape in elements

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

Returns minimum number of bytes required for auxiliary buffer for reshape

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

Returns size of auxiliary buffer for transpose in elements

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

Returns minimum number of bytes required for auxiliary buffer for transpose

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

Returns FFT Executor associated with plan

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

Returns global dimensions

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

Returns grid decomposition dimensions

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

Returns precision of plan

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

Prints plan details

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

Reports compression

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_backend ../../

Returns selected backend during autotuning

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

Returns selected backend for reshape operations during autotuning

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

Returns plan execution platform

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

Returns CUDA stream associated with plan

generic, public :: create => create_r2c, create_r2c_pencil ../../

Creates R2C plan

procedure, private, pass(self) :: create_r2c ../../

Creates R2C plan using global dimensions

procedure, private, pass(self) :: create_r2c_pencil ../../

Creates R2C plan using Pencil of local data

procedure, private, pass(self) :: create_r2c_internal ../../

Private method that combines common logic for R2C plan creation

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 :: transpose_start ../../

Starts an asynchronous transpose operation

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

Starts an asynchronous transpose operation using type(c_ptr) pointers instead of buffers

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

Ends previously started transposition

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 :: reshape ../../

Performs reshape from bricks to pencils layout or vice versa

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

Performs reshape from bricks to pencils layout or vice versa using type(c_ptr) pointers instead of buffers

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

Starts an asynchronous reshape operation

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

Starts an asynchronous reshape operation using type(c_ptr) pointers instead of buffers

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

Ends an asynchronous reshape operation

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_y_slab_enabled ../../

Returns logical value is Y-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 :: get_aux_size ../../

Returns size of auxiliary buffer in elements

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

Returns minimum number of bytes required for auxiliary buffer

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

Returns size of auxiliary buffer for reshape in elements

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

Returns minimum number of bytes required for auxiliary buffer for reshape

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

Returns size of auxiliary buffer for transpose in elements

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

Returns minimum number of bytes required for auxiliary buffer for transpose

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

Returns FFT Executor associated with plan

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

Returns global dimensions

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

Returns grid decomposition dimensions

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

Returns precision of plan

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

Prints plan details

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

Reports compression

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_backend ../../

Returns selected backend during autotuning

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

Returns selected backend for reshape operations during autotuning

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

Returns plan execution platform

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

Returns CUDA stream associated with plan

generic, public :: create => create_r2r, create_r2r_pencil ../../

Creates R2R plan

procedure, private, pass(self) :: create_r2r ../../

Creates R2R plan using global dimensions

procedure, private, pass(self) :: create_r2r_pencil ../../

Creates R2R plan using Pencil of local data

procedure, private, pass(self) :: create_r2r_internal ../../

Private method that combines common logic for R2R plan creation

type, private ::  async_request

Handle for async transpose operation

Components

Type Visibility Attributes Name Initial
integer(kind=int32), public :: request_type

Type of request

logical, public :: is_started = .false.

Flag that indicates if transpose was started

type(c_ptr), public :: in

Input pointer

type(c_ptr), public :: out

Output pointer

type(c_ptr), public :: aux

Aux pointer

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 :: transpose_start ../../

Starts an asynchronous transpose operation

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

Starts an asynchronous transpose operation using type(c_ptr) pointers instead of buffers

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

Ends previously started transposition

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 :: reshape ../../

Performs reshape from bricks to pencils layout or vice versa

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

Performs reshape from bricks to pencils layout or vice versa using type(c_ptr) pointers instead of buffers

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

Starts an asynchronous reshape operation

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

Starts an asynchronous reshape operation using type(c_ptr) pointers instead of buffers

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

Ends an asynchronous reshape operation

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_y_slab_enabled ../../

Returns logical value is Y-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 :: get_aux_size ../../

Returns size of auxiliary buffer in elements

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

Returns minimum number of bytes required for auxiliary buffer

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

Returns size of auxiliary buffer for reshape in elements

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

Returns minimum number of bytes required for auxiliary buffer for reshape

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

Returns size of auxiliary buffer for transpose in elements

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

Returns minimum number of bytes required for auxiliary buffer for transpose

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

Returns FFT Executor associated with plan

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

Returns global dimensions

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

Returns grid decomposition dimensions

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

Returns precision of plan

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

Prints plan details

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

Reports compression

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_backend ../../

Returns selected backend during autotuning

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

Returns selected backend for reshape operations during autotuning

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

Returns plan execution platform

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

Returns CUDA stream associated with plan

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

Creates plan for both C2C and R2C


Functions

private function reshape_start(self, in, out, reshape_type, aux, error_code) result(request)

Starts an asynchronous reshape operation

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_reshape_t), intent(in) :: reshape_type

Type of reshape.

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

Return Value type(dtfft_request_t)

Asynchronous handle describing started reshape operation

private function reshape_start_ptr(self, in, out, reshape_type, aux, error_code) result(request)

Starts an asynchronous reshape operation 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_reshape_t), intent(in) :: reshape_type

Type of reshape.

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

Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. 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

Return Value type(dtfft_request_t)

Asynchronous handle describing started reshape operation

private function transpose_start(self, in, out, transpose_type, aux, error_code) result(request)

Starts an asynchronous transpose operation

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.

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

Return Value type(dtfft_request_t)

Asynchronous handle describing started transpose operation

private function transpose_start_ptr(self, in, out, transpose_type, aux, error_code) result(request)

Starts an asynchronous transpose operation 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.

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

Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. 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

Return Value type(dtfft_request_t)

Asynchronous handle describing started transpose operation

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_y_slab_enabled(self, error_code)

Returns logical value is Y-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, layout, error_code)

Returns pencil decomposition

Arguments

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

Abstract plan

type(dtfft_layout_t), intent(in) :: layout

Required layout

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_aux_size(self, error_code)

Returns minimum number of elements required for auxiliary buffer which may be different from alloc_size when backend is pipelined

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_aux_bytes(self, error_code)

Returns minimum number of bytes required for auxiliary buffer which may be different from alloc_bytes when backend is pipelined

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_aux_size_reshape(self, error_code)

Returns minimum number of elements required for reshape auxiliary buffer

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_aux_bytes_reshape(self, error_code)

Returns minimum number of bytes required for reshape auxiliary buffer

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_aux_size_transpose(self, error_code)

Returns minimum number of elements required for reshape auxiliary buffer

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_aux_bytes_transpose(self, error_code)

Returns minimum number of bytes required for transpose auxiliary buffer

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_executor(self, error_code)

Returns FFT Executor associated with 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 type(dtfft_executor_t)

private function get_precision(self, error_code)

Returns precision of the 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 type(dtfft_precision_t)

private function get_grid_str(dims) result(grid_str)

Returns grid dimensions as string

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: dims(:)

Grid dimensions

Return Value character(len=:), allocatable

Grid string

private function get_backend(self, error_code)

Returns selected 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 get_reshape_backend(self, error_code)

Returns selected reshape 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 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 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, sngl_type, sngl_storage_size, dbl_type, dbl_storage_size, dims, pencil, comm, precision, effort, executor, kinds, sngl_type_init, sngl_storage_size_init, dbl_type_init, dbl_storage_size_init)

Creates core

Arguments

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

Abstract plan

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)

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

Global dimensions of transform

type(dtfft_pencil_t), intent(in), optional :: pencil

Pencil of local portion of data

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

Effort level for the plan creation

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

type(MPI_Datatype), intent(in), optional :: sngl_type_init

MPI_Datatype for single precision plan (should be passed only for R2C plans)

integer(kind=int64), intent(in), optional :: sngl_storage_size_init

Number of bytes needed to store single element (single precision) (should be passed only for R2C plans)

type(MPI_Datatype), intent(in), optional :: dbl_type_init

MPI_Datatype for double precision plan (should be passed only for R2C plans)

integer(kind=int64), intent(in), optional :: dbl_storage_size_init

Number of bytes needed to store single element (double precision) (should be passed only for R2C plans)

Return Value integer(kind=int32)

private function check_create_args(self, dims, pencil, 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), optional :: dims(:)

Global dimensions of transform

type(dtfft_pencil_t), intent(in), optional :: pencil

Pencil of local portion of data

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

Effort level for the plan creation

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_r2r_internal(self, dims, pencil, kinds, comm, precision, effort, executor)

Creates plan for R2R plans

Arguments

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

R2R Plan

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

Global dimensions of transform

type(dtfft_pencil_t), intent(in), optional :: pencil

Pencil of data to be transformed

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

Effort level for the plan creation

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

Type of External FFT Executor

Return Value integer(kind=int32)

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

Private method that combines common logic for C2C plan creation

Arguments

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

C2C Plan

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

Global dimensions of transform

type(dtfft_pencil_t), intent(in), optional :: pencil

Pencil of data to be transformed

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

Effort level for the plan creation

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

Type of External FFT Executor

Return Value integer(kind=int32)

private function create_c2c_core(self, dims, pencil, comm, precision, effort, executor, sngl_type_init, sngl_storage_size_init, dbl_type_init, dbl_storage_size_init)

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), optional :: dims(:)

Global dimensions of transform

type(dtfft_pencil_t), intent(in), optional :: pencil

Pencil of data to be transformed

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

Effort level for the plan creation

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

Type of External FFT Executor

type(MPI_Datatype), intent(in), optional :: sngl_type_init

MPI_Datatype for single precision plan (should be passed only for R2C plans)

integer(kind=int64), intent(in), optional :: sngl_storage_size_init

Number of bytes needed to store single element (single precision) (should be passed only for R2C plans)

type(MPI_Datatype), intent(in), optional :: dbl_type_init

MPI_Datatype for double precision plan (should be passed only for R2C plans)

integer(kind=int64), intent(in), optional :: dbl_storage_size_init

Number of bytes needed to store single element (double precision) (should be passed only for R2C plans)

Return Value integer(kind=int32)

private function create_r2c_internal(self, dims, pencil, comm, precision, effort, executor)

Private method that combines common logic for R2C plan creation

Arguments

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

R2C Plan

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

Global dimensions of transform

type(dtfft_pencil_t), intent(in), optional :: pencil

Local pencil of data to be transformed

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

Effort level for the plan creation

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

Type of External FFT Executor

Return Value integer(kind=int32)

private function mem_alloc_ptr(self, alloc_bytes, error_code) result(ptr)

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

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

Optional error code returned to user

Return Value type(c_ptr)

Allocated pointer


Subroutines

private subroutine reshape(self, in, out, reshape_type, aux, error_code)

Performs reshape from bricks to pencils layout or vice versa

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_reshape_t), intent(in) :: reshape_type

Type of reshape.

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 reshape_ptr(self, in, out, reshape_type, aux, error_code)

Performs reshape from bricks to pencils layout or vice versa 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_reshape_t), intent(in) :: reshape_type

Type of reshape.

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

Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. 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 reshape_end(self, request, error_code)

Ends an asynchronous reshape operation

Arguments

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

Abstract plan

type(dtfft_request_t), intent(inout) :: request

Asynchronous handle describing started reshape operation

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

Optional error code returned to user

private subroutine reshape_private(self, in, out, reshape_type, aux, exec_type, error_code, true_aux)

Performs reshape from bricks to pencils layout or vice versa 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_reshape_t), intent(in) :: reshape_type

Type of reshape.

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

Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

type(async_exec_t), intent(in) :: exec_type

Type of asynchronous execution.

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

Optional error code returned to user

type(c_ptr), intent(out), optional :: true_aux

private subroutine transpose(self, in, out, transpose_type, aux, 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.

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

Optional auxiliary buffer. If provided, size of buffer must be at least the 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 transpose_ptr(self, in, out, transpose_type, aux, 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.

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

Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. 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 transpose_end(self, request, error_code)

Ends previously started transposition

Arguments

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

Abstract plan

type(dtfft_request_t), intent(inout) :: request

Handle obtained from transpose_start or transpose_start_ptr

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

Optional error code returned to user

private subroutine transpose_private(self, in, out, aux, transpose_type, exec_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(c_ptr), intent(in) :: aux

Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

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

Type of transposition.

type(async_exec_t), intent(in) :: exec_type

Type of asynchronous execution.

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. If provided, size of buffer must be at least the value returned by get_aux_size function

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

Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. 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, aux2)

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

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

Second Auxiliary pointer.

private subroutine execute_2d(self, in, out, execute_type, aux, aux2)

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.

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

Second Auxiliary pointer.

private subroutine execute_2d_reshape(self, in, out, execute_type, aux, aux2)

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.

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

Second Auxiliary pointer.

private subroutine execute_z_slab(self, in, out, execute_type, aux, inplace, aux2)

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

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

Second Auxiliary pointer.

private subroutine execute_z_slab_reshape(self, in, out, execute_type, aux, aux2)

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.

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

Second Auxiliary pointer.

private subroutine execute_generic(self, in, out, execute_type, aux, aux2)

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.

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

Second Auxiliary pointer.

private subroutine execute_generic_reshape(self, in, out, execute_type, aux, aux2)

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.

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

Second Auxiliary pointer.

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 get_dims(self, dims, error_code)

Returns global dimensions

Arguments

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

Abstract plan

integer(kind=int32), intent(out), pointer :: dims(:)

Global dimensions

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

Optional error code returned to user

private subroutine get_grid_dims(self, grid_dims, error_code)

Returns grid decomposition dimensions

Arguments

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

Abstract plan

integer(kind=int32), intent(out), pointer :: grid_dims(:)

Grid dimensions

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 report_compression(self, error_code)

Report compression ratios for all operations where compression was performed This function can be repeatedly called after plan creation and after execution to see how compression ratios evolve.

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 get_local_sizes_internal(self, in_starts, in_counts, out_starts, out_counts, alloc_size)

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

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, called_by, aux_ptr, aux2_ptr)

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.

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

Indicates which function called check_aux for correct allocation

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

Auxiliary buffer pointer

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

Second Auxiliary buffer pointer (used transpose/reshape operations)

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

Effort level for the plan creation

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_r2r_pencil(self, pencil, 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

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

Local pencil of data to be transformed

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

Effort level for the plan creation

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

Effort level for the plan creation

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_pencil(self, pencil, comm, precision, effort, executor, error_code)

C2C Plan Constructor

Arguments

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

C2C Plan

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

Local pencil of data to be transformed

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

Effort level for the plan creation

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, comm, precision, effort, executor, 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(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

Effort level for the plan creation

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_pencil(self, pencil, comm, precision, effort, executor, error_code)

R2C Plan Constructor with pencil

Arguments

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

R2C Plan

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

Local pencil of data to be transformed

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

Effort level for the plan creation

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

Allocated pointer

integer(kind=int32), intent(in), optional :: lbound

Lower boundary of pointer, default is 1

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

Allocated pointer

integer(kind=int32), intent(in) :: sizes(2)

Number of elements in each direction

integer(kind=int32), intent(in), optional :: lbounds(2)

Lower boundaries of pointer, default is (1, 1)

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

Allocated pointer

integer(kind=int32), intent(in) :: sizes(3)

Number of elements in each direction

integer(kind=int32), intent(in), optional :: lbounds(3)

Lower boundaries of pointer, default is (1, 1)

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

Allocated pointer

integer(kind=int32), intent(in), optional :: lbound

Lower boundary of pointer, default is 1

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

Allocated pointer

integer(kind=int32), intent(in) :: sizes(2)

Number of elements in each direction

integer(kind=int32), intent(in), optional :: lbounds(2)

Lower boundaries of pointer, default is (1, 1)

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

Allocated pointer

integer(kind=int32), intent(in) :: sizes(3)

Number of elements in each direction

integer(kind=int32), intent(in), optional :: lbounds(3)

Lower boundaries of pointer, default is (1, 1)

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

Allocated pointer

integer(kind=int32), intent(in), optional :: lbound

Lower boundary of pointer, default is 1

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

Allocated pointer

integer(kind=int32), intent(in) :: sizes(2)

Number of elements in each direction

integer(kind=int32), intent(in), optional :: lbounds(2)

Lower boundaries of pointer, default is (1, 1)

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

Allocated pointer

integer(kind=int32), intent(in) :: sizes(3)

Number of elements in each direction

integer(kind=int32), intent(in), optional :: lbounds(3)

Lower boundaries of pointer, default is (1, 1)

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

Allocated pointer

integer(kind=int32), intent(in), optional :: lbound

Lower boundary of pointer, default is 1

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

Allocated pointer

integer(kind=int32), intent(in) :: sizes(2)

Number of elements in each direction

integer(kind=int32), intent(in), optional :: lbounds(2)

Lower boundaries of pointer, default is (1, 1)

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

Allocated pointer

integer(kind=int32), intent(in) :: sizes(3)

Number of elements in each direction

integer(kind=int32), intent(in), optional :: lbounds(3)

Lower boundaries of pointer, default is (1, 1)

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