
CUDAでコーディングをしているとき、GPUで何が起きているか判らないですよね。
そんなときは、Nsightというツールを使って処理の解析をしましょう。
Nsightは、CUDA ToolKitをインストールしたときに一緒に使えるようになる解析ツールです。
うまく活用すれば、動作の確認などがスムーズになり、CUDAへの理解もより深まるでしょう。
この記事では、最も利用するであろうTimelineの使い方を解説します。
環境
CUDA Toolkit バージョン10.0
ディスプレイドライバのバージョン416.94
もし、Nsightで結果がうまく見れないときはドライバのバージョンなどを新しくしてみましょう。
Nsightは動作環境にシビアなので、どうしても動かないときは無駄に悩むよりはバージョンを変えたりして試してみることが大事です。
手順
Nsightの起動
Visual Studioのメニューから[Nsight]->[Start Performance Analysis…]をクリックします。

[Connect unsecurely]か[OK]をクリックします。

解析したいソフトの起動
以下のような画面が出て来たら、判りづらいですが下へスクロールしてください。

スクロールすると、チェックする箇所が出てくるので[CUDA]の欄にチェックを入れて、
さらに下の[Application Control]の[Launch]をクリックして下さい。

ソフトで処理
ソフトが起動するので、解析させたい箇所が実行されるように操作しましょう。
解析をしているので、普通に動作させるよりも遅いですが、解析結果には影響しません。
解析させたい箇所の実行が終わったら、ソフトを終了しましょう。
Timelineの表示
ソフトが終了したら、以下のような画面が出るはずです。
[Timeline]をクリックしましょう。

このように、タイムラインが表示されます。

Timelineの見方
Timelineの見方は以下の通りです。

棒の部分にカーソルを合わせると、詳細情報が表示されます。
以下はHostToDeviceの情報です。
転送サイズや時間などの情報が表示されています。

なお、実行したコードはこちらで解説したコードです。

まとめ
今回はシンプルな処理でTimelineの見方を解説しましたが、複数の処理を同時に実行させたときほどTimelineの真価を発揮します。
処理が意図したとおりにスケジューリングされているか確認ができれば、より高速化を図れるのでうまく活用しましょう。
