0Pricing
CUDA Academy · レッスン

PCIe転送のボトルネック

コピーが遅い処理になりやすい理由を学びます。

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

世界をつなぐ橋

CPUとGPUは、PCIeバスで接続された別々のボード上にあります。すべてのcudaMemcpyは、この狭い橋を通らなければなりません。🌉

速度の差

GPUメモリの帯域幅は毎秒数テラバイトに達しますが、PCIeが提供できるのは数十ギガバイトにすぎません。バスが低速な経路になります。

コピーが支配的になることがある

短時間で終わるカーネルでは、転送時間が計算時間を大きく上回ることがあります。データの到着を待つ間、GPUはアイドル状態になります。

コピーを減らし、計算を増やす

最初の対策は簡単です。必要なものだけを移動し、GPU上にデータを置いた後は1バイトあたりにより多くの処理を行います。

データを常駐させる

配列を何度も往復させないでください。再アップロードする代わりに、複数のカーネルにわたってデバイス上に常駐させます。

小さなコピーをまとめる

小さな転送を多数行うと、それぞれで固定のオーバーヘッドが発生します。それらを1回の大きなコピーにまとめると、はるかに効率的です。📦

ストリームと重ね合わせる

streamsを使ってコピーと計算を重ね合わせると、転送コストを隠せます。その間もGPUはデータを流しながら処理できます。

ページ固定メモリが役立つ

Pinnedホストメモリを使うと、DMAや非同期コピーが高速になります。転送とカーネルを本当に重ね合わせるための鍵です。

推測せず測定する

コピーとカーネルの時間を別々に計測してください。Nsightのようなprofilerを使えば、バスのどこがボトルネックかを正確に確認できます。

Rooflineの考え方

転送がボトルネックの場合、カーネルを高速化しても効果はありません。まずデータ移動を減らし、その後で計算を最適化してください。

転送する価値はあるか

小規模な問題では、コピーのコストが高速化による効果を上回ることがあります。GPUの効果が出るのは、computeが転送時間を明確に上回る場合です。

確認問題

プロファイリングの結果、プログラムの大半の時間をPCIe経由のデータ移動に費やしていることが分かりました。最も効果的な対策は何ですか?

まとめ

PCIeが低速な経路になる理由を確認しました。コピーを減らし、データを常駐させ、転送をまとめ、ストリームと重ね合わせ、必ず測定してください。🎉

よくある質問

「PCIe転送のボトルネック」レッスンは無料ですか?

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

「PCIe転送のボトルネック」で何を学びますか?

コピーが遅い処理になりやすい理由を学びます。 ブラウザで直接実行するハンズオンコードでCUDA Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「PCIe転送のボトルネック」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. ホストからデバイスへの転送
  2. デバイスからホストへの転送
  3. コピー方向の列挙型
  4. PCIe転送のボトルネック
← CUDA Academyに戻る