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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Occupancyの本当の意味
- レジスターと共有メモリの制限
- Occupancy Calculator API
- Occupancyがすべてではない理由