プロファイル、最適化、出荷
Nsight のメトリクスで改善を完了する
「プロファイル、最適化、出荷」はCoddyKit上の無料CUDA Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCUDA Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CUDA Academyコースには全4レッスンが含まれています。
推測せずに測定する
最適化は思い込みではなく、データから始まります。1行でも変更する前に、まず必ずプロファイルを取得し、実際に時間がかかっている場所を確認してください。🔍
タイムラインから始める
Nsight Systemsを開き、カーネル、コピー、空白時間を含む実行全体を確認します。タイムラインを見ると、転送と計算が実際にオーバーラップしているかどうかが分かります。
負荷の高いカーネルを見つける
通常、1つのステージが処理時間の大部分を占めます。タイムラインで最も長く実行されているカーネルを見つけ、そこからチューニングを始めてください。
Nsight Computeで詳細を見る
負荷の高いカーネルについては、Nsight Computeに切り替えます。カーネルごとのメモリスループット、ストール、達成オキュパンシーなどの指標を確認できます。
ルーフラインを読む
ルーフラインによって、カーネルがメモリ帯域律速なのか、計算律速なのかが分かります。この答えだけで、試す価値のある最適化を判断できます。
メモリ帯域律速のカーネルを改善する
メモリ帯域律速であれば、コアレッシング、共有メモリのタイル化、ベクトル化ロードに取り組みます。データをより速く供給することだけが、さらなる高速化につながります。
計算律速のカーネルを改善する
計算律速であれば、アンローリングによってILPを高め、冗長な計算を削減するか、低精度へ移行します。この場合の制約は演算ユニットです。
NVTXでコードにラベルを付ける
パイプラインのステージをNVTXのレンジで囲み、タイムラインに名前付きのバーを表示します。読みやすいプロファイルは、デバッグを速めます。
nvtxRangePush("blur");
blurKernel<<<grid, block>>>(d_in, d_out);
nvtxRangePop();一度に1つだけ変更する
最適化を1つ適用したら、再度プロファイルを取得します。この短いループによって、各変更の効果を確認でき、2つの影響を同時に追いかけずに済みます。
やめどきを知る
カーネルがルーフラインの限界に近づくと、さらにチューニングしても効果は小さくなります。限界効用の逓減を見極め、次のボトルネックに時間を使ってください。
検証してから出荷する
リリース前に、参照実装と比較して正しさを確認し、高速化の効果が安定していることを確かめます。速くても間違っているパイプラインは出荷可能ではありません。🚢
確認問題
Nsight Computeによると、負荷の高いカーネルはメモリ帯域律速です。最初にどの改善を試すべきでしょうか。
まとめ
Nsightを使ってプロファイルを取得し、ルーフラインでカーネルの種類を判定し、対象を絞った改善を1つずつ適用し、速くて正しいパイプラインを出荷する前に検証する方法を学びました。🏁
よくある質問
「プロファイル、最適化、出荷」レッスンは無料ですか?
はい。「プロファイル、最適化、出荷」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CUDA Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CUDA Academyコースには全4レッスンが含まれています。
「プロファイル、最適化、出荷」で何を学びますか?
Nsight のメトリクスで改善を完了する ブラウザで直接実行するハンズオンコードでCUDA Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CUDA Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCUDA Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「プロファイル、最適化、出荷」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCUDA Academyレッスンでコードを書いて実行できますか?
はい。すべてのCUDA Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。