2

現在、C ++プログラムをCUDAコードに変換しており、プログラムの一部が高速フーリエ変換を実行しています。もともとFFTWを実行していましたが、カーネルで呼び出せないので、cufftを使ってその部分を書き直しましたが、同じことがわかります!

CUDAカーネル内で実行されるFFTはありますか?

__device__fftwライブラリに追加できますか?

ホストでFFTを初期化または呼び出す必要がないようにしたいと思います。gpuタイプの関数が存在する場合は、それを完全に使用したいと思います。

4

3 に答える 3

3

カーネルに組み込むことを検討している場合、一度に複数の FFT を実行しようとしているようです。cuFFT のバッチ処理機能について調べます。あなたのアプリケーションは何ですか?cufftPlanMany() は、さまざまなメモリ構成のバッチ FFT で機能します。

于 2012-07-22T04:09:27.363 に答える
2

ホストからの起動を避ける必要がありますか? 最近の Nvidia のcufft ライブラリは非常に優れています。FFTW の移植はかなり難しい作業のようです。Kissfftの移植は簡単かもしれませんが、それでも簡単ではありません。

于 2012-07-22T00:53:59.833 に答える
0

GPU カーネルから API を呼び出す方法はありません。ホストから呼び出す必要があります。DEVICE -> HOST -> DEVICE から渡さずに FFT を実行して詳細を続行する場合、唯一の解決策は、デバイス関数で FFT を実行するカーネルを作成することだと思います。実際にこれを行っているのは、データを HOST に再度渡すことなく、より多くの FFT を並行して実行する必要があるためです。別の解決策を見つけた/持っている場合は、お知らせください。

于 2015-07-03T17:11:21.547 に答える