Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Convolution and Correlation Parameters

Basic parameters held by the task descriptor are assigned values when the task object is created, copied, or modified by task editors. Parameters of the correlation or convolution task are initially set up by task constructors when the task object is created. Parameter changes or additional settings are made by task editors. More parameters which define location of the data being convolved need to be specified when the task execution routine is invoked.

According to how the parameters are passed or assigned values, all of them can be categorized as either explicit (directly passed as routine parameters when a task object is created or executed) or optional (assigned some default or implicit values during task construction).

The following table lists all applicable parameters used in the Intel® oneAPI Math Kernel Library (oneMKL) convolution and correlation API.

Convolution and Correlation Task Parameters

Name

Category

Type

Default Value Label

Description

job

explicit

integer

Implied by the constructor name

Specifies whether the task relates to convolution or correlation

type

explicit

integer

Implied by the constructor name

Specifies the type (real or complex) of the input/output data. Set to real in the current version.

precision

explicit

integer

Implied by the constructor name

Specifies precision (single or double) of the input/output data to be provided in arrays x,y,z.

mode

explicit

integer

None

Specifies whether the convolution/correlation computation should be done via Fourier transforms, or by a direct method, or by automatically choosing between the two. See SetMode for the list of named constants for this parameter.

method

optional

integer

"auto"

Hints at a particular computation method if several methods are available for the given mode. Setting this parameter to "auto" means that software will choose the best available method.

internal_precision

optional

integer

Set equal to the value of precision

Specifies precision of internal calculations. Can enforce double precision calculations even when input/output data are single precision. See SetInternalPrecision for the list of named constants for this parameter.

dims

explicit

integer

None

Specifies the rank (number of dimensions) of the user data provided in arrays x,y,z. Can be in the range from 1 to 7.

x,y

explicit

real arrays

None

Specify input data arrays. See Data Allocation for more information.

z

explicit

real array

None

Specifies output data array. See Data Allocation for more information.

xshape, yshape, zshape

explicit

integer arrays

None

Define shapes of the arrays x, y, z. See Data Allocation for more information.

xstride, ystride, zstride

explicit

integer arrays

None

Define strides within arrays x, y, z, that is specify the physical location of the input and output data in these arrays. See Data Allocation for more information.

start

optional

integer array

Undefined

Defines the first element of the mathematical result that will be stored to output array z. See SetStart and Data Allocation for more information.

decimation

optional

integer array

Undefined

Defines how to thin out the mathematical result that will be stored to output array z. See SetDecimation and Data Allocation for more information.

Users may pass the NULL pointer instead of either or all of the parameters xstride, ystride, or zstride for multi-dimensional calculations. In this case, the software assumes the dense data allocation for the arrays x, y, or z due to the Fortran-style "by columns" representation of multi-dimensional arrays.