MKL FFT 的输出缓冲器要求
Output Buffer Requirements for MKL FFT
我正在使用 MKL 2018.1 FFT 功能为二维 FFT(等级 = 2)编写 C++ 程序。 MKL 参考似乎没有明确说明 DftiComputeForward
和 DftiComputeBackward
的输出大小(是吗?)。
使用以下类型的描述符进行实数到复数正向计算和复数到实数计算所需的输出缓冲区大小是多少?
MKL_LONG status, l[2];
l[0] = 32; l[1] = 100;
status = DftiCreateDescriptor(&my_desc1_handle, DFTI_SINGLE,
DFTI_REAL, 2, l);
status = DftiCommitDescriptor(my_desc1_handle);
status = DftiSetValue(my_desc1_handle, DFTI_PLACEMENT, DFTI_NOT_INPLACE);
英特尔数学核心 (MKL) 库参考手册在 "DFTI_CCS_FORMAT for One-dimensional Transforms" 部分指定了实数到复数转换的大小。
对于一维变换:
对于二维变换是这样说的:
DFTI_CCS_FORMAT for Two-dimensional Transforms The following figure
illustrates the storage of a two-dimensional (2D) M-by-N
conjugate-even sequence in a real array for the CCS packed format.
This format requires an array of size (M+2)-by-(N+2). Row-major layout
and zero-based indexing are used. Different colors mark logically
separate parts of the result. "n/u" means "not used".
我正在使用 MKL 2018.1 FFT 功能为二维 FFT(等级 = 2)编写 C++ 程序。 MKL 参考似乎没有明确说明 DftiComputeForward
和 DftiComputeBackward
的输出大小(是吗?)。
使用以下类型的描述符进行实数到复数正向计算和复数到实数计算所需的输出缓冲区大小是多少?
MKL_LONG status, l[2];
l[0] = 32; l[1] = 100;
status = DftiCreateDescriptor(&my_desc1_handle, DFTI_SINGLE,
DFTI_REAL, 2, l);
status = DftiCommitDescriptor(my_desc1_handle);
status = DftiSetValue(my_desc1_handle, DFTI_PLACEMENT, DFTI_NOT_INPLACE);
英特尔数学核心 (MKL) 库参考手册在 "DFTI_CCS_FORMAT for One-dimensional Transforms" 部分指定了实数到复数转换的大小。
对于一维变换:
对于二维变换是这样说的:
DFTI_CCS_FORMAT for Two-dimensional Transforms The following figure illustrates the storage of a two-dimensional (2D) M-by-N conjugate-even sequence in a real array for the CCS packed format. This format requires an array of size (M+2)-by-(N+2). Row-major layout and zero-based indexing are used. Different colors mark logically separate parts of the result. "n/u" means "not used".