問題タブ [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.

0 投票する
1 に答える
981 参照

cuda - cuFFT 出力が正しくない

このプログラムに問題があります:

信号を変換してから逆を返したいのですが、前半の出力が間違っています。

エラーを見つけるのを手伝ってもらえますか?

どうもありがとうございました!

0 投票する
1 に答える
276 参照

cuda - cufftGetSize1d の CUFFT_INVALID_VALUE

cufftGetSize1d(またはいずれかのcufftGetSize*) 関数を使用する適切な方法は何ですか?

私は試しました:

CUFFT_INVALID_VALUEただし、使用するサイズ、タイプ、またはバッチに関係なく、最後の呼び出しの結果は常にです。同じことが 2d および 3d バリアントにも当てはまります。cufftEstimate1d正しく動作します。

0 投票する
1 に答える
110 参照

cuda - cufft で完全な fft 係数を取得するにはどうすればよいですか?

カフトによる2次元fft処理を行っています。処理タイプは実数から複素数になるため、出力配列のサイズは NX * (NY / 2 + 1) となり、これは冗長ではありません。しかし、冗長な係数を含む完全な係数が必要です。どうすればそれらをすべて入手できますか? 前もって感謝します。

0 投票する
1 に答える
634 参照

c++ - CUDA の cuFFT ライブラリと cufftPlanMany でバッチ FFT をオーバーラップすることは可能ですか?

Chromaprint として知られている音響指紋ライブラリの FFT 変換を並列化しようとしています。「元のオーディオを多くの重複するフレームに分割し、それらにフーリエ変換を適用する」ことで機能します。Chromaprint は 2/3 のオーバーラップで 4096 のフレーム サイズを使用します。たとえば、最初のフレームは要素 [0...4095] で構成され、2 番目のフレームは [1366.. 5462] のようなものになります。

cufftPlanMany を使用すると、[0... 4095]、[4096... 8192] などのバッチを実行するサイズ 4096 のバッチを指定できることがわかっています。バッチ化された変換をオーバーラップさせる方法はありますか?バッチ実行を使用しない別のアプローチを検討していますか?

0 投票する
0 に答える
1323 参照

python - Python マルチプロセッシングと pyfft を使用して GPU で複数の FFT を計算する: GPU メモリ リークを回避するには?

pycudaおよびpyfftパッケージを使用して、マルチ CPU およびシングル GPU計算用に次のパターンを Python で実装しようとしています。

GPU (NVIDIA CUDA を使用) を使用して FFT を実行できるように、複数のプロセス(たとえば、multiprocessing.Pool() で起動)が必要です。

ただし、次の問題があります。

あまりにも多くのプロセスを実行したり、プロセスごとにあまりにも多くの FFT を実行したりすると、スクリプト全体が停止せずに保留されたままになります(また、予定されているすべての FFT を計算することもありません)。さらなる調査から、これは GPU のメモリ制限(現在、NVIDIA GeForce GT 750M で 2048MB) が原因であると思われます。マルチプロセッシング プールが制御を取り戻すことができないようです。これを回避する方法はありますか?

各プロセスは 2048 MB 未満しか必要としないため、各プロセスが GPU の使用を予約できるキューのようなものが必要です。プロセスがコンテキストを解放すると、キュー内の次のプロセスがそれを使用し始めます。これは実行可能ですか?

あるいは、特定の時間に 1 つのプロセスだけが GPU を使用するように強制することはできますか?
これらのソリューションを個別に試しましたが、機能しません (または、正しく実装していない可能性があります)。

  1. proc_stream.synchronize() でストリームを同期する
  2. pycuda.tools.clear_context_caches() を使用して、コンテキスト キャッシュをクリアします。
  3. cuda.compute_mode = cuda.compute_mode.EXCLUSIVE で計算モードを変更します

注:解決策 2. はいくらかのメモリを解放するように見えますが、計算が遅くなり、問題は解決しません。たとえば、計算する fft の数を増やすと、スクリプトは同じ動作を示します。

ここにコード。簡単なタスクから始めると、ここでは各プロセスが 1 つの FFT を計算します (次に、execute() でバッチ オプションを使用して、さらに FFT を連続して実行できます)。

そしてここに関数ラッパーがあります:

ここで、nffts=16 および pool_size=4 で、スクリプトは正しく終了し、次の出力が得られます。

ただし、nffts=18 および pool_size=4 の場合、スクリプトは終了せず、次の出力が表示され、最後の行でスタックしたままになります。

助けてくれて本当にありがとうございます!

0 投票する
1 に答える
909 参照

cuda - cucomplex.h を使用してカフト データを操作する

私はここに新しいです。FFT を使用していて、簡単なコードを作成する必要がありますが、うまくいきません。cufft a sin(x) で変換して元に戻す必要がありますが、変換の間に結果を 2 倍する必要があるため、逆変換で結果を元に戻すと、2*sin( を受け取ります。 x) 例えば。fftw.h では、d_signal[i] を 2 倍するだけで、引き返すと 2*sin(x) になりますが、以前は complex.h で作業していました。何か案が?ありがとう。

}

シンプルな変換コード

結果

0 投票する
0 に答える
72 参照

android - Shield タブレットでの CUDA CUFFT

CUFFT を使用して、Shield Tablet の CUDA サンプルを変更しようとしました。ただし、プログラムをビルドすると、リンク エラーが発生しましたundefined reference to 'cufftExecR2C'undefined reference to 'cufftExecC2R'.

.so ファイルが見つからないためにエラーが発生する可能性があると考えました。次に、次のように Android.mk ファイルに libcufft.so を追加しました。

私はまだ同じエラーが発生しました。誰でも私を助けて、正しい方向に向けてもらえますか?

どうもありがとう。

0 投票する
2 に答える
755 参照

cuda - Jetson TK1 では FFT が遅くなりますか?

合成開口レーダー画像処理用の CUDA プログラムを作成しました。計算の大部分は FFT と iFFT を見つけることであり、私はそのために cuFFT ライブラリを使用しました。Jetson TK1 と GT635M (Fermi) を搭載したラップトップで CUDA コードを実行しましたが、Jetson では 3 倍遅いことがわかりました。これは、FFT に時間がかかり、Jetson の GFLOPS/s が低いためです。私が書いたカーネルの GFLOPS/s のパフォーマンスは、Jetson と Fermi GT635M の両方でほぼ同じです。Jetson で遅いのは FFT です。
私が観察したその他のプロファイラー パラメーターは次のとおりです。発行された制御フロー命令、テクスチャ キャッシュ トランザクション、ローカル メモリ ストア スループット (バイト/秒)、要求ごとのローカル メモリ ストア トランザクションは Jetson で高く、要求されたグローバル ロード スループット (バイト/秒) とグローバル ロード トランザクションは Fermi GT635M で高くなっています。

ジェットソン

GPU クロック レート: 852 Mhz

メモリ クロック レート: 924 Mhz

フェルミ GT635M

GPU クロック レート: 950 Mhz

メモリ クロック レート: 900 Mhz

どちらもほぼ同じクロック周波数を持っています。それでは、Jetson で FFT に時間がかかり、GFLOPS/s が低いのはなぜですか?

FFT のパフォーマンスを確認するために、サイズ 2048 * 4912 の行列で 1D FFT を実行する単純な CUDA プログラムを作成しました。ここのデータは連続しており、ストライドされていません。それらの所要時間と GFLOPS/秒は次のとおりです。

ジェットソン

3.251 GFLOPS/秒 持続時間: 1.393 秒

フェルミ GT635M

47.1 GFLOPS/秒 持続時間: 0.211 秒