問題タブ [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.
image-processing - カフ画像処理
画像加工アプリを譲り受けました。ここで物事を理解しようとしています。3 つの質問があります。1) F2C、C2C、C2F の順序は正しいですか? 2) C2C を一方向に 1 回実行する必要がありますか? 3) どちらの方向 (前方または後方) を使用する必要がありますか?
バックグラウンド:
入力と出力は 2D 画像です。
最初に R2C が cufftF2C (既製の cuda) を使用して実行され、次に C2C が実行されます。これは、元の開発者によって手作業でコーディングされました。最後に、C2R は cufftC2F (既製の cuda) を使用して行われます。
その結果、見苦しいジグザグ線のみが表示される素晴らしい画像が得られます。元の開発者は 1D プラン (nx = x およびバッチ = y) を使用していました。これらを 2D プラン (nx = x および ny = y) に置き換えたいと考えています。また、自家栽培の C2C を既製の cufftC2C に置き換えたいと考えています。
c++ - この libcufft_static の例で「`__cudaRegisterLinkedBinary_60_....` への未定義参照」エラーが発生するのはなぜですか?
nvidia-cuda-toolkit
パッケージ経由でインストールされたCUDA 7.5 SDKを使用してUbuntu 16.04を使用しています。cuFFT のコールバック機能を使用して簡単なテスト プログラムをコンパイルしようとしています。サンプルのソース コードはGitHubで入手できます。
コールバック機能を使用してコンパイルする手順に従って、ソースをリロケータブル デバイス コードとしてコンパイルし、次のリンクにリンクしていlibcufft_static.a
ます。
上記のシーケンスでは、最後のコマンドが一連のエラーで失敗します。これらはすべて次のようなものです。
で始まる多くの欠落したシンボルについて不平を言い__cudaRegisterLinkedBinary_
ます。手元にある CentOS 7 マシンでも同じ一連のコマンドが適切に機能するため、間違ったことをしているとは思いません。
SDK の設定が間違っている可能性はありますか? 私が SO や他の場所で見た同様の問題についての言及はすべて、上記の個別のコンパイル手順を実行できなかったことです。ここではそうではないと思います。
cuda - cuda コードがリロケータブル デバイス コードでコンパイルされているかどうかを確認するにはどうすればよいですか?
CUFFT コールバックを使用するための制限の 1 つは、再配置可能な再配置可能なデバイス コードを使用してコードをコンパイルする必要があることです。
この条件が満たされない場合、悪いことが起こります。無言の失敗、間違った答えなど。
現在のビルドは機能していますが、将来のプロジェクトでのコンパイルミスに対して、このコードをより堅牢にしたいと考えています。
コンパイルユニット内でこれを検出する方法はありますか? 例: プリプロセッサ フラグ
cufft - FFT 1d 変換
cufft を使用して FFT を実行したい場合、配列 [1,2,3,4,5,6,7,8] を作成し、使用します
計画を作成してから使用します
FFT を実行します。使用する前に、配列を画像部分が0の複素数配列に変換しました。私はそのような結果を得ました:
最初は元のデータ要素で、その後は cufftExecC2C が計算した結果です。この結果が正しいか知りたいです。最初の出力結果要素は 36=1+2+3+4+5+6+7+8 で、4.5 だと思います。では、どこが間違っているのでしょうか?
c++ - cuFFT はエラー後に回復できません
起動に失敗した後、cuFFT 処理を開始する方法が見つかりません。
これは最小限の例です。主なアイデアは次のとおりです。リソース (デバイス メモリと cuFFT プラン) を管理できる単純な cuFTT プロセッサを作成します。このプロセッサが FFT を実行することを確認します。次に、あまりにも多くの計画を作成するように要求するため、cuFFT エラーを適用します。次に、すべてのリソースを解放し、成功した起動を繰り返そうとします。ただし、プロセッサは障害後に何もできません。
まず、かなり長い序文を次に示します。
次に、そのリソース (デバイス メモリと cuFFT プラン) を管理できる単純な cuFFT プロセッサを定義します。
リソースを解放する方法は次のとおりです。
主な機能の実装は次のとおりです。
最後に、プログラム
小さな を使用すると、length = 1 << 18
エラーは発生しません。ただし、大きなlength = 1 << 21
2 つのエラーが表示されます。
最初のエラーは予期されたものであり、意図的にこれを行いました。しかし、2番目のものはそうではありません。デバイスがリセットされ、新しいリソースが正常に割り当てられましたが、cuFFT は FFT を実行できませんでした。
GTX 970 を使用しています。cuda 6.5、cuda 7.5、32 ビット プラットフォーム、64 ビット プラットフォームなどのすべての組み合わせを試しましたが、うまくいきませんでした。