我定义了一个float型的二维数据和float型的二维滤波器,利用CUDA5.0自带的simpleCUFFT代码进行32次的卷积,循环32次
float a[32][50];(已经初始化)
float b[32][11];(已经初始化)
将CUDA5.0自带的simpleCUFFT中的代码改动如下:
加了一个32次的循环,将数组中的float型数据赋给信号和滤波器
for (unsigned int pp=0;pp<32;pp++)
{
Complex *h_signal = (Complex *)malloc(sizeof(Complex) * SIGNAL_SIZE);
for (unsigned int s=0;s<SIGNAL_SIZE; ++s)
{
h_signal[s].x =a[pp][s];
h_signal[s].y =0;
}
Complex h_filter_kernel = (Complex)malloc(sizeof(Complex) * FILTER_KERNEL_SIZE);
for (unsigned int ss=0;ss<FILTER_KERNEL_SIZE; ++ss)
{
h_filter_kernel[ss].x = b[pp][ss];
h_filter_kernel[ss].y = 0;
}
…
…
后面代码完全一样,每次循环都释放空间!
但是出现了如下类型错误:错误都是出现在PadData函数和Conlove函数处;
error:argument of type “Complex *” is incompatible with parameter of type “const float *”
error:argument of type “Complex **” is incompatible with parameter of type “float **”
error:…
…