CUDA Academy · レッスン

cudaMemAdviseでヒントを与える

ドライバーによる配置の選択を導きます。

レッスン 4/413 ステップ

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

命令ではなく助言を与える

プリフェッチはデータを今すぐ移動します。一方、cudaMemAdviseは、ある領域をどのように使う予定かをドライバーに伝え、時間をかけてページを適切に配置できるようにします。

呼び出しの形式

ポインタ、バイト数、adviceフラグ、デバイスIDを渡します。ドライバーはそのヒントを、将来の移行判断に反映します。

cudaMemAdvise(data, bytes, advice, device);

共有にはReadMostly

多くのデバイスが読み取り、書き込みはほとんど行わないデータには、cudaMemAdviseSetReadMostlyを使います。ドライバーは両方の側に読み取り専用コピーを保持し、移行を避けられます。

cudaMemAdvise(data, bytes,
  cudaMemAdviseSetReadMostly, dev);

PreferredLocationでホームを固定する

cudaMemAdviseSetPreferredLocationを使うと、ページのホームとなるデバイスを指定できます。別の側からアクセスされても、ページはそこから移動しにくくなります。

cudaMemAdvise(data, bytes,
  cudaMemAdviseSetPreferredLocation, dev);

AccessedByで移行を省く

cudaMemAdviseSetAccessedByは、あるデバイスがこの領域にアクセスすることを示すため、ドライバーはそのデバイスにマッピングします。ページを移動する代わりに、バス経由でアクセスします。

cudaMemAdvise(data, bytes,
  cudaMemAdviseSetAccessedBy, dev);

ヒントでピンポンを止める

2つのデバイスが同じページを奪い合う場合、適切な助言によって往復を止められます。配置を安定させることで、データが行ったり来たりするのを防ぎます。

助言は保持される

1回限りのプリフェッチとは異なり、助言は変更するまでその領域に保持されます。バッファが存在する間のあらゆる移行判断に影響します。

各助言にはUnsetがある

Setフラグには、ヒントを取り消す対応するUnset形式があります。アクセスパターンが変わったら助言を解除し、ドライバーを誤誘導しないようにしてください。

cudaMemAdvise(data, bytes,
  cudaMemAdviseUnsetReadMostly, dev);

助言とプリフェッチを組み合わせる

この2つのツールは相性がよいものです。PreferredLocationでホームを定め、プリフェッチでそこにデータを入れると、移行が安定したパターンに落ち着きます。

あくまでヒント

名前の意味を覚えておきましょう。助言は保証ではなく提案です。ドライバーが無視することもあるため、配置が役立ったか必ずプロファイリングで確認してください。

Unified Memoryツールキット

これで3つの手段がそろいました。管理対象ポインタ、タイミングを制御するプリフェッチ、配置を指定する助言です。これらを組み合わせると、Unified Memoryは使いやすく高速になります。

確認問題

cudaMemAdviseとプリフェッチの違いを確認しましょう。

まとめ:メモリに関する助言

ReadMostly、PreferredLocation、AccessedByなどのcudaMemAdviseのヒントで、ページ配置を誘導する方法を学びました。プリフェッチと組み合わせ、プロファイリングしましょう。よくできました!🎯

無料で開始

AI チューターと学ぶ C++ — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「cudaMemAdviseでヒントを与える」レッスンは無料ですか?

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

「cudaMemAdviseでヒントを与える」で何を学びますか?

ドライバーによる配置の選択を導きます。 ブラウザで直接実行するハンズオンコードでCUDA Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「cudaMemAdviseでヒントを与える」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. 1つのポインターを両方で使う
  2. オンデマンドのページ移行
  3. cudaMemPrefetchAsyncでプリフェッチする
  4. cudaMemAdviseでヒントを与える
← CUDA Academyに戻る