threadIdx、blockIdx、blockDim
スレッドの位置を特定する組み込み変数を学びます。
「threadIdx、blockIdx、blockDim」はCoddyKit上の無料CUDA Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCUDA Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CUDA Academyコースには全4レッスンが含まれています。
自分の位置はどこですか?
すべてのスレッドが同じコードを実行するため、それぞれが「自分のデータはどれか」を確認する必要があります。CUDAは組み込みの変数を使ってこれに答えます。📍
threadIdxの紹介
カーネル内では、threadIdxが各スレッドに、そのスレッド自身のブロック内での位置を知らせます。ブロック内の最初のスレッドでは、threadIdx.xは0です。
int t = threadIdx.x;blockIdxの紹介
blockIdx変数は、グリッド内でそのスレッドが属しているブロックを知らせます。ブロック番号も0から始まります。
int b = blockIdx.x;blockDimの紹介
blockDimも利用できます。これはブロックあたりのスレッド数です。256個のスレッドを起動した場合、すべてのスレッドでblockDim.xは256になります。
int width = blockDim.x;自動的に設定されます
これらの変数を自分で設定する必要はありません。カーネルが起動すると、CUDAが各スレッドに対して自動的に値を設定します。
.x、.y、.zフィールド
これらには、1D、2D、3Dの起動に対応するx、y、zフィールドがあります。単純な配列では、通常xフィールドだけを使います。
組み合わせて使う
threadIdxだけでは、各ブロックで同じ値が繰り返されます。一意な位置を得るには、blockIdxとblockDimをthreadIdxと組み合わせる必要があります。
簡単な例
blockDimが4の場合、ブロック0のスレッド2は要素2ですが、ブロック1のスレッド2は要素6です。ブロックによって開始位置がずれます。
読み取り専用の補助情報
これらの組み込み情報は、カーネル内では読み取り専用です。スレッドが正確にどこに位置しているかを示す、信頼できる座標として扱ってください。
gridDimもあります
もう1つ便利なものがあります。gridDimには、グリッド内のブロック総数が格納されます。スレッド数を超えるデータをループ処理するときに役立ちます。
int blocks = gridDim.x;重要な理由
この3つの変数は、グローバルインデックスを計算するための基本要素です。グローバルインデックスによって、各スレッドが自分の要素を担当できます。
簡単な確認
示された役割を果たす変数を選んでください。
復習:スレッドの位置を特定する
組み込み変数を学びました。threadIdxはブロック内の位置、blockIdxはブロック、blockDimはブロックサイズを表します。これらを組み合わせると、スレッドを正確に特定できます。✅
よくある質問
「threadIdx、blockIdx、blockDim」レッスンは無料ですか?
はい。「threadIdx、blockIdx、blockDim」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CUDA Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CUDA Academyコースには全4レッスンが含まれています。
「threadIdx、blockIdx、blockDim」で何を学びますか?
スレッドの位置を特定する組み込み変数を学びます。 ブラウザで直接実行するハンズオンコードでCUDA Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CUDA Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCUDA Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「threadIdx、blockIdx、blockDim」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCUDA Academyレッスンでコードを書いて実行できますか?
はい。すべてのCUDA Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- スレッド階層
- threadIdx、blockIdx、blockDim
- ブロックが存在する理由
- ブロックあたりのスレッド数を選ぶ