Coelacanth's Dream

LLVM に GFX1031 へ向けたパッチが投稿される

AMDGPU のコンパイラバックエンドとしても用いられる LLVM に、GPUID gfx1031 のサポートに向けた初のパッチが投稿された。
[AMDGPU] gfx1031 target · llvm/llvm-project@ea7d0e2

概要としては、オープンソースドライバーの RadeonSI (OpenGL)RADV (Vulkan)Navy Flounder のサポートが追加された時と同様に、
大きな追加点、変更点は gfx1030 /Sienna Cichlid の時に追加されているため、基本 gfx1031 の名を対応させたものとなっている。
RadeonSI、RADV が AMD Navy Flounder をサポート | Coelacanth’s Dream

各 GPUID、AMDGPUマイクロアーキテクチャの詳細が記述された llvm/AMDGPU.tdにはコードの追加、変更が行なわれなかったため、gfx1031 が持つバグといったような詳細はまだ不明であるが、
前回疑問に覚えられた Navy Flounder が、Sienna Cichlid と同じ gfx1030 に関連付けられていたことへの解答があった。

まず、現時点で gfx1030gfx1031 との間に対応する命令範囲に違いはない。

  case GK_GFX1031:
  case GK_GFX1030:
    Features["ci-insts"] = true;
    Features["dot1-insts"] = true;
    Features["dot2-insts"] = true;
    Features["dot5-insts"] = true;
    Features["dot6-insts"] = true;
    Features["dl-insts"] = true;
    Features["flat-address-space"] = true;
    Features["16-bit-insts"] = true;
    Features["dpp"] = true;
    Features["gfx8-insts"] = true;
    Features["gfx9-insts"] = true;
    Features["gfx10-insts"] = true;
    Features["gfx10-3-insts"] = true;
    Features["s-memrealtime"] = true;
    break;

引用元: llvm-project/AMDGPU.cpp at ea7d0e2996ec6b72a08dbef26dadf217458ab382 · llvm/llvm-project

ただ、gfx10-3-insts に関してはまだ詳細が明かされて(記述されて)いない。

次に、llvm-project/GCNProcessors.tdにおいても、gfx1031FeatureISAVersion10_3_0 に関連付けられている。

 def : ProcessorModel<"gfx1030", GFX10SpeedModel,
   FeatureISAVersion10_3_0.Features
 >;
 
 def : ProcessorModel<"gfx1031", GFX10SpeedModel,
   FeatureISAVersion10_3_0.Features
 >;

引用元: llvm-project/GCNProcessors.td at ea7d0e2996ec6b72a08dbef26dadf217458ab382 · llvm/llvm-project

つまり、前回書いたように、LLVM のバージョンが追い付いていないため、Navy Floundergfx1030 に関連付けた、
もしくは、AMD GPU のソフトウェア開発者が OSS である LLVM に gfx1031 のパッチを投稿できる段階になく、LLVM にしても gfx1031gfx1030 に関連付けるしかない、と考えられる。

何にしても、現段階では gfx1031 は機能的に gfx1030 と変わらないとされ、Navy Floundergfx1030 に関連付けられている。
そして、Navy FlounderchipRevision の範囲から Navi22 とされ、Navi22の GPUID は gfx1031 であると考えられている。

新 GPU のソフトウェアサポートの初期における、情報開示の制限によるボタンの掛け違いが起こっただけであり、自分としては以下の表であるように思う。
ボタンを掛け違えるのは開発者側ではなく、自分たちの側である。

GFX10.3 ASIC Code Name GPUID
Sienna Cichlid /Navi21 gfx1030
Navy Flounder /Navi22 gfx1031