CUFFT具有双精度

时间:2013-01-02 10:43:15

标签: cuda fft double-precision cufft

我遇到了CUDAs FFT库的一些问题。

我将输入声明为cuDoubleComplex,但编译器返回此类型与cufftComplex类型的参数不兼容的错误。经过一些互联网搜索后,我找到了文件cufft.h,其中有一行typedef cuComplex cufftComplex;。我的问题是在库cuComplex.h中很明显cuComplex有一个浮点精度(typedef cuFloatComplex cuComplex;),但我想要一个双精度。

这可能吗?

特别是,我获得了以下内容:

error: argument of type "cufftDoubleComplex *" is incompatible with parameter of type "cufftComplex *"

在这一行:

cufftExecC2C(plan, data1, data2, CUFFT_FORWARD);

1 个答案:

答案 0 :(得分:4)

双精度复杂数据类型在CUFFT中定义为cufftDoubleComplex

CUFFT中fft的双精度版本是:

cufftExecD2Z() //Real To Complex

cufftExecZ2D() //Complex To Real

cufftExecZ2Z() //Complex To Complex

cufftExecC2C是fft的单精度版本,并期望输入和输出指针的类型为cufftComplex,而您传递的是cufftDoubleComplex类型的指针。

对于cufftDoubleComplex数据类型,您必须使用函数cufftExecZ2Z来代替双精度数据。