NVTXでコードに注釈を付ける
範囲に名前を付け、読みやすいタイムラインを作ります。
「NVTXでコードに注釈を付ける」はCoddyKit上の無料CUDA Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCUDA Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CUDA Academyコースには全4レッスンが含まれています。
タイムラインにはラベルが必要
生のタイムラインには、名前のないバーが並びます。NVTXを使えば独自の名前を追加でき、プロファイラ上でコードの内容を読み取れるようになります。🏷️
NVTX とは
NVTXは NVIDIA's Tools Extension です。領域やイベントをマークする小さなライブラリで、Nsight がそのマークをタイムラインに表示します。
ヘッダーをインクルードする
まず1つのヘッダーをインクルードします。これで、ホストコードのどこからでもマーク用の呼び出しを利用できるようになります。
#include <nvtx3/nvToolsExt.h>範囲をマークする
処理の一部分を名前付きの範囲で囲みます。push で開始し、pop で終了すると、ラベル付きのバーが1つ描画されます。
nvtxRangePush("load data");
// work here
nvtxRangePop();Push と pop の入れ子
範囲は角括弧のように入れ子になります。外側の範囲を pop する前に内側の push を pop するため、タイムライン上でラベルがきれいに積み重なります。
瞬間的なマーカー
ある瞬間だけを示したい場合は、範囲ではなくマーカーを配置します。エポックの開始など、1つのイベントを記録できます。
nvtxMark("epoch start");範囲に色を付ける
各範囲に色を付けると、ステージを一目で見分けられます。読み込みを青、計算を緑にする、といった設定が可能です。
読みやすいタイムライン
NVTX を使うと、Nsight の表示上で preprocess や inference などのフェーズを名前で確認できます。暗号のようなカーネルシンボルを読み解く必要がなくなります。
無効時のコストはほぼゼロ
プロファイラが接続されていないとき、NVTX の呼び出しはほぼ無償です。実質的なコストなしで、アノテーションをコードに残しておけます。
ホスト側で動作する
NVTX はホストコード、つまり処理を指揮する CPU 側のコードにアノテーションを付けます。カーネルやコピーが実行される領域を示します。
RAII ラッパー
現代的な C++ では、範囲を小さなRAIIオブジェクトで囲むことがよくあります。スコープの終了時に自動的に pop されるため、呼び出しを忘れません。
クイックチェック
Nsight のタイムラインに、名前付きのラベル付き領域を表示したいとします。
まとめ
NVTX は、正体の分からないバーを名前付きの範囲やマーカーに変えます。push と pop を数回呼び出すだけで、Nsight のタイムラインがすぐに読みやすくなります。👏
よくある質問
「NVTXでコードに注釈を付ける」レッスンは無料ですか?
はい。「NVTXでコードに注釈を付ける」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CUDA Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CUDA Academyコースには全4レッスンが含まれています。
「NVTXでコードに注釈を付ける」で何を学びますか?
範囲に名前を付け、読みやすいタイムラインを作ります。 ブラウザで直接実行するハンズオンコードでCUDA Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CUDA Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCUDA Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「NVTXでコードに注釈を付ける」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCUDA Academyレッスンでコードを書いて実行できますか?
はい。すべてのCUDA Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。