3

我在使用 CUDA 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);
4

1 回答 1

7

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

CUFFT 中 fft 的双精度版本是:

cufftExecD2Z() //Real To Complex

cufftExecZ2D() //Complex To Real

cufftExecZ2Z() //Complex To Complex

cufftExecC2C是 fft 的单精度版本,并且期望输入和输出指针是 type cufftComplex,而你传递给它一个 type 的指针cufftDoubleComplex

对于cufftDoubleComplex数据类型,您必须改用该函数cufftExecZ2Z,该函数用于双精度数据。

于 2013-01-02T10:55:23.230 回答