是否可以在设备函数中调用 cufft 库调用?

Posted

技术标签:

【中文标题】是否可以在设备函数中调用 cufft 库调用?【英文标题】:Is it possible to call cufft library calls in device function? 【发布时间】:2013-06-20 15:53:36 【问题描述】:

我在主机代码中使用 cuFFT 库调用,它们工作正常,但我想从内核调用 cuFFT 库。早期版本的 CUDA 没有这种支持,但是动态并行这可能吗?

如果有任何示例说明如何实现这一点,那就太好了。

【问题讨论】:

Is there a method of FFT that will run inside CUDA Kernel? 的可能重复项 @PavanYalamanchili:我问是因为它更多是因为 cuda 5 现在支持动态并行(你所指的链接是一年前的)。无论如何感谢您的信息。我今天刚刚在 nvidia 开发者专区注册,cuda 5.5 发布了新版本,通过发行说明,找不到与设备可调用库函数相关的任何内容.. :( 【参考方案1】:

尽管在 Kepler (cc 3.5) 卡上引入了动态并行性,但 cuFFT 仍然是主机 API,目前无法使用 cuFFT 在设备代码中创建或执行 FFT 操作。

【讨论】:

感谢您提供的信息。还有其他第三方 FFT 库移植到 CUDA 吗?哪个允许这样做?【参考方案2】:

无法从 GPU 内核调用 API。您必须从主机呼叫他们。如果您想在不从 DEVICE -> HOST -> DEVICE 传递的情况下运行 FFT 以继续您的详细说明,唯一的解决方案是编写一个在设备函数中执行 FFT 的内核。实际上我这样做是因为我需要并行运行更多的 FFT,而无需再次将数据传递给主机。如果您找到/有其他解决方案,请告诉我。网上有很多例子来说明如何实现这一点: -https://hackage.haskell.org/package/pure-fft-0.2.0/docs/Numeric-FFT.html

【讨论】:

我没有找到任何其他解决方案。我正在实施的算法对这个问题有一个替代的分析解决方案。所以我们使用它并完全避免了设备的 FFT 问题。您可以将您的答案作为对该问题的评论。

以上是关于是否可以在设备函数中调用 cufft 库调用?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在Thrust仿函数中调用设备函数?

1.linux系统调用和库函数调用的区别

在 MASM 中调用标准库函数

是否可以使用 Emscripten 从 JavaScript 调用 C++ 函数?

怎么调用动态链接库函数?

Linux 库函数与系统调用的关系与区别