cufftHandle plan; //创建CUFFT句柄
cufftPlan2d(&plan, 256,256, CUFFT_C2C);
start2 = clock();
for(int j=0;j<200;j++)
{
cufftExecC2C(plan, (cufftComplex *)idata_d, (Complex *)idata_d, CUFFT_FORWARD);
}
cufftDestroy(plan);
end2 = clock();
大家好!我想测试一下二维的fft变换与迭代次数是不是一个线性的关系,for循环中的cufftexec2c 执行应该是异步调用的吧,我想问问怎么同步呢?
LZ您好:
您可以使用visual profiler来观察,一次cufft的调用将自动变成多次参数设置和kernel的调用。
祝您好运~
好的,另外我还有两个问题
1.我上面的代码中 for循环中cufftExecC2C的调用不需要在做cufft的配置吧?
2.如果我的代码中多个子函数都要用到相同配置的cufft,那么我在main函数中做一次cufft设置,然后把plan句柄作为参数传递给每个子函数可以吗?我这样用的时候好像结果不对了。
好的,另外我还有两个问题
1.我上面的代码中 for循环中cufftExecC2C的调用不需要在做cufft的配置吧?
2.如果我的代码中多个子函数都要用到相同配置的cufft,那么我在main函数中做一次cufft设置,然后把plan句柄作为参数传递给每个子函数可以吗?我这样用的时候好像结果不对了。
LZ您好:
1:cuFFT中的paln(句柄)可以一次创建,多次使用的。
2:同一句柄多次使用的时候需要保证一些参数设定是相同的,您可以参考一下cuFFT手册中的详细说明。
3:需要补充的是,如果您手工摧毁了句柄或者在某处使用了cudaDeviceReset()摧毁了CUDA上下文,那么句柄自然就失效了,这可能是引起问题的一种可能。
4:请您提供报错的具体情况,以便进一步分析。
祝您好运~