問題タブ [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.
cufft - CUFFT 入力サイズについて
CUFFT ライブラリは、入力サイズに対して高度に最適化されたアルゴリズムをサポートし、次の形式で記述できると書かれています: 2^a X 3^b X 5^c X 7^d。
彼らはどうやってそれを行うことができたのでしょうか?
私の知る限り、FFT は2^a入力サイズに対してのみ最高のパフォーマンスを提供する必要があります。
c - cuFFT で実数から複素数への変換を実行する方法
次のコードは、cufftPlan1d を使用して単一の 1D 変換に適用するために、ここから変更されています。最終的にはバッチ処理された R2C 変換を実行したいのですが、以下のコードは個別の入力配列と出力配列を使用して単一の変換を実行します。
このコードを適応させて変換をインプレースで実行し、デバイスに割り当てられるメモリの量を減らすにはどうすればよいでしょうか?
Cuda 6.5 に感謝
- 注: MATLAB 2015a で mexFunction からコードを実行しています
コード:
cuda - cuda cufft ライブラリを使用した 1 次元複素数から複素数への変換
cudaライブラリ「cufft」を使用して、複雑なものから複雑なものへの1d FFTの簡単なコードを書いています。「cudaMalloc」を「malloc」に変更しました。これは、cudaMalloc exe ファイルを使用すると機能せず、クラッシュするためです。しかし、これは主要な問題ではありません。プログラムを実行すると、cufftExecC2C は値 != CUFFT_SUCCESS を返すため、FFT が機能しません!! なぜ?これは私のコードです
c++ - アーキテクチャ x86_64 の CUDA cuFFT 未定義シンボル
cuFFT ライブラリを使用しようとしていますが、プロジェクトをコンパイルするとエラーが発生します。
Mac OS X 10.10.3 で CUDA 7 と Eclipse Nsight を使用しています。cuFFT ライブラリを使用しない他の例は正しく機能します。他にやるべき設定はありますか?
c++ - VS2010/Cuda4.2 と比較して、VS2013/Cuda7.0 では CUFFT が 1000 倍遅い
この単純な CUFFT コードは 2 つの IDE で実行されました -
- VS 2013 と Cuda 7.0
- VS 2010 と Cuda 4.2
Cuda 7.0 を搭載した VS 2013 は1000
約 1 倍遅いことがわかりました。コード0.6 ms
は VS 2010 で実行され、 520 ms
VS 2013 で実行されました。両方とも平均です。
コードは、同じコンピューター、同じ OS、同じグラフィックス カードで、すぐに次々と実行されました。どちらの場合も構成は x64 リリースでした。C++ コンパイラを使用してファイルをコンパイルするか、CUDA C/C++ を使用してファイルをコンパイルするかを選択できます。両方のプロジェクトで両方のオプションを試しましたが、違いはありませんでした。
これを修正するためのアイデアはありますか?
FWIW、VS 2013のCuda 6.5でCuda 7と同じ結果が得られます
c - 2D カフト変換
スタックオーバーフローに関する私の最初の質問。
私はcudaが初めてです。
単純に 2D 複素数から複素数への FFT を実行したいだけです。
入力データは処理され、パディングは必要ありません。
期待した結果しか得られません。これが私のコードです:
このコードのワークフローは次のとおりです。
(1) ホスト上で h_input と h_output を割り当てます
(2) ファイルから h_input にデータを読み込みます -- "INFLU.DAT"
(3) デバイス上で d_array を割り当て、h_input をそこにコピーします
(4) d_array を h_output にコピーし、次に書き込みますファイル -- "INFLU_GET.DAT"
---- d_array が正しいデータを受信したかどうかを確認します
(5) d_array で複素数から複素数への順方向 FFT を実行します
(6) d_array を h_output にコピーし、ファイルに書き込みます -- " INFLU_FFT.DAT"
---- FFT の結果を観察する
手順 (4) を実行することで、h_input の d_array へのコピーが正しいと確信できます。
私の問題は次のとおりです
。ステップ(6)で、FFTの後、d_arrayとh_outputがまだ入力と同じであることがわかりました。
入力ファイルは次のとおりです:
https://drive.google.com/file/d/0B88U83cfBwMmdGFtbGJ2MVlURDg/view?usp=sharing
ファイル名は INFLU.DAT、サイズは 16MB です。
比較用の結果ファイルがあります (Fortran で実行):
https://drive.google.com/file/d/0B88U83cfBwMmcDR1YzYyRzF4Mjg/view?usp=sharing
ファイル名は INFLU_FFT_F.DAT、サイズも 16MB です。
どんな提案でも大歓迎です!ありがとう!
cuda - プロファイラーで CUDA ライブラリ関数呼び出しを表示するには?
cuFFT ライブラリを使用しています。NVIDIA Visual Profiler NVVP でこのライブラリ (またはその他の CUDA ライブラリ) からの関数呼び出しを確認するには、コードを変更するにはどうすればよいですか? Windows と Visual Studio 2013 を使用しています。
以下は私のコードです。画像とフィルターをフーリエ ドメインに変換し、作成したカスタム CUDA カーネルで点単位の複素行列乗算を実行し、フィルター処理された画像スペクトルに対して単純に逆 DFT を実行します。結果は正確ですが、プロファイラーで cuFFT 関数を表示する方法がわかりません。
c++ - cufftGetSize*() を呼び出すときの CUFFT_ALLOC_FAILED 戻り値の意味は何ですか?
cufftGetSize*() は、メモリを割り当てることは想定されておらず、割り当ても行いません (cufftGetSize* を呼び出す前後に使用可能なメモリを確認しました)。後の割り当てが失敗した場合、CUFFT_ALLOC_FAILED を返しますか?
コード例:
プロセスの開始時に 4693 MB の空きメモリがある GPU では、上記のコードは次の出力を生成します。
N=73 から、すべての奇数 N が失敗し、偶数 N がパスします。N=166 から、すべての N が失敗します。
必要なメモリは N に比例して増加しないため、私の質問に対する答えは、「後で割り当てが失敗した場合に CUFFT_ALLOC_FAILED を返す」と仮定します (!)。
(私の問題は CUDA 5.5.22 で発生します。他のバージョンはチェックしていません)