0Pricing
CUDA Academy · レッスン

実効帯域幅を測定する

実測スループットと理論ピーク値を比較します。

「実効帯域幅を測定する」はCoddyKit上の無料CUDA Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCUDA Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CUDA Academyコースには全4レッスンが含まれています。

理論から数値へ

コアレッシングは有効ですが、実際に確認する必要があります。真の性能を示す指標は、カーネルの実効帯域幅(ギガバイト毎秒)です。

実効の意味

実効帯域幅は、カーネルが実際に必要としたバイト数を、処理にかかった時間で割ったものです。無駄なラインではなく、有用な処理量を反映します。

単純な式

読み取ったバイト数と書き込んだバイト数を足し、経過秒数で割ります。その比率が達成したスループットです。

double gbps = (bytesRead + bytesWritten) / seconds / 1e9;

イベントで時間を測る

CUDAイベントでカーネルを囲みます。CPU側のクロックによるノイズなしに、GPUの処理時間を正確に測定できます。

cudaEventRecord(start);
myKernel<<<g, b>>>(...);
cudaEventRecord(stop);

経過時間を読み取る

停止イベントとの同期後、CUDAに時間差を問い合わせます。結果はミリ秒で返るため、式に代入する前に1000で割ってください。

float ms;
cudaEventElapsedTime(&ms, start, stop);

バイト数を把握する

n個のfloatについてC = A + Bを行う場合、2n個を読み取り、n個を書き込むため、移動するのは3n個のfloatです。4を掛けて移動したバイト数を求めます。

size_t bytes = 3 * n * sizeof(float);

ピーク値を確認する

すべてのGPUには理論上のピーク帯域幅が示されています。実効値は、その上限に対する割合として考えて初めて意味を持ちます。

効率比

実効帯域幅をピーク帯域幅で割ると、パーセントを求められます。コアレッシングされたメモリ帯域幅律速のカーネルは、しばしばピークの70~90パーセントに達しますが、ストライドアクセスでは大幅に低下します。

最初にウォームアップする

最初の起動では、一度だけ発生するセットアップコストがかかります。カーネルを1回実行してウォームアップし、その後、安定した値を得るために複数回測定して平均を取ってください。

プロファイラで確認する

Nsight Computeはメモリスループットを直接報告するため、計算結果を確認できます。また、コアレッシング不良による無駄なバイト数も指摘します。🔧

判断に活用する

比率が低い場合はメモリがボトルネックなので、コアレッシングとレイアウトを改善します。比率が高い場合は、速度に関する別の要因を調べてください。

クイックチェック

実効帯域幅を計算してください。

まとめ

これで、イベントを使って実効帯域幅を測定し、ピーク値と比較して、その比率からメモリがボトルネックかどうか判断できるようになりました。🎉

よくある質問

「実効帯域幅を測定する」レッスンは無料ですか?

はい。「実効帯域幅を測定する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CUDA Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CUDA Academyコースには全4レッスンが含まれています。

「実効帯域幅を測定する」で何を学びますか?

実測スループットと理論ピーク値を比較します。 ブラウザで直接実行するハンズオンコードでCUDA Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

CUDA Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCUDA Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「実効帯域幅を測定する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCUDA Academyレッスンでコードを書いて実行できますか?

はい。すべてのCUDA Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. メモリトランザクションとは何か
  2. コアレスアクセスとストライドアクセス
  3. Structure of ArraysとArray of Structs
  4. 実効帯域幅を測定する
← CUDA Academyに戻る