Coelacanth's Dream

VanGogh, Beige Goby/Navi24, Yellow Carp/Rembrandt, Cyan Skilfish の GPUID

AMD がオープンソースで開発する ROCclr (Radeon Open Compute Common Language Runtime)ROCm-OpenCL-Runtime レポジトリの developブランチが更新され、そこに VanGogh, Navi24, Rembrandt の GPUID (GFX IP) を追加するコミットが含まれていた。
半分メモ書き。

Index

VanGogh, Navi24, Rembrandt

 Subject: [PATCH] SWDEV-290306 - [LNX][Navi24][mainline]clinfo test failed on
  Navi24
	
 Add Navi 24 support
 ---

      {"gfx1030",                "gfx1030",   true,  true,  false,              10, 3,  0,    NONE,   NONE, 2,    32,   1,    256,    64 * Ki, 32},
      {"gfx1031",                "gfx1031",   true,  true,  false,              10, 3,  1,    NONE,   NONE, 2,    32,   1,    256,    64 * Ki, 32},
      {"gfx1032",                "gfx1032",   true,  true,  false,              10, 3,  2,    NONE,   NONE, 2,    32,   1,    256,    64 * Ki, 32},
 +    {"gfx1034",                "gfx1034",   true,  false,  false,             10, 3,  4,    NONE,   NONE, 2,    32,   1,    256,    64 * Ki, 32}
 Subject: [PATCH] SWDEV-267762 - add RMB(gfx1035) to deviceQuery
	
 ---
 +    /* Navi21 */   { "gfx1030",     "gfx1030",     4, 32, 1, 256, 64 * Ki, 32, 10, 3 },
 +    /* Navi22 */   { "gfx1031",     "gfx1031",     4, 32, 1, 256, 64 * Ki, 32, 10, 3 },
 +    /* Navi23 */   { "gfx1032",     "gfx1032",     4, 32, 1, 256, 64 * Ki, 32, 10, 3 },
 +    /* Van Gogh */ { "gfx1033",     "gfx1033",     4, 32, 1, 256, 64 * Ki, 32, 10, 3 },
 +    /* Rembrandt */{ "gfx1035",     "gfx1035",     4, 32, 1, 256, 64 * Ki, 32, 10, 3 },

Navi24Rembrandt APU については、オープンソースドライバー (Mesa, Linux Kernel) には出てきていないコードネームではあるが、
タイミングからして Beige GobyGPUID: gfx1034Yellow CarpGPUID: gfx1035 が該当するのではないかと推測した以上、Beige Goby = Navi24Yellow Carp = Rembrandt と考えない訳にはいかないだろう。
両方の Device (PCI) ID か、ASICごとに割り振られる external_rev_id が判明すればそれが合っているかを確かめられるが。
既に 2つの DeviceID が用意されている Yellow Carp APU ファミリー | Coelacanth’s Dream

AMDGPU KFD に GPUID 情報が追加される

各種 ROCmソフトウェアを動作させるためのドライバー、インターフェイスとなる AMDGPU KFD (Kernel Fusion Driver) に、GPUID (GFX IP バージョン) を sysfs (/sys/class/kfd/kfd/topology/node/*) に出力される GPU 情報に追加されるパッチが投稿された。

Cyan Skilfish = gfx1013

"xx_xx_xx", major, minor, stepping のフォーマットで記述されており、Cyan Skilfish の GPUID は 10_01_03, gfx1013 となっていた。現時点では RDNA APUCyan Skilfishgfx1013 のみであるため、この組み合わせは納得行く。

Cyan Skilfish
  static const struct kfd_device_info cyan_skillfish_device_info = {
  	.asic_family = CHIP_CYAN_SKILLFISH,
  	.asic_name = "cyan_skillfish",
 +	.gfx_version = 100103,
  	.max_pasid_bits = 16,
  	.max_no_of_hqd  = 24,
  	.doorbell_size  = 8,

気になるのは Beige GobyYellow Carp で、それらの GPUID も追加されたのだが Beige Gobygfx1035Yellow CarpVanGogh と同じ gfx1033 とされている。
上では gfx1035Rembrandt の GPUID とされ、LLVM へのパッチでも gfx1035 は APU だとされており、自分は Beige Goby が dGPU だと解釈している。
LLVM に新たな RDNA 2 APU の GPUID、gfx1035 が追加される | Coelacanth’s Dream

Beige Goby
  static const struct kfd_device_info beige_goby_device_info = {
  	.asic_family = CHIP_BEIGE_GOBY,
  	.asic_name = "beige_goby",
 +	.gfx_version = 100305,
  	.max_pasid_bits = 16,
  	.max_no_of_hqd  = 24,
  	.doorbell_size  = 8,
Yellow Carp
  static const struct kfd_device_info yellow_carp_device_info = {
  	.asic_family = CHIP_YELLOW_CARP,
  	.asic_name = "yellow_carp",
 +	.gfx_version = 100303,
  	.max_pasid_bits = 16,
  	.max_no_of_hqd  = 24,
  	.doorbell_size  = 8,

Beige Goby = Navi24, Yellow Carp = Rembrandt

この点はパッチのレビューを行った AMD の Felix Kuehling 氏にも指摘されており、氏によれば Beige GobyGPUID: gfx1034Yellow CarpGPUID: gfx1035 であり、それぞれ Navi24Rembrandt のものと一致する。LLVM の情報と矛盾も起きないため、氏の言う内容が正しく、また Beige Goby = Navi24Yellow Carp = Rembrandt ということなのだろう。

 I don't see Beige Goby in the Thunk's gfxip_lookup_table. I think it
 should be 10.3.4. Please check (I'll provide some useful internal links
 offline).
 ---
 In the thunk I see 10.3.5 for Yellow Carp.
GPUID Arch Codename
gfx908 CDNA Arcturus/MI100
gfx90a CDNA 2 Aldebaran/MI200
gfx940 1 ? ?
gfx90c Vega Renoir/Lucienne/Cezanne (Green Sardine)2
gfx1010 RDNA Navi10
gfx1011 RDNA Navi12
gfx1012 RDNA Navi14
gfx1013 RDNA Cyan Skilfish ?
(APU, Navi10-base, Support RayTracing Inst)3
gfx1030 RDNA 2 Sienna Cichlid/Navi21
gfx1031 RDNA 2 Navy Flounder/Navi22
gfx1032 RDNA 2 Dimgrey Cavefish/Navi23
gfx1033 RDNA 2 VanGogh (APU)
gfx1034 RDNA 2 Beige Goby/Navi24
gfx1035 RDNA 2 Yellow Carp/Rembrandt (APU)