有没有办法在一个 C++ 程序中同时使用 FFTW 和 cuFFTW?

Is there a way to use both FFTW and cuFFTW in one C++ program?

我正在编写一段使用 FFTW3 库的代码,并希望使用 CUDA 将其移植到 GPU。最简单的方法是使用 cuFFTW 兼容库,但是,正如文档所述,它意味着用其 GPU 等效项完全替换 CPU 版本的 FFTW。添加 cufftw.h header 后,它替换了所有 CPU 函数,代码在 GPU 上运行。

但是有没有办法在我的代码中同时包含 CPU 和 FFTW 的 GPU 版本,这样我就可以在运行时在它们之间切换,例如通过用户界面中的复选框?或者唯一的方法是使用原生 cuFFT API?

即使不看图书馆headers:是的。

一个简单的解决方案是让不同的编译单元每个只包含一个库,并且只公开您自己的自定义 functions/classes/etc。到应用程序的其余部分。这样两个库的headers就不会互相干扰了

但是,很可能有更好的解决方案。我会查看 cufftw.h 以了解 nVIDIA 到底在做什么以及它 "replaces" CPU 的功能。