私は、NvidiaとAMDグラフィックカードの両方でFFTを使用する必要のあるプロジェクトに取り組んでいます。私は最初に両方で動作するライブラリを探しましたが(これはOpenCLの方法だと思っていますが)私は運がなかったのです。NvidiaとAMDハードウェアのOpenCL FFT?
誰かが、各ベンダーのFFT実装を使用し、プラットフォームに基づいて何をすべきかを選択したラッパーを作成する必要があると私に示唆してくれました。私はかなり簡単にAMDの実装を見つけましたが、その間にNvidiaカードで実際に作業しています(これは私の特定のアプリケーションではより重要なものです)。
私が見つけることができる唯一のNvidiaの実装はCUFFTです。 OpenCLのCUFFTライブラリを実際にどのように使用できるかは誰にも分かりますか?私が考えることができる唯一の方法は、私のOpenCLコードと一緒にいくつかのCUDAコードを持つことです。私はCUDAポインタ(Trying to mix in OpenCL with CUDA in NVIDIA's SDK template)としてOpenCLバッファを使うことはできないということを読んだ。代わりに、OpenCLカーネルを実行した後でバッファをホストにコピーしてから、CUDAメモリ転送ルーチンを使用してGPUにコピーし直す必要がありますか?無意味なメモリ転送を含むように見えるので、私はこのアプローチが本当に好きではありません。私はOpenCLからCUFFTを使うだけでいいです。
現在、ViennaCLには「実験的な」FFT実装が含まれています。少なくともパワー2の変換では、それは合理的に実行する必要があります。 – talonmies