Coelacanth's Dream

Arcturus情報近況 (2020/02/22)

新情報は特に無く、推測が9割。

Arcturusでは行列演算に対応

結構今更な情報。
Arcturusではそれぞれが32-bit幅の AccVGPR (Accumulate? Vector General-Purpose Register) が増設され、INT8 /FP16 /FP32 /BF16 32x32までの行列演算に対応すると思われる。
NVIDIA Tensor CoreはVolta、TuringではFP16までの対応であり、BF16には対応してないため、学習精度という点では有利だが、NVIDIAもAmpereで対応しそうである。
また、専用ハードウェア追加ではなく、CU側での対応という汎用的なものであるから、性能がどこまで出るか。その分割かなければならないダイエリアも少なく済むが。

歩留まりのため8CUを無効、120CU構成か

前回のArcturusのまとめの内容と被るが、Arcturusでは最大128CU、8-ShaderEngine(SE)の構成に対応している。
[PATCH 099/102] drm/amdkfd: Increase vcrat size for GPU
drm/amdkfd: Extend CU mask to 8 SEs (v3)

しかしArcturusベースの製品で128CUすべてを有効にするとは考えづらい。
Arcturusはその構成から巨大なダイになるとされ、自然と歩留まりは厳しくなる。
そしてGPGPUとしての色が強い製品は、需要の多くがスパコンやサーバーであり、そこではまとまった数を導入する。
要は数が必要で、歩留まりを少しでも向上させるため、複数あるユニットの一部を無効化や動作クロックを抑えるのが常だ。

過去の例で言えば、かなりのビックダイである (815mm2) NVIDIA GV100ベースのTesla V100は4SM(256CUDA Core)を無効化していた。

参考: [GTC 2017]西川善司の3DGE:Volta世代のGPU「GV100」は,これまでと大きく異なるプロセッサだ――いったい何が? - 4Gamer.net

そして過去のArcturusに関するソフトウェアへの更新には以下の文面があった。

* add 120CU support of perfdb and find-db

AMDGPUはSEが対称となるように構成され、8-SEのArcturusがCUを一部無効するならば8刻みとなり、120CUはそれと一致する。

動作クロックは 1600MHz前後?

この前初めて知ったのだけれど、AMDはServer Accelerator向けであるInstinctシリーズの製品名にて、MIの後に数字を置いているが、
これは複数のデータ精度の中で最もピーク性能が高い数字を採用している。(見栄えが良い数字とも言える。)
ただ 大体 の数字であり、上から二桁目は四捨五入で丸み込みがなされている。
(MI60はINT8で59 TOPs、MI50はINT8で53 TOPs)
Professional Graphics Specifications | AMD

そしてArcturusベースの製品名が MI100 となるのは、ほぼ確実と見られる。
何しろ最適化でのターゲット名に Arcturus ではなく MI100 を使うほどだ。
(その裏で一部ファイル名を MI100 から Artus に変えたりと名称、略称がはっきりしない。)1

関連: ROCmのコードにMI100、Arielが追加される | Coelacanth’s Dream

このことと、120CUという推測を合わせると、逆算して動作クロックは1628MHzとなる。

( 100 [TOPs] / ( 120 [CU] * 64 [SP] * 2 [FLOPS] * 4 [INT8のPacked実行] )
= 0.0016276 [THz] = 1.628 [GHz] = 1628 [MHz] )

大体で決まるため、実際は1600MHz前後あたりだろうか。ギリギリまで下げると1550MHz程。

MI100 / Arcturus 登場時期予想

まず、ROCmのArcturusへの対応はVer 3.2で行われることが予想される。
下記URL先を見ると、Arcturusでの新機能、行列演算やBF16対応が含まれているからだ。
merge develop into master for ROCm 3.2 Feature complete by amcamd · Pull Request #983 · ROCmSoftwarePlatform/rocBLAS
そしてROCmは基本、2、3ヶ月の間隔でリリースされている。
Releases · RadeonOpenCompute/ROCm
そのことからROCm 3.2は 2020/04 〜 2020/06 の間にリリースされると予想され、近い時期のイベントには、

がある。
そういうことで、そのどっちかで発表するのではないか、と考えている。イベント関係なく発表する可能性もあるが。
ただ、ソフトウェアが無ければせっかくハードウェアの発表をしても霞んでしまうため、ROCmのリリースには合わせてくるはずだ。

おまけ 8GPUシステムのトポロジー概要?

const char *model_descriptions[] = {
“4 nodes with 8 GPUs PCIe 1 NIC”,
“4 nodes with 8 GPUs PCIe 2 NIC”,
“2 nodes VEGA20 4P1H”,
“4 nodes with 8 VEGA20 GPUs XGMI 4P2H 1 NIC”,
“single node gfx908 4P3L”,
“single node gfx908 8P6L”,
“single node gfx908 8P6L Alt. Connection”,
“single node 8 GPUs PCIe on Rome”,
“4 nodes 8 GPUs PCIe 2 NICs on Rome”,
“3 nodes 8 GPUs PCIe + 1 Rome 8 GPUs PCIe + 2 nodes gfx908 4P3L”,

引用元: Add topology explorer by wenkaidu · Pull Request #172 · ROCmSoftwarePlatform/rccl

他のファイルを見るに、8P6LのPはGPU数、Lはリンクを表すと思われる。
rccl/model.h at 55f8e2dec75077773ed414c1ef2f5a48afef4a6f · wenkaidu/rccl model.h下の表は、あるGPUから見た他のGPUへのリンク数を表しているのだろうか?

0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

といったように。
具体的にどのようなネットワークになってるかは自信が全くないため、やめておく。