0Pricing
CUDA Academy · レッスン

Occupancy Calculator API

cudaOccupancyMaxPotentialBlockSizeを使います。

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

ブロックサイズの推測をやめる

手作業で調整する代わりに、CUDAにはカーネルに適したブロックサイズを自動的に計算するOccupancy APIがあります。

代表的な関数

1回の呼び出しで主要な処理を行えます。cudaOccupancyMaxPotentialBlockSizeは、Occupancyを最大化するブロックサイズを提案します。

cudaOccupancyMaxPotentialBlockSize(&grid, &block, myKernel);

返される値

カーネルでデバイスを完全に占有するために必要な、推奨ブロックサイズと最小グリッドサイズが設定されます。

カーネルを理解している

このAPIはカーネルが実際に使用するレジスタと共有メモリを読み取るため、一般的な推測ではなく、そのカーネルに正確に合った値を提案します。

Occupancyを予測する

関連する別の呼び出しでは、ある設定でSMあたりに何個のアクティブブロックを配置できるかが分かります。そのため、起動前にOccupancyを予測できます。

cudaOccupancyMaxActiveBlocksPerMultiprocessor(&n, k, 256, 0);

割合を計算する

SMあたりのブロック数にブロックあたりのwarp数を掛け、SMの最大warp数で割ると、理論Occupancyの割合が得られます。

動的共有メモリ

これらの呼び出しは動的共有メモリの引数を受け取るため、起動時にカーネルが共有メモリのサイズを決める場合でも、予測の正確さが保たれます。

異なるGPUでも移植可能

実行中のデバイスを問い合わせるため、数値をハードコードしなくても、同じコードで異なるGPUに適したサイズを選べます。

起動時に使用する

初期化中にOccupancy APIを1回呼び出し、ブロックサイズを保存して、そのカーネルを起動するたびに再利用します。

信頼できる初期値

提案されたサイズは優れた出発点です。それでも近い値をいくつかベンチマークし、データに対する真の最適値を見つけられます。

マジックナンバーに勝る理由

256のようなハードコードされたサイズは、リソースが変わると適さなくなります。APIは適応し、カーネルを自動的にピークOccupancyの近くに保ちます。

確認問題

cudaOccupancyMaxPotentialBlockSizeが何を返すか思い出しましょう。

まとめ

Occupancy APIについて学びました。このAPIは、移植性がありカーネルを考慮したブロックサイズを提案し、起動前にOccupancyを予測します。⚙️

よくある質問

「Occupancy Calculator API」レッスンは無料ですか?

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

「Occupancy Calculator API」で何を学びますか?

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

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

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

「Occupancy Calculator API」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Occupancyの本当の意味
  2. レジスターと共有メモリの制限
  3. Occupancy Calculator API
  4. Occupancyがすべてではない理由
← CUDA Academyに戻る