【问题标题】:Is there a way to use both FFTW and cuFFTW in one C++ program?有没有办法在一个 C++ 程序中同时使用 FFTW 和 cuFFTW?
【发布时间】:2018-09-26 19:56:27
【问题描述】:

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

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

【问题讨论】:

    标签: c++ cuda fft fftw cufft


    【解决方案1】:

    即使不查看库头:是的。

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

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

    【讨论】:

    • 谢谢,使用不同的编译单元似乎是一个不错的解决方案!我查看了两个标题,它们只声明函数,在那里找不到任何特别之处。所有的定义都保存在动态库中,所以似乎我什至无法更改标头中声明的函数的名称。也许我可以从源代码构建我自己的 FFTW 版本并更改函数的名称,但这似乎不是一个优雅的解决方案......
    • 只是想确认它真的有效:) 快速简单,谢谢你的回答!
    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2019-12-08
    • 1970-01-01
    相关资源
    最近更新 更多