ローグウェーブソフトウェアのブログ

開発をシンプルに 安全で高品質のコードを 素早くお客様のもとへ

TotalViewのCUDA関連機能

CUDAを使ってGPUのデバイスコードを開発する場合、デバッガの選択肢としてまず挙げられるのがNVIDIA社が配布しているコマンドラインデバッガCUDA-GDB、あるいはGUI開発環境のNsightです。こうしたデバッグ用のツールを使用することにより開発効率はずっと高まります。

並列デバッガ TotalView の利用

ホストとしてLinuxを使用し、開発言語としてC/C++Fortranを使っている場合、TotalViewのような高機能な並列デバッガの使用も視野に入れてみましょう。TotalView は、コマンドラインはもちろん GUI モードにも対応し、プログラムやメモリの状態・変数の値を視覚的に確認しながらのデバッグ作業が可能な製品です。直感的で使いやすい GUI や各種プラグインにより、複数のノードや異なるアーキテクチャにまたがるような大規模なマルチプロセス/マルチスレッドアプリケーションであっても、生産性の高い動作/品質確認やデバッグ作業が可能です。

近年の並列化は複数のレイヤーにわたって行われ、MPIを使ってノードをまたぎ、各ノード内ではOpenMPを使って並列化を行い、さらにコプロセッサXeon PhiやGPUアクセラレータを使って処理をオフロードする、ヘテロジニアスな環境に対応することが必要となっています。そういった複数のレイヤーでのコードの動きを観察したい場合、既に並列処理の世界で定評のあるTotalViewを利用するとシームレスに状況を俯瞰することができます。もちろん複数のGPUカードにも対応しています。

roguewave.jp

GTC Japan

毎年ローグウェーブは日本NVIDIA社主催のGTCに出展しています。TotalViewやIMSLを始めとするローグウェーブ製品や、CUDAその他を使った動作デモもご紹介していますのでぜひブースにお立ち寄りください。

TotalViewの主なCUDA関連機能

f:id:RWSJapan:20150902174121j:plain

  • ホストコードと全く同じやり方でCUDAカーネル上にブレークポイントを置いてステップ実行や「Run to」、Haltなどができます。インライン関数やdynamic parallelismにも対応しています。
  • 1つのセッション内でホストとデバイスのコードをデバッグします。見やすくするために正のスレッド番号がホスト用、負のスレッド番号がデバイス用に割り振られます。
  • 1つのwarp内にある全てのスレッドを同時にステップ実行します。現時点のCUDAの仕様ではこの数は32で固定されています。
  • CUDAの関数呼び出し、ホストのピン止めされたメモリ領域を可視化します。

CUDAデバイス座標を柔軟に表示、ナビゲーション

バイスのスレッドを論理座標とデバイス座標の両方で操作できます。通常のCPUマルチスレッドの場合と同様、複数のスレッドを別画面で表示させることもできます。ホワイトペーパー Debugging CUDA-Accelerated Parallel Applications with TotalView は、TotalViewをCUDAに対応させるための歴史が書かれて読み物としても面白いですが、その中の一節に、CUDAの膨大で動的に変化するスレッドを扱うための工夫の1つとしてこの負のスレッドIDが紹介されています。

論理座標 (Grid, Block) f:id:RWSJapan:20150831152035p:plain 物理座標 (device, SM, Warp, Lane) f:id:RWSJapan:20150831152042p:plain

CUDAの論理座標と物理座標のマッピングを表示。左側が物理座標、右側が論理座標。

f:id:RWSJapan:20150831152233p:plain

メモリのストレージ修飾子 (Storage Qualifier)

CUDAには、GPUの構造を反映して複数のメモリの型が存在します。global、shared、local、constantなど、用途に応じてアクセス性や速度が異なります。TotalViewは確保されたメモリの修飾子を表示して開発者がイメージするのを助けます。

@parameter等“@”がついたものはCUDA特有のメモリ空間を表します。 f:id:RWSJapan:20150831153627p:plain

CUDA のメモリチェック

アラインされていないメモリアクセス、アクセス違反、レースコンディションなどを検知して通知します。以下の例は(かなり作為的ですが)不正な配列アクセスを検知しています。 f:id:RWSJapan:20150831154103p:plain

お問い合わせ

ローグウェーブソフトウェアの製品にご興味をお持ちの方はお気軽にご連絡ください。 http://roguewave.jp/forms/request.htmlroguewave.jp

関連資料

ローグウェーブ セールスエンジニア 柄澤(からさわ)