我在使用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 *"
在这一行:
cufftExecC2C(plan, data1, data2, CUFFT_FORWARD);
最佳答案
双精度复杂数据类型在CUFFT中定义为cufftDoubleComplex
。
CUFFT中fft的双精度版本是:
cufftExecD2Z() //Real To Complex
cufftExecZ2D() //Complex To Real
cufftExecZ2Z() //Complex To Complex
cufftExecC2C
是fft的单精度版本,并且期望输入和输出指针的类型为cufftComplex
,而您正在向其传递类型为cufftDoubleComplex
的指针。对于
cufftDoubleComplex
数据类型,必须改为使用cufftExecZ2Z
函数,该函数用于双精度数据。关于cuda - CUFFT具有 double ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14120632/