問題タブ [openacc]
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 - OpenACC を使用してネストされたループを並列化する
私はopenaccに非常に慣れておらず、高レベルの知識しか持っていないので、私が間違っていることについての助けと説明をいただければ幸いです。
openacc ディレクティブを使用してフラット化された (3D から 1D へ) 配列を更新する、それほど単純ではないネストされたループを高速化 (並列化) しようとしています。を使用してコンパイルしたときの簡略化されたサンプルコードを以下に投稿しました
pgcc -acc -Minfo=accel test.c
次のエラーが発生します。
call to cuStreamSynchronize returned error 700: Illegal address during kernel execution
コード:
region
andloop
ディレクティブを使用する代わりに、
次のエラーが発生します。
私はこのコードを実行しています
memory - OpenACC でのメモリの効率的な使用
私は OpenACC 計算流体力学コードに取り組んでおり、全体的な計算を一連の小さな操作に分割することで、ループ内の計算の粒度を高めています。私の最終的な目標は、GPU で元の複雑なタスクを小さく単純な一連のタスクに分割することで、脅威ごとのレジスタの量を減らすことです。
たとえば、計算ドメインの特定のノードに対して計算する数式が多数あります。
ご覧のとおり、計算をブロックのスレッドに分散し、最後に結果を (リダクションによって) R に合計できます。したがって、内部並列ループを次のように定義しました。
ただし、D をすべてのスレッドの共有メモリとして定義する必要がありますが、OpenACC の最善の方法が実際にはわかりません。(!$acc キャッシュを使用しましたが、パフォーマンスが低下しました)。また、変更されていないデータを定数メモリに送信する必要がありますが、どうすればよいかわかりません。
このアイデアを OpenACC に実装する効率的な方法はありますか? 本当にありがとうございました。
どうもありがとう、ベザド
cuda - OpenACC カーネルを C ソース コード レベルでプロファイリングできますか?
PGI 15.7 コンパイラで openacc を使用してコードを高速化しようとしています。
コードを C ソース レベルでプロファイリングしたいと考えています。CUDA 7.0 の「nvvp」プロファイラーを使用しています。nvvp を実行すると、「分析タップ」を使用して、どのレイテンシーがコードの速度低下の原因であるかを取得できます。(データの依存関係、条件分岐、帯域幅など)
しかし、行ベースの分析は得られず、「カーネル」レベルの分析しか得られませんでした。(例: main_300_gpu カーネルは 10 秒使用) . そのため、コードをどこで修正する必要があるかを知るのに苦労しています。
ソースレベルでコードをプロファイリングする方法はありますか?
私は使用しています
PGI 15.7 (pgcc を使用)
CUDA7.0
NVIDIA GTX 960
Ubuntu 14.04 LTS x86_64
cuda - NVIDIA GPU は分岐予測をサポートしていますか? (OpenACC を使用)
OpenACC で NVIDIA GPU を使用しています (NVIDIA GeForce960、コンパイラ:PGI 15.7)
NVIDIA GPU は分岐予測をサポートしていますか? 私のコードには、長いループに条件付き実行コードがあります。しかし、GPU でコードを実行すると、非常に時間がかかります。
以下はコード例です。
このコードをコンパイルして CPU で実行すると、CPU は条件付き実行ループの分岐予測を行います。NVIDIA GPU には、CPU の分岐予測と同じまたは類似のスキルがありますか?
有効になっている場合、どうすれば有効にできますか?
追加の質問:
PGI 15.7 コンパイラは、GPU 用に最適化されたコードをコンパイルできますか? 通常のコンパイラ(gcc ...など)は、条件付きコードの実行順序を変更するなど、最適化スキルでコンパイルできることを知っています。
windows - Windows 環境 OpenACC
OpenACC プログラムの開発を始めたいのですが、いくつか質問があります。AMD gpu で OpenACC コードを実行することは可能ですか?
もしそうなら、Windows環境で利用できるコンパイラを探しています。Openacc ディレクティブをコンパイルできるものを見つけようと必死になっています。
cuda - PGI コンパイラは、生成された Cuda コードをファイルに出力できますか?
生成された CUDA コードをファイルに保存して調査したいと考えています。これは OpenAcc と PGI コンパイラで可能ですか?