FFTW¶
Usage
use FFTW;
Submodules
-
config param
isFFTW_MKL
= false¶ Set this to true if you are using the Intel MKL FFTW wrappers
-
config param
autoInitFFTW_MT
= false¶ Set this config parameter to true to automatically initialize FFTW for thread support, and setup FFTW to generate multi-threaded plans (with the number of threads equal to maxTaskPar in Chapel).
If you keep the default value of false, then call
init_FFTW_MT()
to initialize thread-support for Chapel.Note that
plan_with_nthreads
can be called at any time and changes the number of threads used by plans created after the call.
-
config param
noFFTWsizeChecks
= false¶ Controls execution-time array size checks in the FFTW
plan_dft
routines (set to true to disable checks).
-
type
fftw_plan
¶ An opaque type used to store and reuse FFTW plans across multiple routines.
-
type
FFTW_Flag
= c_uint¶ Type alias for FFTW flags
-
type
FFTW_Direction
= c_int¶ Type alias for FFT directions
-
type
FFTW_R2R
= c_int¶ Type alias for FFTW R2R type
-
proc
plan_dft
(input: [?Din] complex(128), output: [?Dout] complex(128), sign: FFTW_Direction, flags: FFTW_Flag): fftw_plan¶ Creates a plan for an out-of-place complex-to-complex DFT.
Arguments: - input : [] complex(128) – The input array, which can be of any rank
- output : [] complex(128) – The output array, whose size and shape must match the input array’s
- sign : FFTW_Direction –
FFTW_FORWARD
orFFTW_BACKWARD
- flags : FFTW_Flag – the bitwise-or of any planning-rigor or algorithm-restriction flags that should be used in creating the plan (e.g.,
FFTW_MEASURE
|
FFTW_PRESERVE_INPUT
)
Returns: The
fftw_plan
representing the resulting plan
-
proc
plan_dft
(arr: [] complex(128), sign: FFTW_Direction, flags: FFTW_Flag): fftw_plan Creates a plan for an in-place complex-to-complex DFT.
Arguments: - arr : [] complex(128) – The array to use as the in-place input/output array.
- sign : FFTW_Direction –
FFTW_FORWARD
orFFTW_BACKWARD
- flags : FFTW_Flag – the bitwise-or of any planning-rigor or algorithm-restriction flags that should be used in creating the plan (e.g.,
FFTW_MEASURE
|
FFTW_PRESERVE_INPUT
)
Returns: The
fftw_plan
representing the resulting plan
-
proc
plan_dft_r2c
(input: [?Din] real(64), output: [?Dout] complex(128), flags: FFTW_Flag): fftw_plan¶ Create a plan for a real-to-complex, out-of-place DFT.
Arguments: - input : [] real(64) – The input array, which can be of any rank
- output : [] complex(128) – The output array, whose size and shape must match the input array’s, except for the leading dimension which should be n/2 + 1, where n is the size of the input array’s leading dimension. See the FFTW documentation for more information.
- flags : FFTW_Flag – the bitwise-or of any planning-rigor or algorithm-restriction flags that should be used in creating the plan (e.g.,
FFTW_MEASURE
|
FFTW_PRESERVE_INPUT
)
Returns: The
fftw_plan
representing the resulting plan
-
proc
plan_dft_r2c
(realDom: domain, arr: [?D] ?t, flags: FFTW_Flag): fftw_plan Create a plan for a real-to-complex, in-place DFT.
Arguments: - realDom : domain – Describes the indices of the ‘real’ view of the array
- arr : [] T where T is of type real(64) or complex(128) –
The array to be used as the in-place input/output array. If passing in an array of real elements, the leading dimension of the array must be padded to store 2(n/2 + 1) elements, where n is the size of the corresponding dimension of realDom. If passing in an array of complex elements, the leading dimension should be (n/2 + 1). See the FFTW documentation for more information.
- flags : FFTW_Flag – the bitwise-or of any planning-rigor or algorithm-restriction flags that should be used in creating the plan (e.g.,
FFTW_MEASURE
|
FFTW_PRESERVE_INPUT
)
Returns: The
fftw_plan
representing the resulting plan
-
proc
plan_dft_c2r
(input: [?Din] complex(128), output: [?Dout] real(64), flags: FFTW_Flag): fftw_plan¶ Create a plan for a complex-to-real, out-of-place DFT.
Arguments: - input : [] complex(128) –
The input array, whose size and shape must match the output array’s, except for the leading dimension which should be n/2 + 1, where n is the size of the output array’s leading dimension. See the FFTW documentation for more information.
- output : [] real(64) – The output array
- flags : FFTW_Flag – the bitwise-or of any planning-rigor or algorithm-restriction flags that should be used in creating the plan (e.g.,
FFTW_MEASURE
|
FFTW_PRESERVE_INPUT
)
Returns: The
fftw_plan
representing the resulting plan- input : [] complex(128) –
-
proc
plan_dft_c2r
(realDom: domain, arr: [?D] ?t, flags: FFTW_Flag): fftw_plan Create a plan for a complex-to-real, in-place DFT.
Arguments: - realDom : domain – Describes the indices of the ‘real’ view of the array
- arr : [] T where T is of type real(64) or complex(128) –
The array to be used as the in-place input/output array. If passing in an array of real elements, the leading dimension of the array must be padded to store 2(n/2 + 1) elements, where n is the size of the corresponding dimension of realDom. If passing in an array of complex elements, the leading dimension should be (n/2 + 1). See the FFTW documentation for more information.
- flags : FFTW_Flag – the bitwise-or of any planning-rigor or algorithm-restriction flags that should be used in creating the plan (e.g.,
FFTW_MEASURE
|
FFTW_PRESERVE_INPUT
)
Returns: The
fftw_plan
representing the resulting plan
-
proc
execute
(const plan: fftw_plan)¶ Execute an FFTW plan.
Arguments: plan : fftw_plan – The plan to execute, as computed by a plan_dft*() routine.
-
proc
destroy_plan
(plan: fftw_plan)¶ Destroy an FFTW plan.
Arguments: plan : fftw_plan – The plan to destroy
-
proc
cleanup
()¶ Clean up FFTW overall.
-
const
FFTW_FORWARD
: FFTW_Direction¶ Request a forward transform (i.e., use a negative exponent in the transform).
-
const
FFTW_BACKWARD
: FFTW_Direction¶ Request a backward transform (i.e., use a positive exponent in the transform).
-
const
FFTW_ESTIMATE
: FFTW_Flag¶ Specify that a simple heuristic should be used to pick a plan quickly. This will prevent the input/output arrays from being overwritten during planning.
-
const
FFTW_MEASURE
: FFTW_Flag¶
-
const
FFTW_PATIENT
: FFTW_Flag¶ Specify that FFTW should expend a greater effort finding an optimized plan.
-
const
FFTW_EXHAUSTIVE
: FFTW_Flag¶ Specify that FFTW should expend an even greater effort finding an optimized plan.
-
const
FFTW_WISDOM_ONLY
: FFTW_Flag¶ This is a special planning mode that is useful for querying whether wisdom is available. When using it, the plan is only created when wisdom is available for the given problem; otherwise a null plan is returned. This can be combined with other flags to create a plan if the wisdom available was created in that mode (e.g.,
FFTW_WISDOM_ONLY
|
FFTW_PATIENT
). For more details on this flag and the previous four, refer to Section 4.3.2 of the FFTW manual
-
const
FFTW_DESTROY_INPUT
: FFTW_Flag¶
-
const
FFTW_PRESERVE_INPUT
: FFTW_Flag¶
-
const
FFTW_UNALIGNED
: FFTW_Flag¶
-
const
FFTW_R2HC
: FFTW_R2R¶ Use the halfcomplex form of array storage
-
const
FFTW_HC2R
: FFTW_R2R¶
-
const
FFTW_DHT
: FFTW_R2R¶ Discrete Hartley Transforms.
-
const
FFTW_REDFT00
: FFTW_R2R¶ Specify the type of discrete cosine and discrete sine transforms to use.
-
const
FFTW_REDFT01
: FFTW_R2R¶
-
const
FFTW_REDFT10
: FFTW_R2R¶
-
const
FFTW_REDFT11
: FFTW_R2R¶
-
const
FFTW_RODFT00
: FFTW_R2R¶
-
const
FFTW_RODFT01
: FFTW_R2R¶
-
const
FFTW_RODFT10
: FFTW_R2R¶
-
const
FFTW_RODFT11
: FFTW_R2R¶
-
proc
init_FFTW_MT
()¶ Initialize the FFTW module to support multithreading. This has the effect of calling the FFTW C routine
fftw_init_threads()
on all locales, halting the Chapel program if any of the calls generate an error.
-
proc
plan_with_nthreads
(nthreads: int = 0)¶ Register the number of threads to use for multi-threaded FFTW plans on all locales. If fewer than one thread is requested, each locale will default to
here.maxTaskPar
threads. Note that this routine can be called multiple times, overwriting previous values.Arguments: nthreads : int – The number of threads to use.
-
proc
cleanup_threads
()¶ Clean up the memory used by FFTW threads on all locales.