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 Only 3D plan. When .true., then data is distributed only Z direction and it creates a possibility for optimization:
For CUDA build this optimization means single CUDA kernel that tranposes data directly from X to Z |
|
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 |
Performs single transposition
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
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
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
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 |
Destroys plan
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 |
Returns local starts and counts in real
and fourier
spaces
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 |
Wrapper around get_local_sizes
to obtain number of elements only
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
Returns logical value is Z-slab optimization is enabled
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
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.
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
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 |
Prints plan details
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 |
Allocates memory for type(c_ptr)
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 |
Allocates memory specific for this plan
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 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=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 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=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 |
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 |
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 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=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 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=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 |
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 for type(c_ptr)
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 |
Frees previously allocated memory specific for this plan
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 |
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 |
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 |
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 |
Returns plan execution platform
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
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 |
Returns CUDA stream associated with plan
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 |
Returns CUDA stream associated with plan
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
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 |
Executes plan
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 |
Check arguments provided to create
subroutines
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 core
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 |
Allocates fft_executor
classes
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 and if not will allocate one internally
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. |
Allocates memory for 1d real32 pointer
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 memory for 1d real64 pointer
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 memory for 2d real32 pointer
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 memory for 2d real64 pointer
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 memory for 2d real32 pointer
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 |
Allocates memory for 2d real64 pointer
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 |
Allocates memory for 1d complex32 pointer
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 memory for 1d complex64 pointer
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 memory for 2d complex32 pointer
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 memory for 2d complex64 pointer
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 memory for 3d complex32 pointer
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 |
Allocates memory for 3d complex64 pointer
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 real32 1d pointer
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 real64 1d pointer
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 real32 2d pointer
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 real64 2d pointer
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 real32 3d pointer
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 real64 3d pointer
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 complex32 1d pointer
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 complex64 1d pointer
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 complex32 2d pointer
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 complex64 2d pointer
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 complex32 3d pointer
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 complex64 3d pointer
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 |