問題タブ [cufft]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - cuda cuFFT を使用して複素数から実数に変換すると、出力が正しくない
cuda バージョン 7.5cufft
を使用して、FFT と逆 FFT を実行しています。関数を使用して逆 FFT を実行すると問題が発生しcufftExecC2R(.,.)
ます。
実際、 で a を使用するbatch_size = 1
と、cufftPlan1d(,)
正しい結果が得られます。ただし、バッチ サイズを大きくすると、結果が正しくありません。
これを説明するために、サンプルの最小限のコードを貼り付けています。ざっと作成しただけなので、汚いコードは無視してください。
コードのどこにバグがあり、どの情報が欠けているのかわかりません。
使用時の出力例BATCH_SIZE = 1
c++11 - CMake を使用して cuFFT コールバックと C++11 を使用してプロジェクトをビルドする
cuFFT コールバックを使用して CUDA 8.0 プロジェクトをビルドするには、静的にリンクされた cuFFT ライブラリを使用し、(-dc コンパイラ オプション) を使用して再配置可能なデバイス コードとしてコードをコンパイルする必要があります。CUFFT_STATIC_LIBRARY などを使用して CMake v3.7.0 でこれを実現できませんでした。CMake でそのようなプロジェクトを構築できた人はいますか?
動的にリンクされた cuFFT ライブラリの私のプロジェクト CMakeLists.txt に関連する式:
python - cufft が fft / ifft 呼び出し間で配列を GPU メモリに保持するための Anaconda パッケージ
ipython 3.6.1 とその高速化パッケージで anaconda スイートを使用しています。この 2 つの関数 fft と ifft にはcufftサブパッケージがあります。これらは、私が理解している限り、numpy 配列を取り込み、numpy 配列に出力します。システム ram の両方で、つまり、すべての gpu メモリと、システムと gpu メモリ間の転送は自動的に処理され、関数が終了すると gpu メモリが解放されます。これはすべてとてもいいようで、私にとってはうまくいくようです。ただし、同じ配列で複数の fft/ifft 呼び出しを実行し、そのたびに配列から数値を 1 つだけ抽出したいと考えています。システム <-> GPU 転送を最小限に抑えるために、配列を GPU メモリに保持するとよいでしょう。このパッケージを使用してこれを行うことはできないということでよろしいですか? もしそうなら、同じことをする別のパッケージはありますか?レイナに気づいたプロジェクトですが、アナコンダでは利用できないようです。
私がやっている(そしてGPUで効率的にやりたい)ことは、numpy.fftを使ってここに簡単に示されています
前もって感謝します!