This module describes MKL based FFT Executor: mkl_executor
https://software.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-fortran/top/fourier-transform-functions/fft-functions.html
MKL FFT Executor
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(c_ptr), | public | :: | plan_forward |
Pointer to forward plan |
|||
type(c_ptr), | public | :: | plan_backward |
Pointer to backward plan |
|||
logical, | public | :: | is_inverse_copied | = | .false. |
Is inverse plan copied? |
|
logical, | private | :: | need_reconfigure |
Needed for R2C plans |
|||
integer(kind=c_long), | private, | allocatable | :: | istrides(:) |
Input strides. Needed for R2C plans to reconfigure plan |
||
integer(kind=c_long), | private, | allocatable | :: | ostrides(:) |
Output strides. Needed for R2C plans to reconfigure plan |
||
integer(kind=int32), | private | :: | idist |
Input distance between the first data elements of consecutive data sets |
|||
integer(kind=int32), | private | :: | odist |
Output distance between the first data elements of consecutive data sets |
procedure, public, non_overridable, pass(self) :: create | ../../ Creates FFT plan |
procedure, public, non_overridable, pass(self) :: execute | ../../ Executes plan |
procedure, public, non_overridable, pass(self) :: destroy | ../../ Destroys plan |
procedure, public :: create_private => create | ../../ Creates FFT plan via MKL DFTI Interface |
procedure, public :: execute_private => execute | ../../ Executes MKL plan |
procedure, public :: destroy_private => destroy | ../../ Destroys MKL plan |
procedure, public, nopass :: mem_alloc | ../../ Allocates MKL memory |
procedure, public, nopass :: mem_free | ../../ Frees MKL aligned memory |
Creates general MKL plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int8), | intent(in) | :: | fft_rank |
Rank of fft: 1 or 2 |
||
integer(kind=c_long), | intent(in) | :: | fft_sizes(:) |
Dimensions of transform |
||
integer(kind=int32), | intent(in) | :: | mkl_precision |
MKL Precision |
||
integer(kind=int32), | intent(in) | :: | forward_domain |
C2C or R2C flag |
||
integer(kind=int32), | intent(in) | :: | how_many |
Sets DFTI_NUMBER_OF_TRANSFORMS |
||
integer(kind=int32), | intent(in) | :: | idist |
Sets DFTI_INPUT_DISTANCE |
||
integer(kind=int32), | intent(in) | :: | odist |
Sets DFTI_OUTPUT_DISTANCE |
||
type(c_ptr), | intent(inout) | :: | plan |
Resulting plan |
Creates FFT plan via MKL DFTI Interface
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(mkl_executor), | intent(inout) | :: | self |
MKL FFT Executor |
||
integer(kind=int8), | intent(in) | :: | fft_rank |
Rank of fft: 1 or 2 |
||
integer(kind=int8), | intent(in) | :: | fft_type |
Type of fft: r2r, r2c, c2c |
||
type(dtfft_precision_t), | intent(in) | :: | precision |
Precision of fft: DTFFT_SINGLE or DTFFT_DOUBLE |
||
integer(kind=int32), | intent(in) | :: | idist |
Distance between the first element of two consecutive signals in a batch of the input data. |
||
integer(kind=int32), | intent(in) | :: | odist |
Distance between the first element of two consecutive signals in a batch of the output data. |
||
integer(kind=int32), | intent(in) | :: | how_many |
Number of transforms to create |
||
integer(kind=int32), | intent(in) | :: | fft_sizes(:) |
Dimensions of transform |
||
integer(kind=int32), | intent(in) | :: | inembed(:) |
Storage dimensions of the input data in memory. |
||
integer(kind=int32), | intent(in) | :: | onembed(:) |
Storage dimensions of the output data in memory. |
||
integer(kind=int32), | intent(inout) | :: | error_code |
Error code to be returned to user |
||
type(dtfft_r2r_kind_t), | intent(in), | optional | :: | r2r_kinds(:) |
Kinds of r2r transform |
Executes MKL plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(mkl_executor), | intent(in) | :: | self |
MKL FFT Executor |
||
type(c_ptr), | intent(in) | :: | a |
Source pointer |
||
type(c_ptr), | intent(in) | :: | b |
Target pointer |
||
integer(kind=int8), | intent(in) | :: | sign |
Sign of transform |
Destroys MKL plan
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(mkl_executor), | intent(inout) | :: | self |
MKL FFT Executor |
Allocates MKL memory
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int64), | intent(in) | :: | alloc_bytes |
Number of bytes to allocate |
||
type(c_ptr), | intent(out) | :: | ptr |
Allocated pointer |
Frees MKL aligned memory
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | intent(in) | :: | ptr |
Pointer to free |