CUDA Academy · レッスン

スレッド階層

スレッドはブロックに、ブロックはグリッドにまとまります。

レッスン 1/413 ステップ

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

多数のスレッド、1つの仕事

CUDAカーネルは多数のスレッドで並列に実行され、各スレッドがデータの自分の部分に同じ処理を行います。🧵

スレッドには構造が必要

何百万ものスレッドを無秩序に起動すると混乱します。CUDAはスレッドを整然とした階層に整理し、ハードウェアが効率よくスケジュールできるようにします。

スレッドはブロックを形成する

スレッドはブロックにまとめられます。ブロック内のすべてのスレッドは同じカーネルを実行し、互いに近い位置で協調できます。

ブロックはグリッドを形成する

1回の起動に含まれるすべてのブロックを合わせたものがグリッドです。つまり、スレッドはブロックに属し、ブロックはグリッドに属します。

2つの階層がある理由

この2階層の設計により、1つのカーネルを小さなGPUから大規模なGPUまで拡張できます。処理を一度記述すれば、グリッドが規模に合わせて広がります。

起動時に形状を選ぶ

三重山括弧構文を使い、起動時にブロック数とブロックあたりのスレッド数を指定します。

myKernel<<<numBlocks, threadsPerBlock>>>(data);

具体例

256スレッドのブロックを4つ起動するとします。4×256、つまり1024個のスレッドが同時に実行されます。

ブロックは独立している

異なるブロックは、実行順序を前提にしたり、直接通信したりできません。この独立性があるからこそ、GPUは任意の順序で実行できます。

ブロック内のスレッドは協調する

1つのブロック内では、スレッドが高速なチップ上メモリを共有し、互いに同期できます。この協調がブロックの強みです。

グリッドとブロックは3Dにもできる

グリッドと各ブロックは、1D、2D、3Dのいずれにもできます。dim3型を使えば、画像やボリュームに自然に対応付けられます。

dim3 block(16, 16);
dim3 grid(32, 32);

1スレッド、1要素

一般的な目標は、各スレッドに処理するデータ要素をちょうど1つ割り当てることです。階層は、その対応付けに到達する方法にすぎません。

簡単な確認

それぞれの要素がどのように入れ子になるか確認しましょう。

復習:階層

CUDAの階層を学びました。スレッドがブロックを構成し、ブロックがグリッドを構成します。独立したブロックはスケーラブルで、同じブロック内のスレッドは協調して動作します。🎯

無料で開始

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

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

コース
30
レッスン
120

よくある質問

「スレッド階層」レッスンは無料ですか?

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

「スレッド階層」で何を学びますか?

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

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

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

「スレッド階層」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. スレッド階層
  2. threadIdx、blockIdx、blockDim
  3. ブロックが存在する理由
  4. ブロックあたりのスレッド数を選ぶ
← CUDA Academyに戻る