MKL FFT的输出缓冲要求

时间:2018-01-10 04:35:04

标签: c++ intel-mkl

我正在用C ++编写程序,使用MKL 2018.1 FFT功能进行二维FFT(秩= 2)。 MKL引用似乎没有明确说明DftiComputeForwardDftiComputeBackward的输出大小(真?)。

使用以下类型的描述符,Real-to-complex转发和Complex-to-Real计算所需的输出缓冲区大小是多少?

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);

1 个答案:

答案 0 :(得分:1)

“英特尔数学核心(MKL)库参考手册”指定了“一维变换”和“#34; DFTI_CCS_FORMAT”部分中的大小。对于Real到Complex的转换。

对于一维变换:

MKL 1D Sizes

对于二维变换来说:

  

用于二维变换的DFTI_CCS_FORMAT下图   图2示出了二维(2D)M-by-N的存储   用于CCS打包格式的实数组中的共轭偶数序列。   这种格式需要一个大小为(M + 2)-by-(N + 2)的数组。行主要布局   使用基于零的索引。不同的颜色在逻辑上标记   结果的单独部分。 " N / U"意味着"未使用"。

MKL 2D Sizes