【问题标题】:Can we declare a variable of type cufftComplex in side a kernel我们可以在内核中声明一个 cufftComplex 类型的变量吗
【发布时间】:2013-07-05 12:32:47
【问题描述】:

我在我的代码中使用了 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>>>(...);
   ...
}

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

【问题讨论】:

  • cufftExecC2C 调用在内核内部做了什么?
  • 看看this answer
  • @talonmies 这是 CUFFT 库中提供的函数
  • @user2281757:我知道它是什么。我在问为什么你在 CUDA 内核中有一个宿主库函数调用。这是不允许的。
  • @talonmies 你介意发布一个简短的答案吗?我会很感激并赞成它,所以这个问题可以被宣布为“已回答”。或者,如果您愿意,我会将其标记为重复。

标签: cuda nvidia


【解决方案1】:

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

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

【讨论】:

  • 有没有办法在内核中使用 cufft 库?
  • @user2281757:不,没有。
猜你喜欢
  • 2022-01-09
  • 2020-07-27
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
相关资源
最近更新 更多