nvmath.device.FFTOptions

class nvmath.device.FFTOptions(size, precision, fft_type, code_type, execution, *, direction=None, ffts_per_block=None, elements_per_thread=None, real_fft_options=None)[source]

A class that encapsulates a partial FFT device function. A partial device function can be queried for available or optimal values for the some knobs (such as leading_dimension or block_dim). It does not contain a compiled, ready-to-use, device function until finalized using create().

Parameters:
  • size (int) – The size of the FFT to calculate.

  • precision (str) – The computation precision specified as a numpy float dtype, currently supports numpy.float16, numpy.float32 and numpy.float64.

  • fft_type (str) – A string specifying the type of FFT operation, can be 'c2c', 'c2r' or 'r2c'.

  • code_type (CodeType) – The target GPU code and compute-capability.

  • execution (str) – A string specifying the execution method, can be 'Block' or 'Thread'.

  • direction (str) – A string specifying the direction of FFT, can be 'forward' or 'inverse'. If not provided, will be 'forward' if complex-to-real FFT is specified and 'inverse' if real-to-complex FFT is specified.

  • ffts_per_block (int) – The number of FFTs calculated per CUDA block, optional. The default is 1. Alternatively, if provided as 'suggested', will be set to a suggested value

  • elements_per_thread (int) – The number of elements per thread, optional. The default is 1. Alternatively, if provided as 'suggested', will be set to a suggested value.

  • real_fft_options (dict) –

    A dictionary specifying the options for real FFT operation, optional. User may specify the following options in the dictionary:

    • 'complex_layout', currently supports 'natural', 'packed', and 'full'.

    • 'real_mode', currently supports 'normal' and 'folded.

Note

The class is not meant to used directly with its constructor. Users are instead advised to use fft() create the object.

See also

The attributes of this class provide a 1:1 mapping with the CUDA C++ cuFFTDx APIs. For further details, please refer to cuFFTDx documentation.

Methods

__init__(size, precision, fft_type, code_type, execution, *, direction=None, ffts_per_block=None, elements_per_thread=None, real_fft_options=None)[source]
create(**kwargs)[source]
valid(*knobs)[source]

Attributes

code_type
direction
elements_per_thread
execution
fft_type
ffts_per_block
precision
real_fft_options
size