c++ - 有没有办法在一个 C++ 程序中同时使用 FFTW 和 cuFFTW?
问题描述
我正在编写一段使用 FFTW3 库的代码,并希望使用 CUDA 将其移植到 GPU。最简单的方法是使用 cuFFTW 兼容性库,但是,正如文档所述,这意味着用其 GPU 等效项完全替换 FFTW 的 CPU 版本。添加cufftw.h
头文件后,它会替换所有 CPU 功能,并且代码在 GPU 上运行。
但是有没有办法在我的代码中同时拥有FFTW的 CPU 和 GPU 版本,以便我可以在运行时在它们之间切换,例如通过用户界面中的复选框?还是唯一的方法是使用本机 cuFFT API?
解决方案
即使不查看库标题:是的。
一个简单的解决方案是拥有不同的编译单元,每个编译单元只包含一个库,并且只公开您自己的自定义函数/类/等。到应用程序的其余部分。这样两个库的标题就不会相互干扰。
但是,很有可能有更好的解决方案。我会看看cufftw.h
nVIDIA 到底在做什么,以及它究竟是如何“取代”CPU 功能的。