Cuda 我们可以在内核中声明cufftComplex类型的变量吗

Cuda 我们可以在内核中声明cufftComplex类型的变量吗,cuda,nvidia,Cuda,Nvidia,我在代码中使用了CUFFT库 __global__ void kernel1(...) { /****** processing to get real and imaginary values *******/ cufftComplex data[SIGANAL_SIZE]; cufftExecC2C(plan[0],data[0],data[0],CUFFT_FORWARD); } int main() { ... kernel1<<

我在代码中使用了CUFFT库

__global__ void kernel1(...)
{
    /****** processing to get real and imaginary values *******/
    cufftComplex data[SIGANAL_SIZE];


    cufftExecC2C(plan[0],data[0],data[0],CUFFT_FORWARD);

}


int main()
{
   ...
   kernel1<<<N,N>>>(...);
   ...
}
\uuuu全局\uuuuuu无效内核1(…)
{
/******处理以获得实值和虚值*******/
袖套复杂数据[SIGANAL_大小];
CufftECC2C(平面[0],数据[0],数据[0],CUFFT_向前);
}
int main()
{
...
核1(…);
...
}

我从我的内核函数“kernel1”调用了cufft函数。我可以在内核中声明cufftComplex类型的变量吗?

在CUDA内核代码中使用
cufftComplex
类型没有问题
cufftComplex
只是标准CUDA单精度复合类型
cuComplex
的别名,专门用于设备代码中


但是,问题中的其余代码是完全错误的。cuFFT库是主机端库,不能在CUDA内核代码中调用。因此,尝试在内核中调用
cuftextecc2c
是完全非法的,如果您尝试,将无法编译。

在CUDA内核代码中使用
cuftcomplex
类型没有问题
cufftComplex
只是标准CUDA单精度复合类型
cuComplex
的别名,专门用于设备代码中


但是,问题中的其余代码是完全错误的。cuFFT库是主机端库,不能在CUDA内核代码中调用。因此,试图在内核中调用
cufftExecC2C
是完全非法的,如果您尝试,将无法编译。

内核中的
cufftExecC2C
调用是做什么的?看看@talonmies,这是一个在CUFFT Library中提供的函数谢谢@RobertCrovella@user2281757我知道那是什么。我在问为什么在CUDA内核中有一个主机库函数调用。这是不允许的。内核中的
cufftExecC2C
调用在做什么?看看@talonmies,这是一个在CUFFT库中提供的函数谢谢@RobertCrovella@user2281757我知道那是什么。我在问为什么在CUDA内核中有一个主机库函数调用。这是不允许的。有没有办法在内核中使用cufft库?@user2281757:没有。有没有办法在内核中使用cufft库?@user2281757:没有。