以下の内容はhttps://msyksphinz.hatenablog.com/entry/2024/07/21/040000より取得しました。


GPUアーキテクチャについての資料を読む (Digital Design & Computer Arch. 3. 分岐のダイバージェンス)

前のブログエントリの続き:

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

引き続き、以下の資料を読んでいく。

https://safari.ethz.ch/digitaltechnik/spring2023/lib/exe/fetch.php?media=onur-ddca-2023-lecture20-gpu-beforelecture.pdf


  • BlockからWarpへ
    • GPUコア自体はSIMDパイプライン
      • Streaming Processorが入っている
      • SIMDプロセッサが大量に入っている (Streaming Multiprocessor: SM)
    • BlockはWarpに分解される (SIMD/SIMTユニット:32スレッドのグループ)
図は本論文より引用
  • WarpをベースとしたSIMDと、それまでのSIMDは何が違うのか?
    • それまでのSIMDはシングルスレッドで動作している
      • 命令はシーケンシャルに動作する
      • プログラミングモデルがSIMD: ソフトウェアエンジニアはベクトル長について知る必要がある
      • ISA自体に、ベクトル・SIMD命令が含まれている
  • WarpをベースとしたSIMDでは、複数のスカラスレッドが含まれておりSIMDの形で実行される
    • 各スレッドは独立に扱われる:プログラミングモデルはSIMDである
    • ISA自体はスカラ命令
    • 基本的には、SPMDのプログラミングモデルがSIMDハードウェアに実装されている
  • SPMP: Single Procedure/Program, Multiple Data
    • これはコンピュータ構成方法というよりも、プログラミングモデル
    • 各プロセッシング・エレメントはデータが異なる、同じプログラムを実行する
      • Prodedureはプログラム中の特定のポイントで同期することが可能である。
  • 複数の命令ストリームが同じプログラムを実行する
    • 各プログラム/Procedure が 1) 異なるデータを処理する 2) 異なる制御フローパスを実行することができる
    • 多くの科学技術計算はこの方式でプログラミングされ、MIMDハードウェアで実行される
    • 現代のGPUプログラムは同じような方法でプログラミングされ、SIMDハードウェアで実行される
  • SIMTの利点:

    • 複数のスレッドを柔軟にグループ化することができる
    • 例えば、真に同じ命令を実行すると想定されるスレッドをグループ化することができる → 動的にSIMD処理の利点を最大化することができる
  • WarpベースのSIMDにおいて、スレッドは異なるパスを実行することができる

    • 各スレッドは条件付き制御フロー命令を含むことができる
    • 各スレッドは異なる制御フローパスを実行することができる
図は本論文より引用
  • GPU/SIMT命令において、GPUは制御ロジックを削減するためにSIMDパイプラインを使用する
    • Warp内のスレッドの分岐命令によって、分岐のダイバージェンスが発生し、異なる実行パスが発生する
図は本論文より引用
  • 多くのスレッドがある場合

    • 同じPCの独立したスレッドを見つけることができる
    • そして、それらをまとめて1つのWaprに動的に構成できる
    • これにより「ダイバージェンス」の発生を抑え、SIMDの効率を向上させる
  • 動的なWarpの構成・動的なWarpのマージ

    • 同じ命令を実行しているスレッドをマージする (分岐のダイバージェンスが発生した後、同じPCを実行している命令)
    • 待ち状態のスレッドから、新しいWarpを構成する
図は本論文より引用
図は本論文より引用
図は本論文より引用
図は本論文より引用



以上の内容はhttps://msyksphinz.hatenablog.com/entry/2024/07/21/040000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14