CUDA Academy · レッスン

SIMT:同じ命令を多数のスレッドで実行する

GPUを高速にする実行モデルを学びます。

レッスン 2/413 ステップ

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

GPUが処理を止めない仕組み

何千ものコアに指示を出すには、賢い方法が必要です。GPUの答えがSIMT、つまりSingle Instruction, Multiple Threadsです。⚡

1つの命令、多数のスレッド

SIMTでは、1つの命令がスレッドのグループ全体に一度にブロードキャストされます。各スレッドは同じ手順を、それぞれ異なるデータに対して実行します。

同じレシピ、異なる材料

すべての料理人がまったく同じレシピの手順に従いながら、それぞれ異なる皿を調理するキッチンを想像してください。その共有される手順が命令です。🍳

Warpの紹介

GPUはスレッドを32個ずつまとめ、warpと呼ばれる単位にします。warpは実際に一緒に、lockstepで、1命令ずつ実行される単位です。

32個単位でまとめる理由

32個のスレッドに一度に1つの命令を発行するほうが、32個の個別の命令を発行するよりはるかに低コストです。この共有こそが、GPUの効率を生み出します。

各スレッドが独自のデータを持つ

warp内のスレッドは命令を共有しますが、レジスタは個別に保持します。そのため、スレッド0とスレッド5は同じ加算を、異なる数値に対して実行できます。

SIMTは厳密にはSIMDではない

従来のSIMDは、固定幅のベクトルを処理します。SIMTは命令を共有する考え方を保ちながら、必要に応じて各スレッドがより独立して動作できるようにします。

分岐の問題

warpの半分がif分岐を選び、もう半分が選ばなかったらどうなるでしょうか。warp内のスレッドは一緒に進むことを前提としているため、分岐によってグループが分かれてしまいます。

if (x > 0) {
  y = x * 2;
} else {
  y = -x;
}

Warp divergence

warp内のスレッドが分岐の結果で異なる動きをすると、warpは各経路を順番に実行し、その間ほかのスレッドを無効にします。この逐次的な再実行をdivergenceと呼びます。

Divergenceは速度を低下させる

分岐した経路は順番に実行されるため、並列性が失われます。warpを同じ経路上で実行し続けることは、高速なkernelの重要なポイントです。

SIMTが非常によくスケールする理由

1つの命令で32個のスレッドを動かし、さらに多数のwarpを同時に実行することで、GPUは演算ユニットを隙間なく稼働させます。これがSIMTを圧倒的なスループットにつなげる仕組みです。

理解度チェック

SIMTに関する用語をしっかり理解できているか確認しましょう。

まとめ:SIMT

SIMTは1つの命令を32スレッドのwarpにブロードキャストし、各スレッドが自分のデータを処理します。すべてのスレッドが一緒に進めるよう、分岐の分散を避けましょう。👍

無料で開始

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

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

コース
30
レッスン
120

よくある質問

「SIMT:同じ命令を多数のスレッドで実行する」レッスンは無料ですか?

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

「SIMT:同じ命令を多数のスレッドで実行する」で何を学びますか?

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

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

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

「SIMT:同じ命令を多数のスレッドで実行する」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. CPUとGPU:レイテンシーとスループット
  2. SIMT:同じ命令を多数のスレッドで実行する
  3. CUDAとは実際には何か
  4. GPUが得意とする問題
← CUDA Academyに戻る