我正在开发一个项目,需要在 Nvidia 和 AMD 的图形卡上使用 FFT。一开始我找了一个可以在两者上运行的库(考虑使用 OpenCL),但是没有找到合适的。
有人建议我需要使用每个供应商的 FFT 实现,并编写一个包装器根据平台选择使用哪个实现。我很容易找到 AMD 的实现,但是我现在手头上只有 Nvidia 的显卡(而且这对我的应用程序来说更重要)。
我唯一能找到的 Nvidia 实现是 CUFFT。有谁知道如何从 OpenCL 中使用 CUFFT 库吗?我唯一能想到的方法是将一些 CUDA 代码与我的 OpenCL 代码一起使用。我已经阅读了相关资料,得知无法直接使用 OpenCL 缓冲区作为 CUDA 指针 (Trying to mix in OpenCL with CUDA in NVIDIA's SDK template)。那么,我是否需要在运行 OpenCL 内核后将缓冲区拷贝回主机,然后使用 CUDA 内存传输例程将它们拷贝回 GPU?我不太喜欢这种方法,因为它似乎涉及无意义的内存传输。我更希望能够直接在 OpenCL 中使用 CUFFT。
有人建议我需要使用每个供应商的 FFT 实现,并编写一个包装器根据平台选择使用哪个实现。我很容易找到 AMD 的实现,但是我现在手头上只有 Nvidia 的显卡(而且这对我的应用程序来说更重要)。
我唯一能找到的 Nvidia 实现是 CUFFT。有谁知道如何从 OpenCL 中使用 CUFFT 库吗?我唯一能想到的方法是将一些 CUDA 代码与我的 OpenCL 代码一起使用。我已经阅读了相关资料,得知无法直接使用 OpenCL 缓冲区作为 CUDA 指针 (Trying to mix in OpenCL with CUDA in NVIDIA's SDK template)。那么,我是否需要在运行 OpenCL 内核后将缓冲区拷贝回主机,然后使用 CUDA 内存传输例程将它们拷贝回 GPU?我不太喜欢这种方法,因为它似乎涉及无意义的内存传输。我更希望能够直接在 OpenCL 中使用 CUFFT。