gpt4 book ai didi

c - 使用 Intel MKL 的 3D 卷积

转载 作者:行者123 更新时间:2023-12-03 02:03:10 25 4
gpt4 key购买 nike

我正在尝试使用英特尔MKL 计算 3D 阵列的 3D 卷积。有人可以给我一些提示吗?使用MKL可以实现吗?提前致谢。

最佳答案

英特尔有an example on their page 3D FFT,这应该有助于通过频率空间中的乘法执行卷积。抱歉,我没有完整的解决方案:

三维 REAL FFT(C 接口(interface))

#include "mkl_dfti.h"
float x[32][100][19];
float _Complex y[32][100][10]; /* 10 = 19/2 + 1 */
DFTI_DESCRIPTOR_HANDLE my_desc_handle;
MKL_LONG status, l[3];
MKL_LONG strides_out[4];

//...put input data into x[j][k][s] 0<=j<=31, 0<=k<=99, 0<=s<=18
l[0] = 32; l[1] = 100; l[2] = 19;

strides_out[0] = 0; strides_out[1] = 1000;
strides_out[2] = 10; strides_out[3] = 1;

status = DftiCreateDescriptor( &my_desc_handle, DFTI_SINGLE,
DFTI_REAL, 3, l );
status = DftiSetValue(my_desc_handle,
DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX);
status = DftiSetValue( my_desc_handle, DFTI_PLACEMENT, DFTI_NOT_INPLACE );
status = DftiSetValue(my_desc_handle,
DFTI_OUTPUT_STRIDES, strides_out);

status = DftiCommitDescriptor(my_desc_handle);
status = DftiComputeForward(my_desc_handle, x, y);
status = DftiFreeDescriptor(&my_desc_handle);
/* result is the complex value z(j,k,s) 0<=j<=31; 0<=k<=99, 0<=s<=9
and is stored in complex matrix y in CCE format. */

接下来的步骤是对填充内核执行相同的变换、两个复数数组的逐点乘法以及逆 FFT。

关于c - 使用 Intel MKL 的 3D 卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27053244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com