有没有一种方法可以在一个C ++程序中同时使用FFTW和cuFFTW?

时间:2018-09-26 19:56:28

标签: c++ cuda fft fftw cufft

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

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

1 个答案:

答案 0 :(得分:4)

即使不查看库标题也可以:

一个简单的解决方案是让不同的编译单元每个都只包含一个库,并且只公开自己的自定义函数/类/等。到应用程序的其余部分。这样,两个库的标头就不会互相干扰。

但是,很可能有更好的解决方案。我将看cufftw.h来了解nVIDIA在其中到底在做什么,以及它如何“替换” CPU功能。