我正在尝试使用带有2,500个数据类型doublereal的袖口找到fft,每个数据点有20,000个数据点。我用过:
cufftHandle plan;
cufftPlan1d(&plan, 20000, CUFFT_D2Z, 2500) ;
cufftExecD2Z(plan, source, result);
当数据点数达到15000时,代码似乎工作正常。但在其上方,结果并不准确。我发现在1D阵列中我可以有2 ^ 27个数据点,但20000 * 2500仍然小于2 ^ 27。有人可以指出错误是什么以及必须采取哪些措施来纠正它?
答案 0 :(得分:1)
cufftPlan1d()
被标记为已弃用(在cuda 6.0及更高版本中,可能已经更早?),请参阅http://docs.nvidia.com/cuda/cufft/index.html#function-cufftmakeplan1d。
您是否尝试使用推荐的cufftPlanMany()
?
对于您的示例,计划应如下所示:
int size[1] = {20000};
cufftPlanMany( &plan, 1, size, NULL, 0, 0, NULL, 0, 0, CUFFT_D2Z, 2500 );
有关参数的详细信息,请参阅http://docs.nvidia.com/cuda/cufft/index.html#function-cufftplanmany。