首页 > 解决方案 > 有没有办法在一个 C++ 程序中同时使用 FFTW 和 cuFFTW?

问题描述

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

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

标签: c++cudafftfftwcufft

解决方案


即使不查看库标题:是的。

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

但是,很有可能有更好的解决方案。我会看看cufftw.hnVIDIA 到底在做什么,以及它究竟是如何“取代”CPU 功能的。


推荐阅读