在cuda中使用CUFFT

时间:2015-07-16 01:03:03

标签: cuda

我正在尝试使用带有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。有人可以指出错误是什么以及必须采取哪些措施来纠正它?

1 个答案:

答案 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