CUFFT具有双精度

Pip*_*ppo 2 cuda fft double-precision cufft

我在使用CUDA FFT库时遇到一些问题。

我将输入声明为cuDoubleComplex,但编译器返回以下错误:此类型与cufftComplex类型的参数不兼容。通过Internet搜索后,我发现文件cufft.h,其中有一行typedef cuComplex cufftComplex;。我的问题是,在cuComplex.h库中,很显然cuComplex具有单浮点精度(typedef cuFloatComplex cuComplex;),但是我想要双精度。

这可能吗?

特别是,我获得以下信息:

error: argument of type "cufftDoubleComplex *" is incompatible with parameter of type "cufftComplex *"
Run Code Online (Sandbox Code Playgroud)

在这一行:

cufftExecC2C(plan, data1, data2, CUFFT_FORWARD);
Run Code Online (Sandbox Code Playgroud)

sga*_*zvi 5

cufftDoubleComplexCUFFT中定义的双精度复杂数据类型。

CUFFT中fft的双精度版本是:

cufftExecD2Z() //Real To Complex

cufftExecZ2D() //Complex To Real

cufftExecZ2Z() //Complex To Complex
Run Code Online (Sandbox Code Playgroud)

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

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