# 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 MKL 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.
kind | optional | integer | “linear” | Specifies whether the task relates to computing linear or circular convolution/correlation
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 of the C or C++ language 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.

Parent topic: Convolution and Correlation