SM

summary:

SM[Streaming Multiprocessor]は,NVIDIA GPUアーキテクチャにおける基本的な演算ユニットの集合体であり,並列処理の実行単位である.

GPUは複数のSMを備え,それぞれが独立して並列に計算を実行することで,高いスループットを実現する.SMは,CUDAコア,テンソルコア,特殊演算ユニットなどの計算リソースを内包し,スレッドブロック単位で割り当てられたワークロードを効率的に処理する役割を担う.

SMは,NVIDIA GPUアーキテクチャの中核をなす構造であり,CUDA[Compute Unified Device Architecture]プログラミングモデルにおいては,スレッドブロックが実行される物理的な単位となる.各SMは,独自のスケジューラ,レジスタファイル,命令キャッシュ,データキャッシュ,共有メモリを備えており,これらのリソースを活用することで,複数のスレッドワープを同時に管理・実行する.SMの設計はアーキテクチャの進化に伴い改良され,より多くのCUDAコアやテンソルコア,高速メモリを統合することで,演算性能とエネルギー効率の向上が図られている.

なお,GPUSMCPUALU[Arithmetic Logic Unit, 算術論理演算装置]に相当するものではなく,CPUコアに近い概念である.

1つのSMは以下のような構成要素を内包している.

GPUプログラミング[特にCUDA]において,SMの概念は極めて重要である.すなわち,プログラムは以下のような階層で並列構成される.

Grid[グリッド]→ 複数のBlock[スレッドブロック]→ 複数のThread[スレッド]

このうち,1つのスレッドブロックは,実行時に1つのSMに割り当てられる.したがって,ブロック内のスレッド間で共有メモリを用いた通信が可能なのは,同じSM上で実行されるためである.逆に,異なるSMにまたがるブロック間での直接通信はできない.異なるSMにまたがるブロック間の通信は,GPU上のすべてのスレッド[すなわちすべてのブロック・すべてのSM]からアクセス可能な,大容量のメモリ空間であるグローバルメモリ[Global Memory]を介した通信が一般的に行われる.

また,レジスタ数や共有メモリ容量といったSMのリソース制約は,スレッド数やブロック数の上限,およびスケジューリング効率に直接影響を及ぼすため,プログラム最適化の際に非常に重要な要素である.

Mathematics is the language with which God has written the universe.





















TDM テンソルコア Jupyter MPPDB conda SDN