This module describes dtfft_plan_t, dtfft_plan_c2c_t, dtfft_plan_r2c_t and dtfft_plan_r2r_t types
Abstract class for all dtFFT
plans
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=int8), | private | :: | ndims |
Number of global dimensions |
|||
integer(kind=int32), | private, | allocatable | :: | dims(:) |
Global dimensions |
||
type(dtfft_precision_t), | private | :: | precision |
Precision of transform |
|||
logical, | private | :: | is_created | = | .false. |
Plan creation flag |
|
logical, | private | :: | is_transpose_plan | = | .false. |
Plan is transpose only |
|
logical, | private | :: | is_aux_alloc | = | .false. |
Auxiliary buffer is allocated internally |
|
logical, | private | :: | is_z_slab | = | .false. |
Using Z-slab optimization |
|
type(dtfft_effort_t), | private | :: | effort |
User defined type of effort |
|||
integer(kind=int64), | private | :: | storage_size |
Single element size in bytes |
|||
type(dtfft_executor_t), | private | :: | executor |
FFT executor type |
|||
type(MPI_Comm), | private | :: | comm |
Grid communicator |
|||
type(MPI_Comm), | private, | allocatable | :: | comms(:) |
Local 1d communicators |
||
class(abstract_transpose_plan), | private, | allocatable | :: | plan |
Transpose plan handle |
||
type(pencil), | private, | allocatable | :: | pencils(:) |
Information about data aligment and datatypes |
||
type(dtfft_platform_t), | private | :: | platform |
Execution platform |
|||
type(dtfft_stream_t), | private | :: | stream |
CUDA Stream associated with current plan |
|||
type(c_ptr), | private | :: | aux_ptr |
Auxiliary pointer |
|||
type(fft_executor), | private, | allocatable | :: | fft(:) |
Internal fft runners |
||
integer(kind=int32), | private, | allocatable | :: | fft_mapping(:) |
Memory and plan creation optimization. In case same FFTs needs to be run in different dimensions only single FFT plan needs to be created |
procedure, public, pass(self), non_overridable :: transpose | ../../ Performs single transposition |
procedure, public, pass(self), non_overridable :: transpose_ptr | ../../ Performs single transposition using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: execute | ../../ Executes plan |
procedure, public, pass(self), non_overridable :: execute_ptr | ../../ Executes plan using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: destroy | ../../ Destroys plan |
procedure, public, pass(self), non_overridable :: get_local_sizes | ../../ Returns local starts and counts in |
procedure, public, pass(self), non_overridable :: get_alloc_size | ../../ Wrapper around |
procedure, public, pass(self), non_overridable :: get_z_slab_enabled | ../../ Returns logical value is Z-slab optimization is enabled |
procedure, public, pass(self), non_overridable :: get_pencil | ../../ Returns pencil decomposition |
procedure, public, pass(self), non_overridable :: get_element_size | ../../ Returns number of bytes required to store single element. |
procedure, public, pass(self), non_overridable :: get_alloc_bytes | ../../ Returns minimum number of bytes required to execute plan |
procedure, public, pass(self), non_overridable :: report | ../../ Prints plan details |
procedure, public, pass(self), non_overridable :: mem_alloc_ptr | ../../ Allocates memory for type(c_ptr) |
generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d | ../../ Allocates memory specific for this plan |
procedure, public, pass(self), non_overridable :: mem_free_ptr | ../../ Frees previously allocated memory for type(c_ptr) |
generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d | ../../ Frees previously allocated memory specific for this plan |
procedure, public, pass(self), non_overridable :: get_platform | ../../ Returns plan execution platform |
procedure, public, pass(self), non_overridable :: get_backend | ../../ Returns selected GPU backend during autotuning |
generic, public :: get_stream => get_stream_ptr, get_stream_int64 | ../../ Returns CUDA stream associated with plan |
procedure, private, pass(self), non_overridable :: get_stream_ptr | ../../ Returns CUDA stream associated with plan |
procedure, private, pass(self), non_overridable :: get_stream_int64 | ../../ Returns CUDA stream associated with plan |
procedure, private, pass(self), non_overridable :: execute_private | ../../ Executes plan |
procedure, private, pass(self), non_overridable :: check_create_args | ../../ Check arguments provided to |
procedure, private, pass(self), non_overridable :: create_private | ../../ Creates core |
procedure, private, pass(self), non_overridable :: alloc_fft_plans | ../../ Allocates |
procedure, private, pass(self), non_overridable :: check_aux | ../../ Checks if aux buffer was passed and if not will allocate one internally |
procedure, private, pass(self), non_overridable :: mem_alloc_r32_1d | ../../ Allocates memory for 1d real32 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_r64_1d | ../../ Allocates memory for 1d real64 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_r32_2d | ../../ Allocates memory for 2d real32 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_r64_2d | ../../ Allocates memory for 2d real64 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_r32_3d | ../../ Allocates memory for 2d real32 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_r64_3d | ../../ Allocates memory for 2d real64 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_c32_1d | ../../ Allocates memory for 1d complex32 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_c64_1d | ../../ Allocates memory for 1d complex64 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_c32_2d | ../../ Allocates memory for 2d complex32 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_c64_2d | ../../ Allocates memory for 2d complex64 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_c32_3d | ../../ Allocates memory for 3d complex32 pointer |
procedure, private, pass(self), non_overridable :: mem_alloc_c64_3d | ../../ Allocates memory for 3d complex64 pointer |
procedure, private, pass(self), non_overridable :: mem_free_r32_1d | ../../ Frees real32 1d pointer |
procedure, private, pass(self), non_overridable :: mem_free_r64_1d | ../../ Frees real64 1d pointer |
procedure, private, pass(self), non_overridable :: mem_free_r32_2d | ../../ Frees real32 2d pointer |
procedure, private, pass(self), non_overridable :: mem_free_r64_2d | ../../ Frees real64 2d pointer |
procedure, private, pass(self), non_overridable :: mem_free_r32_3d | ../../ Frees real32 3d pointer |
procedure, private, pass(self), non_overridable :: mem_free_r64_3d | ../../ Frees real64 3d pointer |
procedure, private, pass(self), non_overridable :: mem_free_c32_1d | ../../ Frees complex32 1d pointer |
procedure, private, pass(self), non_overridable :: mem_free_c64_1d | ../../ Frees complex64 1d pointer |
procedure, private, pass(self), non_overridable :: mem_free_c32_2d | ../../ Frees complex32 2d pointer |
procedure, private, pass(self), non_overridable :: mem_free_c64_2d | ../../ Frees complex64 2d pointer |
procedure, private, pass(self), non_overridable :: mem_free_c32_3d | ../../ Frees complex32 3d pointer |
procedure, private, pass(self), non_overridable :: mem_free_c64_3d | ../../ Frees complex64 3d pointer |
C2C Plan
procedure, public, pass(self), non_overridable :: transpose | ../../ Performs single transposition |
procedure, public, pass(self), non_overridable :: transpose_ptr | ../../ Performs single transposition using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: execute | ../../ Executes plan |
procedure, public, pass(self), non_overridable :: execute_ptr | ../../ Executes plan using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: destroy | ../../ Destroys plan |
procedure, public, pass(self), non_overridable :: get_local_sizes | ../../ Returns local starts and counts in |
procedure, public, pass(self), non_overridable :: get_alloc_size | ../../ Wrapper around |
procedure, public, pass(self), non_overridable :: get_z_slab_enabled | ../../ Returns logical value is Z-slab optimization is enabled |
procedure, public, pass(self), non_overridable :: get_pencil | ../../ Returns pencil decomposition |
procedure, public, pass(self), non_overridable :: get_element_size | ../../ Returns number of bytes required to store single element. |
procedure, public, pass(self), non_overridable :: get_alloc_bytes | ../../ Returns minimum number of bytes required to execute plan |
procedure, public, pass(self), non_overridable :: report | ../../ Prints plan details |
procedure, public, pass(self), non_overridable :: mem_alloc_ptr | ../../ Allocates memory for type(c_ptr) |
generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d | ../../ Allocates memory specific for this plan |
procedure, public, pass(self), non_overridable :: mem_free_ptr | ../../ Frees previously allocated memory for type(c_ptr) |
generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d | ../../ Frees previously allocated memory specific for this plan |
procedure, public, pass(self), non_overridable :: get_platform | ../../ Returns plan execution platform |
procedure, public, pass(self), non_overridable :: get_backend | ../../ Returns selected GPU backend during autotuning |
generic, public :: get_stream => get_stream_ptr, get_stream_int64 | ../../ Returns CUDA stream associated with plan |
procedure, public, pass(self), non_overridable :: create => create_c2c | ../../ Creates C2C plan |
R2C Plan
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(pencil), | private | :: | real_pencil |
“Real” pencil decomposition info |
procedure, public, pass(self), non_overridable :: transpose | ../../ Performs single transposition |
procedure, public, pass(self), non_overridable :: transpose_ptr | ../../ Performs single transposition using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: execute | ../../ Executes plan |
procedure, public, pass(self), non_overridable :: execute_ptr | ../../ Executes plan using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: destroy | ../../ Destroys plan |
procedure, public, pass(self), non_overridable :: get_local_sizes | ../../ Returns local starts and counts in |
procedure, public, pass(self), non_overridable :: get_alloc_size | ../../ Wrapper around |
procedure, public, pass(self), non_overridable :: get_z_slab_enabled | ../../ Returns logical value is Z-slab optimization is enabled |
procedure, public, pass(self), non_overridable :: get_pencil | ../../ Returns pencil decomposition |
procedure, public, pass(self), non_overridable :: get_element_size | ../../ Returns number of bytes required to store single element. |
procedure, public, pass(self), non_overridable :: get_alloc_bytes | ../../ Returns minimum number of bytes required to execute plan |
procedure, public, pass(self), non_overridable :: report | ../../ Prints plan details |
procedure, public, pass(self), non_overridable :: mem_alloc_ptr | ../../ Allocates memory for type(c_ptr) |
generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d | ../../ Allocates memory specific for this plan |
procedure, public, pass(self), non_overridable :: mem_free_ptr | ../../ Frees previously allocated memory for type(c_ptr) |
generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d | ../../ Frees previously allocated memory specific for this plan |
procedure, public, pass(self), non_overridable :: get_platform | ../../ Returns plan execution platform |
procedure, public, pass(self), non_overridable :: get_backend | ../../ Returns selected GPU backend during autotuning |
generic, public :: get_stream => get_stream_ptr, get_stream_int64 | ../../ Returns CUDA stream associated with plan |
procedure, public, pass(self), non_overridable :: create => create_r2c | ../../ Creates R2C plan |
R2R Plan
procedure, public, pass(self), non_overridable :: transpose | ../../ Performs single transposition |
procedure, public, pass(self), non_overridable :: transpose_ptr | ../../ Performs single transposition using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: execute | ../../ Executes plan |
procedure, public, pass(self), non_overridable :: execute_ptr | ../../ Executes plan using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: destroy | ../../ Destroys plan |
procedure, public, pass(self), non_overridable :: get_local_sizes | ../../ Returns local starts and counts in |
procedure, public, pass(self), non_overridable :: get_alloc_size | ../../ Wrapper around |
procedure, public, pass(self), non_overridable :: get_z_slab_enabled | ../../ Returns logical value is Z-slab optimization is enabled |
procedure, public, pass(self), non_overridable :: get_pencil | ../../ Returns pencil decomposition |
procedure, public, pass(self), non_overridable :: get_element_size | ../../ Returns number of bytes required to store single element. |
procedure, public, pass(self), non_overridable :: get_alloc_bytes | ../../ Returns minimum number of bytes required to execute plan |
procedure, public, pass(self), non_overridable :: report | ../../ Prints plan details |
procedure, public, pass(self), non_overridable :: mem_alloc_ptr | ../../ Allocates memory for type(c_ptr) |
generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d | ../../ Allocates memory specific for this plan |
procedure, public, pass(self), non_overridable :: mem_free_ptr | ../../ Frees previously allocated memory for type(c_ptr) |
generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d | ../../ Frees previously allocated memory specific for this plan |
procedure, public, pass(self), non_overridable :: get_platform | ../../ Returns plan execution platform |
procedure, public, pass(self), non_overridable :: get_backend | ../../ Returns selected GPU backend during autotuning |
generic, public :: get_stream => get_stream_ptr, get_stream_int64 | ../../ Returns CUDA stream associated with plan |
procedure, public, pass(self) :: create => create_r2r | ../../ Creates R2R plan |
FFT handle
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
class(abstract_executor), | public, | allocatable | :: | fft |
Executor |
Abstract C2C Plan
procedure, public, pass(self), non_overridable :: transpose | ../../ Performs single transposition |
procedure, public, pass(self), non_overridable :: transpose_ptr | ../../ Performs single transposition using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: execute | ../../ Executes plan |
procedure, public, pass(self), non_overridable :: execute_ptr | ../../ Executes plan using type(c_ptr) pointers instead of buffers |
procedure, public, pass(self), non_overridable :: destroy | ../../ Destroys plan |
procedure, public, pass(self), non_overridable :: get_local_sizes | ../../ Returns local starts and counts in |
procedure, public, pass(self), non_overridable :: get_alloc_size | ../../ Wrapper around |
procedure, public, pass(self), non_overridable :: get_z_slab_enabled | ../../ Returns logical value is Z-slab optimization is enabled |
procedure, public, pass(self), non_overridable :: get_pencil | ../../ Returns pencil decomposition |
procedure, public, pass(self), non_overridable :: get_element_size | ../../ Returns number of bytes required to store single element. |
procedure, public, pass(self), non_overridable :: get_alloc_bytes | ../../ Returns minimum number of bytes required to execute plan |
procedure, public, pass(self), non_overridable :: report | ../../ Prints plan details |
procedure, public, pass(self), non_overridable :: mem_alloc_ptr | ../../ Allocates memory for type(c_ptr) |
generic, public :: mem_alloc => mem_alloc_r32_1d, mem_alloc_r64_1d, mem_alloc_r32_2d, mem_alloc_r64_2d, mem_alloc_r32_3d, mem_alloc_r64_3d, mem_alloc_c32_1d, mem_alloc_c64_1d, mem_alloc_c32_2d, mem_alloc_c64_2d, mem_alloc_c32_3d, mem_alloc_c64_3d | ../../ Allocates memory specific for this plan |
procedure, public, pass(self), non_overridable :: mem_free_ptr | ../../ Frees previously allocated memory for type(c_ptr) |
generic, public :: mem_free => mem_free_r32_1d, mem_free_r32_2d, mem_free_r32_3d, mem_free_r64_1d, mem_free_r64_2d, mem_free_r64_3d, mem_free_c32_1d, mem_free_c32_2d, mem_free_c32_3d, mem_free_c64_1d, mem_free_c64_2d, mem_free_c64_3d | ../../ Frees previously allocated memory specific for this plan |
procedure, public, pass(self), non_overridable :: get_platform | ../../ Returns plan execution platform |
procedure, public, pass(self), non_overridable :: get_backend | ../../ Returns selected GPU backend during autotuning |
generic, public :: get_stream => get_stream_ptr, get_stream_int64 | ../../ Returns CUDA stream associated with plan |
procedure, private, pass(self), non_overridable :: create_c2c_internal | ../../ Creates plan for both C2C and R2C |
Returns logical value is Z-slab optimization enabled internally
Type | Intent | Optional | 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 |
Returns pencil decomposition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(in) | :: | self |
Abstract plan |
||
integer(kind=int32), | intent(in) | :: | dim |
Required dimension: |
||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Returns number of bytes required to store single element.
Type | Intent | Optional | 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 |
Returns minimum number of bytes required to execute plan
Type | Intent | Optional | 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 |
Returns execution platform of the plan (HOST or CUDA)
Type | Intent | Optional | 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 |
Returns selected GPU backend during autotuning
Type | Intent | Optional | 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 |
Checks if device pointers are provided by user
Type | Intent | Optional | 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 |
||
type(c_ptr), | intent(in) | :: | aux |
Optional auxiliary pointer. |
Wrapper around get_local_sizes
to obtain number of elements only
Type | Intent | Optional | 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 |
Minimal number of elements required to execute plan
Creates core
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int32), | intent(in) | :: | dims(:) |
Global dimensions of transform |
||
type(MPI_Datatype), | intent(in) | :: | sngl_type |
MPI_Datatype for single precision plan |
||
integer(kind=int64), | intent(in) | :: | sngl_storage_size |
Number of bytes needed to store single element (single precision) |
||
type(MPI_Datatype), | intent(in) | :: | dbl_type |
MPI_Datatype for double precision plan |
||
integer(kind=int64), | intent(in) | :: | dbl_storage_size |
Number of bytes needed to store single element (double precision) |
||
type(MPI_Comm), | intent(in), | optional | :: | comm |
User-defined communicator |
|
type(dtfft_precision_t), | intent(in), | optional | :: | precision |
Precision of transform: |
|
type(dtfft_effort_t), | intent(in), | optional | :: | effort |
How thoroughly |
|
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 |
Check arguments provided by user and sets private variables
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int32), | intent(in) | :: | dims(:) |
Global dimensions of transform |
||
type(MPI_Comm), | intent(in), | optional | :: | comm |
Optional MPI Communicator |
|
type(dtfft_precision_t), | intent(in), | optional | :: | precision |
Precision of transform: |
|
type(dtfft_effort_t), | intent(in), | optional | :: | effort |
How thoroughly |
|
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 |
Creates plan for both C2C and R2C
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_core_c2c), | intent(inout) | :: | self |
C2C Plan |
||
integer(kind=int32), | intent(in) | :: | dims(:) |
Global dimensions of transform |
||
type(MPI_Comm), | intent(in), | optional | :: | comm |
Communicator |
|
type(dtfft_precision_t), | intent(in), | optional | :: | precision |
Presicion of Transform |
|
type(dtfft_effort_t), | intent(in), | optional | :: | effort |
How thoroughly |
|
type(dtfft_executor_t), | intent(in), | optional | :: | executor |
Type of External FFT Executor |
Performs single transposition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
type(*), | intent(inout), | target | :: | in(..) |
Incoming buffer of any rank and kind. Note that this buffer will be modified in GPU build |
|
type(*), | intent(inout), | target | :: | out(..) |
Resulting buffer of any rank and kind |
|
type(dtfft_transpose_t), | intent(in) | :: | transpose_type |
Type of transposition. |
||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Performs single transposition using type(c_ptr) pointers instead of buffers
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
type(c_ptr), | intent(in) | :: | in |
Incoming pointer. Note that values of this pointer will be modified in GPU build |
||
type(c_ptr), | intent(in) | :: | out |
Resulting pointer |
||
type(dtfft_transpose_t), | intent(in) | :: | transpose_type |
Type of transposition. |
||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Executes plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
type(*), | intent(inout), | target | :: | in(..) |
Incoming buffer of any rank and kind |
|
type(*), | intent(inout), | target | :: | out(..) |
Resulting buffer of any rank and kind |
|
type(dtfft_execute_t), | intent(in) | :: | execute_type |
Type of execution. |
||
type(*), | intent(inout), | optional, | target | :: | aux(..) |
Optional auxiliary buffer.
Size of buffer must be greater than value
returned by |
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Executes plan using type(c_ptr) pointers instead of buffers
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
type(c_ptr), | intent(in) | :: | in |
Incoming pointer. Note that values of this pointer will be modified in GPU build |
||
type(c_ptr), | intent(in) | :: | out |
Resulting pointer |
||
type(dtfft_execute_t), | intent(in) | :: | execute_type |
Type of execution. |
||
type(c_ptr), | intent(in) | :: | aux |
Optional auxiliary buffer.
Size of buffer must be greater than value
returned by |
||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Executes plan with specified auxiliary buffer
Type | Intent | Optional | 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 |
Destroys plan, frees all memory
Type | Intent | Optional | 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 |
Prints plan-related information to stdout
Type | Intent | Optional | 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 |
Returns CUDA stream associated with plan
Type | Intent | Optional | 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 |
Returns CUDA stream associated with plan
Type | Intent | Optional | 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 |
Obtain local starts and counts in real
and fourier
spaces
Type | Intent | Optional | 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 |
|
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 |
|
integer(kind=int32), | intent(out), | optional | :: | out_counts(:) |
Number of elements of local portion of data in |
|
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 |
Allocates abstract_executor with required FFT class and populates fft_mapping with similar FFT ids
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
type(dtfft_r2r_kind_t), | intent(in), | optional | :: | kinds(:) |
Kinds of R2R transform |
Checks if aux buffer was passed by user and if not will allocate one internally
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
type(c_ptr), | intent(in) | :: | aux |
Optional auxiliary buffer. |
R2R Plan Constructor
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_r2r_t), | intent(inout) | :: | self |
R2R Plan |
||
integer(kind=int32), | intent(in) | :: | dims(:) |
Global dimensions of transform |
||
type(dtfft_r2r_kind_t), | intent(in), | optional | :: | kinds(:) |
Kinds of R2R transform |
|
type(MPI_Comm), | intent(in), | optional | :: | comm |
Communicator |
|
type(dtfft_precision_t), | intent(in), | optional | :: | precision |
Presicion of Transform |
|
type(dtfft_effort_t), | intent(in), | optional | :: | effort |
How thoroughly |
|
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 |
C2C Plan Constructor
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_c2c_t), | intent(inout) | :: | self |
C2C Plan |
||
integer(kind=int32), | intent(in) | :: | dims(:) |
Global dimensions of transform |
||
type(MPI_Comm), | intent(in), | optional | :: | comm |
Communicator |
|
type(dtfft_precision_t), | intent(in), | optional | :: | precision |
Presicion of Transform |
|
type(dtfft_effort_t), | intent(in), | optional | :: | effort |
How thoroughly |
|
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 |
R2C Generic Plan Constructor
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_r2c_t), | intent(inout) | :: | self |
C2C Plan |
||
integer(kind=int32), | intent(in) | :: | dims(:) |
Global dimensions of transform |
||
type(dtfft_executor_t), | intent(in) | :: | executor |
Type of External FFT Executor |
||
type(MPI_Comm), | intent(in), | optional | :: | comm |
Communicator |
|
type(dtfft_precision_t), | intent(in), | optional | :: | precision |
Presicion of Transform |
|
type(dtfft_effort_t), | intent(in), | optional | :: | effort |
How thoroughly |
|
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional Error Code returned to user |
Allocates memory specific for this plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_bytes |
Number of bytes to allocate |
||
type(c_ptr), | intent(out) | :: | ptr |
Allocated pointer |
||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Allocates pointer of rank 1
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
real(kind=real32), | intent(out), | pointer | :: | ptr(:) | ||
integer(kind=int32), | intent(in), | optional | :: | lbound | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Allocates pointer of rank 2
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
real(kind=real32), | intent(out), | pointer | :: | ptr(:,:) | ||
integer(kind=int32), | intent(in) | :: | sizes(2) | |||
integer(kind=int32), | intent(in), | optional | :: | lbounds(2) | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Allocates pointer of rank 3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
real(kind=real32), | intent(out), | pointer | :: | ptr(:,:,:) | ||
integer(kind=int32), | intent(in) | :: | sizes(3) | |||
integer(kind=int32), | intent(in), | optional | :: | lbounds(3) | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Allocates pointer of rank 1
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
real(kind=real64), | intent(out), | pointer | :: | ptr(:) | ||
integer(kind=int32), | intent(in), | optional | :: | lbound | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Allocates pointer of rank 2
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
real(kind=real64), | intent(out), | pointer | :: | ptr(:,:) | ||
integer(kind=int32), | intent(in) | :: | sizes(2) | |||
integer(kind=int32), | intent(in), | optional | :: | lbounds(2) | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Allocates pointer of rank 3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
real(kind=real64), | intent(out), | pointer | :: | ptr(:,:,:) | ||
integer(kind=int32), | intent(in) | :: | sizes(3) | |||
integer(kind=int32), | intent(in), | optional | :: | lbounds(3) | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Allocates pointer of rank 1
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
complex(kind=real32), | intent(out), | pointer | :: | ptr(:) | ||
integer(kind=int32), | intent(in), | optional | :: | lbound | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Allocates pointer of rank 2
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
complex(kind=real32), | intent(out), | pointer | :: | ptr(:,:) | ||
integer(kind=int32), | intent(in) | :: | sizes(2) | |||
integer(kind=int32), | intent(in), | optional | :: | lbounds(2) | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Allocates pointer of rank 3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
complex(kind=real32), | intent(out), | pointer | :: | ptr(:,:,:) | ||
integer(kind=int32), | intent(in) | :: | sizes(3) | |||
integer(kind=int32), | intent(in), | optional | :: | lbounds(3) | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Allocates pointer of rank 1
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
complex(kind=real64), | intent(out), | pointer | :: | ptr(:) | ||
integer(kind=int32), | intent(in), | optional | :: | lbound | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Allocates pointer of rank 2
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
complex(kind=real64), | intent(out), | pointer | :: | ptr(:,:) | ||
integer(kind=int32), | intent(in) | :: | sizes(2) | |||
integer(kind=int32), | intent(in), | optional | :: | lbounds(2) | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Allocates pointer of rank 3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dtfft_plan_t), | intent(inout) | :: | self |
Abstract plan |
||
integer(kind=int64), | intent(in) | :: | alloc_size |
Number of elements to allocate |
||
complex(kind=real64), | intent(out), | pointer | :: | ptr(:,:,:) | ||
integer(kind=int32), | intent(in) | :: | sizes(3) | |||
integer(kind=int32), | intent(in), | optional | :: | lbounds(3) | ||
integer(kind=int32), | intent(out), | optional | :: | error_code |
Optional error code returned to user |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |
Frees previously allocated memory specific for this plan
Type | Intent | Optional | 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 |