2011-07-04 8 views
1

並列nsightを使用して、非合体読み取り/書き込みおよびバンク競合の数を知る方法はありますか?
さらに、nsightを使用しているときに、プロファイラーは何ですか?私のプログラムが遅くなる重要なフィールドは何ですか?Nsightを使用してバンク競合と合体を判断する

答えて

1

私はNSightを使用していないが、あなたはプロファイラで見てみましょう典型的な分野は、基本的には、以下のとおりです。

  • メモリ消費
  • 具体的な機能

で過ごした時間、 CUDAを使用すると、GPUの占有に注意する必要があります。
他の興味深い値は、コンパイラがローカル変数をレジスタまたはローカルメモリに設定した方法です。

最後に、GPUとの間でデータをやりとりする時間を確認し、計算時間と比較します。

1

銀行間の競合については、warp serializationを見る必要があります。 hereを参照してください。メモリ合体<の監視について

here is a discussion - 基本的にはあなただけのGlobal Memory Loads/Stores - Coalesced/UncoalescedとフラグUncoalescedを監視する必要があります。

0

M. Tibbitsは、基本的に、銀行の競合や非合併のメモリ取引について知っておくべきことを答えました。あなたがいるかどうかを判断する

  1. 使用アプリケーションやシステムトレース:私のプログラムを遅くする原因となります(Nsightプロファイラを使用している場合)を見て重要なフィールド/物事が何であるかの質問については

    CPUバウンド、メモリバウンド、またはカーネルバウンド。これは、タイムラインを見て行うことができます。

a。 CPU境界 - カーネルやメモリのコピーが発生していないが、アプリケーションスレッド(スレッド状態)が緑色である大きな領域が表示されます。

b。メモリバウンドカーネルは、デバイスとの間のメモリ転送でブロックされます。 Memory Rowを見ることでこれを見ることができます。メモリコピーに多くの時間を費やしている場合は、CUDAストリームを使用してアプリケーションをパイプライン化することを検討する必要があります。これにより、メモリー転送とカーネルをオーバーラップさせることができます。コードを変更する前に、転送とカーネルの継続時間を比較し、パフォーマンスが向上することを確認する必要があります。

c。 Kernel bound - アプリケーションの時間の大半がカーネルの処理を完了するのに費やされた場合、 "Profile"アクティビティに切り替えてアプリケーションを再実行し、ハードウェアカウンタの収集を開始してカーネルの実際の実行時間もっと早く。

関連する問題