Skip to main content
Ctrl+K
Logo image
  • Introduction
  • Software Architecture
  • SYCL
  • oneDPL
    • Namespaces
    • Parallel API
    • SYCL Kernels API
  • oneDNN
    • Introduction
    • Conventions
    • Execution Model
    • Data model
      • Data types
        • Bfloat16
        • Int8
      • Memory
        • Memory Formats
        • Memory Descriptors and Objects
    • Primitives
      • Common Definitions
      • Attributes
        • Post-ops
      • Batch Normalization
      • Binary
      • Concat
      • Convolution and Deconvolution
      • Elementwise
      • Inner Product
      • Layer normalization
      • Local Response Normalization
      • Matrix Multiplication
      • Pooling
      • Prelu
      • Reduction
      • Reorder
      • Resampling
      • RNN
      • Shuffle
      • Softmax
      • Sum
    • Graph extension
      • Common Definitions
      • Programming Model
      • Data Model
      • Operation Set
        • Abs
        • AbsBackward
        • Add
        • AvgPool
        • AvgPoolBackward
        • BatchNormForwardTraining
        • BatchNormInference
        • BatchNormTrainingBackward
        • BiasAdd
        • BiasAddBackward
        • Clamp
        • ClampBackward
        • Concat
        • ConvTranspose
        • ConvTransposeBackwardData
        • ConvTransposeBackwardWeights
        • Convolution
        • ConvolutionBackwardData
        • ConvolutionBackwardWeights
        • Dequantize
        • Divide
        • DynamicDequantize
        • DynamicQuantize
        • Elu
        • EluBackward
        • End
        • Exp
        • GELU
        • GELUBackward
        • HardSigmoid
        • HardSigmoidBackward
        • HardSwish
        • HardSwishBackward
        • Interpolate
        • InterpolateBackward
        • LayerNorm
        • LayerNormBackward
        • LeakyReLU
        • Log
        • LogSoftmax
        • LogSoftmaxBackward
        • MatMul
        • MaxPool
        • MaxPoolBackward
        • Maximum
        • Minimum
        • Mish
        • MishBackward
        • Multiply
        • Pow
        • PReLU
        • PReLUBackward
        • Quantize
        • ReLU
        • ReLUBackward
        • Reciprocal
        • ReduceL1
        • ReduceL2
        • ReduceMax
        • ReduceMean
        • ReduceMin
        • ReduceProd
        • ReduceSum
        • Reorder
        • Round
        • Select
        • Sigmoid
        • SigmoidBackward
        • SoftPlus
        • SoftPlusBackward
        • SoftMax
        • SoftMaxBackward
        • Sqrt
        • SqrtBackward
        • Square
        • SquaredDifference
        • StaticReshape
        • StaticTranspose
        • Subtract
        • Tanh
        • TanhBackward
        • TypeCast
        • Wildcard
  • oneCCL
    • Introduction
    • Namespaces
    • Current Version of this oneCCL Specification
    • Definitions
      • oneCCL Concepts
      • Communication Operations
        • Datatypes
        • Reductions
        • Collective Operations
        • Operation Attributes
        • Operation Progress Tracking
      • Error handling
    • Programming Model
      • Generic Workflow
  • Level Zero
  • oneDAL
    • Introduction
    • Glossary
    • Mathematical Notations
    • Programming model
      • End-to-end example
      • Descriptors
      • Operations
        • Supported operations
      • Computational modes
    • Common Interface
      • Current Version of this oneDAL Specification
      • Header files
      • Error handling
      • Common type definitions
    • Data management
      • Array
      • Accessors
        • Column accessor
        • Row accessor
      • Data Sources
        • CSV data source
      • Tables
        • Homogeneous table
    • Algorithms
      • Clustering
        • K-Means
        • K-Means initialization
      • Nearest Neighbors (kNN)
        • k-Nearest Neighbors Classification (k-NN)
      • Decomposition
        • Principal Components Analysis (PCA)
    • Appendix
      • k-d Tree
    • Bibliography
  • oneTBB
    • General Information
      • Introduction
      • Notational Conventions
      • Identifiers
      • Named Requirements
        • Range
        • Splittable
        • ParallelForBody
        • ParallelForFunc
        • ParallelForIndex
        • ParallelReduceBody
        • ParallelReduceFunc
        • ParallelReduceReduction
        • ParallelForEachBody
        • ContainerBasedSequence
        • ParallelScanBody
        • ParallelScanCombine
        • ParallelScanFunc
        • BlockedRangeValue
        • FilterBody
        • Mutex
        • ReaderWriterMutex
        • HashCompare
        • ContainerRange
        • SuspendFunc
        • AsyncNodeBody
        • ContinueNodeBody
        • GatewayType
        • FunctionNodeBody
        • JoinNodeFunctionObject
        • InputNodeBody
        • MultifunctionNodeBody
        • Sequencer
      • Thread Safety
    • oneTBB Interfaces
      • Configuration
        • Namespaces
        • Version Information
        • Enabling Debugging Features
        • Feature Macros
      • Algorithms
        • collaborative_call_once
        • parallel_for
        • parallel_reduce
        • parallel_deterministic_reduce
        • parallel_scan
        • parallel_for_each
        • parallel_invoke
        • parallel_pipeline
        • parallel_sort
        • blocked_range
        • blocked_range2d
        • blocked_range3d
        • auto_partitioner
        • affinity_partitioner
        • static_partitioner
        • simple_partitioner
        • proportional split
        • split
      • Flow Graph
        • graph
        • graph_node
        • sender
        • receiver
        • Forwarding and Buffering
        • continue_node
        • function_node
        • input_node
        • multifunction_node
        • async_node
        • Function Nodes Policies
        • Nodes Priorities
        • Predefined Concurrency Limits
        • copy_body
        • overwrite_node
        • write_once_node
        • buffer_node
        • queue_node
        • priority_queue_node
        • sequencer_node
        • limiter_node
        • broadcast_node
        • join_node
        • split_node
        • indexer_node
        • composite_node
        • input_port
        • output_port
        • make_edge
        • remove_edge
        • continue_msg
        • tagged_msg
        • Dependency Flow Graph Example
        • Message Flow Graph Example
      • Task Scheduler
        • task_group_context
        • global_control
        • Resumable tasks
        • task_scheduler_handle
        • task_group
        • task_group_status
        • task_handle
        • task_arena
        • this_task_arena
        • task_scheduler_observer
        • attach tag type
      • Containers
        • concurrent_vector
        • concurrent_queue
        • concurrent_bounded_queue
        • concurrent_priority_queue
        • concurrent_hash_map
        • concurrent_unordered_map
        • concurrent_unordered_multimap
        • concurrent_unordered_set
        • concurrent_unordered_multiset
        • concurrent_map
        • concurrent_multimap
        • concurrent_set
        • concurrent_multiset
        • tbb_hash_compare
        • Node handles
      • Thread Local Storage
        • combinable
        • enumerable_thread_specific
        • flattened2d
    • oneTBB Auxiliary Interfaces
      • Memory Allocation
        • tbb_allocator
        • scalable_allocator
        • cache_aligned_allocator
        • cache_aligned_resource
        • scalable_memory_resource
        • C Interface to Scalable Allocator
      • Mutual Exclusion
        • mutex
        • rw_mutex
        • spin_mutex
        • spin_rw_mutex
        • speculative_spin_mutex
        • speculative_spin_rw_mutex
        • queuing_mutex
        • queuing_rw_mutex
        • null_mutex
        • null_rw_mutex
      • Timing
        • tick_count class
      • info Namespace
    • oneTBB Deprecated Interfaces
      • task_arena::attach
  • oneMKL
    • oneMKL Architecture
    • oneMKL Domains
      • Matrix Storage
      • Scalar Arguments in BLAS
      • BLAS Routines
        • BLAS Level 1 Routines
        • BLAS Level 2 Routines
        • BLAS Level 3 Routines
        • BLAS-like Extensions
      • LAPACK Routines
        • geqrf
        • geqrf_scratchpad_size
        • gerqf
        • gerqf_scratchpad_size
        • getrf
        • getrf_scratchpad_size
        • getri
        • getri_scratchpad_size
        • getrs
        • getrs_scratchpad_size
        • hetrf
        • hetrf_scratchpad_size
        • orgqr
        • orgqr_scratchpad_size
        • ormqr
        • ormqr_scratchpad_size
        • ormrq
        • ormrq_scratchpad_size
        • potrf
        • potrf_scratchpad_size
        • potri
        • potri_scratchpad_size
        • potrs
        • potrs_scratchpad_size
        • sytrf
        • sytrf_scratchpad_size
        • trtrs
        • trtrs_scratchpad_size
        • ungqr
        • ungqr_scratchpad_size
        • unmqr
        • unmqr_scratchpad_size
        • unmrq
        • unmrq_scratchpad_size
        • gebrd
        • gebrd_scratchpad_size
        • gesvd
        • gesvd_scratchpad_size
        • heevd
        • heevd_scratchpad_size
        • hegvd
        • hegvd_scratchpad_size
        • hetrd
        • hetrd_scratchpad_size
        • orgbr
        • orgbr_scratchpad_size
        • orgtr
        • orgtr_scratchpad_size
        • ormtr
        • ormtr_scratchpad_size
        • syevd
        • syevd_scratchpad_size
        • sygvd
        • sygvd_scratchpad_size
        • sytrd
        • sytrd_scratchpad_size
        • ungbr
        • ungbr_scratchpad_size
        • ungtr
        • ungtr_scratchpad_size
        • unmtr
        • unmtr_scratchpad_size
        • geqrf_batch
        • geqrf_batch_scratchpad_size
        • getrf_batch
        • getrf_batch_scratchpad_size
        • getri_batch
        • getri_batch_scratchpad_size
        • getrs_batch
        • getrs_batch_scratchpad_size
        • orgqr_batch
        • orgqr_batch_scratchpad_size
        • potrf_batch
        • potrf_batch_scratchpad_size
        • potrs_batch
        • potrs_batch_scratchpad_size
        • ungqr_batch
        • ungqr_batch_scratchpad_size
      • Sparse BLAS
        • init_matrix_handle
        • release_matrix_handle
        • set_csr_data
        • gemm
        • optimize_gemm
        • gemv
        • gemvdot
        • optimize_gemv
        • symv
        • optimize_symv
        • trmv
        • optimize_trmv
        • trsv
        • optimize_trsv
        • Supported Types
        • Sparse storage formats
      • Discrete Fourier Transform Functions
        • The descriptor class
        • DFT-related scoped enumeration types
        • compute_forward
        • compute_backward
      • Random Number Generators (RNG)
        • Random Number Generators Host Routines
        • Random Number Generators Device Routines
      • Summary Statistics
        • oneMKL Summary Statistics Usage Model
        • dataset
        • Summary Statistics Routines
        • Service Routines
      • Vector Math
        • Special Value Notations
        • VM Mathematical Functions
        • VM Service Functions
        • Exceptions
        • Bibliography
    • oneMKL Appendix
  • Releases
  • Legal Notices and Disclaimers
  • Suggest edit
  • Open issue
  • .rst

DFT-related scoped enumeration types

Contents

  • precision
  • domain
  • config_param
  • config_value

DFT-related scoped enumeration types#

The following scoped enumeration types, defined in the oneapi::mkl::dft namespace, are used for constructing and configuring objects of the descriptor class consistently with the DFT(s) they are meant to define.

Scoped enumeration type

Description

precision

Represents the precision of the floating-point data format and of the floating-point arithmetic to be used for the desired DFT calculations. A template parameter prec of this type is used for the descriptor class.

domain

Represents the type of forward domain for the desired DFT(s). A template parameter dom of this type is used for the descriptor class.

config_param

Represents configuration parameters for objects of the descriptor class. The configuration values associated with the configuration parameters can be retrieved (resp. set, for writable parameters) via the object’s get_value (resp. set_value) member function.

config_value

Represents the possible configuration values for some of the configuration parameters that may take only a few determined, non-numeric values.

precision#

This scoped enumeration type represents the precision of the floating-point format to be used for the desired DFT(s). The same precision is to be used for the user-provided data, the computation being carried out by oneMKL and the results delivered by oneMKL.

Syntax

enum class precision {
   SINGLE,
   DOUBLE
};

Value

Description

SINGLE

Single-precision floating-point format (FP32) is used for data representation and arithmetic operations.

DOUBLE

Double-precision floating-point format (FP64) is used for data representation and arithmetic operations.

domain#

This scoped enumeration type represents the type of forward domain for the desired DFTs (as explained in the introduction, the backward domain type is always complex).

Syntax

enum class domain {
   REAL,
   COMPLEX
};

Value

Description

REAL

The forward domain is the set of real \(d\)-dimensional periodic sequences.

COMPLEX

The forward domain is the set of complex \(d\)-dimensional periodic sequences.

config_param#

This scoped enumeration type represents configuration parameters for objects of the descriptor class.

enum class config_param {
   // read-only parameters:
   FORWARD_DOMAIN,
   DIMENSION,
   LENGTHS,
   PRECISION,
   COMMIT_STATUS,
   // writable parameters:
   FORWARD_SCALE,
   BACKWARD_SCALE,

   NUMBER_OF_TRANSFORMS,

   COMPLEX_STORAGE,

   PLACEMENT,

   FWD_STRIDES,
   BWD_STRIDES,
   INPUT_STRIDES, // deprecated
   OUTPUT_STRIDES, // deprecated

   FWD_DISTANCE,
   BWD_DISTANCE
};

Configuration parameters represented by config_param::FORWARD_DOMAIN and config_param::PRECISION are associated with configuration values of type domain and precision respectively. Other configuration parameters are associated with configuration values of type config_value or of a native type like std::int64_t, std::vector<std::int64_t>, float or double. This is further specified in the following table.

Value of config_param

Represented configuration parameter(s)

Type of associated configuration value
[default value]

FORWARD_DOMAIN

Type of forward domain, set at construction time as the specialization value of domain template parameter dom. This parameter is read-only.

domain
[dom]

DIMENSION

Value of the dimension \(d\) of the desired DFTs, set at construction time. This parameter is read-only.

std::int64_t
[\(d\)]

LENGTHS

Values \(\lbrace n_1, \ldots, n_d\rbrace\) of the periods (or “lengths”) of the desired DFT, set at construction time. This parameter is read-only.

std::vector<std::int64_t> of size \(d\) or, if \(d = 1\), std::int64_t
[std::vector<int64_t>({n_1,...,n_d})]

PRECISION

Floating-point precision to be considered by and used for the DFT calculation(s), set at construction time as the specialization value of precision template parameter prec. This parameter is read-only.

precision
[prec]

COMMIT_STATUS

Status flag indicating whether the object is ready for computations after a successful call to commit. This parameter is read-only.

config_value (possible values are self-explanatory config_value::COMMITTED or config_value::UNCOMMITTED).
[config_value::UNCOMMITTED]

FORWARD_SCALE

Value of \(\sigma\) for the forward DFT.

float (resp. double) for single-precision (resp. double-precision) descriptors
[1.0]

BACKWARD_SCALE

Value of \(\sigma\) for the backward DFT.

float (resp. double) for single-precision (resp. double-precision) descriptors
[1.0]

NUMBER_OF_TRANSFORMS

Value of \(M\). This is relevant (and must be set) for batched DFT(s), i.e., if \(M > 1\).

std::int64_t
[1]

COMPLEX_STORAGE

Data storage type used (relevant for complex descriptors only).

config_value (possible values are config_value::COMPLEX_COMPLEX or config_value::REAL_REAL)
[config_value::COMPLEX_COMPLEX]

PLACEMENT

Parameter specifying whether the DFT calculations should be done in-place (results overwriting the input data) or out-of-place (input and output in separate data containers having no common elements).
Note: even for out-of-place configurations, some implementations may not preserve the original input data.
config_value (possible values are self-explanatory config_value::INPLACE or config_value::NOT_INPLACE)
[config_value::INPLACE]

FWD_STRIDES

Offset and strides defining the layout within a given data sequence in the forward domain.

std::vector<std::int64_t> of size \((d+1)\)
[defined here]

BWD_STRIDES

Offset and strides defining the layout within a given data sequence in the backward domain.

std::vector<std::int64_t> of size \((d+1)\)
[defined here]

INPUT_STRIDES (deprecated)

Offset and strides defining the layout within a given input data sequence.

std::vector<std::int64_t> of size \((d+1)\)
[std::vector<std::int64_t>(d+1, 0)]

OUTPUT_STRIDES (deprecated)

Offset and strides defining the layout within a given output data sequence.

std::vector<std::int64_t> of size \((d+1)\)
[std::vector<std::int64_t>(d+1, 0)]

FWD_DISTANCE

Distance in number of elements of implicitly-assumed data type between forward-domain entries \(\left(\cdot\right)^{m}_{k_1, k_2, \ldots, k_d}\) and \(\left(\cdot\right)^{m + 1}_{k_1, k_2, \ldots, k_d}\) for all \(0\leq m < M - 1\) and \(\left(k_1, k_2, \ldots, k_d\right)\) in valid range. This is relevant (and must be set) for batched DFT(s), i.e., if \(M > 1\).

std::int64_t
[0]

BWD_DISTANCE

Distance in number of elements of implicitly-assumed data type between backward-domain entries \(\left(\cdot\right)^{m}_{k_1, k_2, \ldots, k_d}\) and \(\left(\cdot\right)^{m + 1}_{k_1, k_2, \ldots, k_d}\) for all \(0\leq m < M - 1\) and \(\left(k_1, k_2, \ldots, k_d\right)\) in valid range. This is relevant (and must be set) for batched DFT(s), i.e., if \(M > 1\).

std::int64_t
[0]

config_value#

This scoped enumeration type represents possible non-numeric configuration values associated with some configuration parameters.

enum class config_value {
   // for config_param::COMMIT_STATUS
   COMMITTED,
   UNCOMMITTED,

   // for config_param::COMPLEX_STORAGE,
   COMPLEX_COMPLEX,
   REAL_REAL,

   // for config_param::PLACEMENT
   INPLACE,
   NOT_INPLACE
};

Parent topic: Discrete Fourier Transform Functions

previous

The descriptor class

next

Configuration of Data Layouts

Contents
  • precision
  • domain
  • config_param
  • config_value

© Copyright 2022, Intel Corporation.