Radeon Instinct MI100が採用するCDNAアーキテクチャーの内部構造 AMD GPUロードマップ

文●大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII

2020年11月23日 12時00分

 11月20日、「Radeon RX 6800」シリーズが無事に発売になった。KTU氏によるレビューをご覧になった方も多いと思うが、おそろしくパワフルな製品に仕上がっており、レイトレーシングを利用しない限りにおいてはGeForce RTX 3000シリーズに十分競合できる。

 という話はおいておき、今回解説するのは11月16日に発表されたCDNA第1世代を実装する、Radeon Instinct MI100の話である。が、その前に連載587回に誤りがあったため、まずはこれの訂正をしたい。

Smart Access Memoryを利用するのに必要な
Resizable BAR

 こちらでSmart Access Memory (SAM)の正体はCCIXを利用したCoherent Memory Accessではないかと推察したのだが、その後AMD本国の関係者から「そうではなく、PCIeでの接続である」という返事が返ってきた。

 その後にSAMを利用するためにはBIOSセットアップでを有効にすべしという注意書きが届いて、やっと正体がわかった格好だ(KTU氏もレビュー記事で触れている)。ついでなので、このResizable BARの話をしよう。

 BAR(Base Address Register)というのは、PCI ExpressのConfiguration Space(PCI Expressのデバイスを内部で管理するためのメモリー空間)の中にあり、デバイスのメモリー領域をホスト(つまりCPU側)のメモリー空間にマッピングする際のアドレスを格納している。

 もともとはPCI Express(の元になったPCI)が32bitアドレスでの動作を想定していたこともあり、BARの扱えるメモリー領域は最大でも256MBに制限されていた。ところが64bitアドレッシングをサポートしたCPUが登場したことで、BARをもっと広げても良いのではないか? という議論が起こる。

 最終的にPCI Express 2.0のECN(Engineering Change Notice)として2008年1月22日に、Resizable BARという仕様が追加された。これはBARのサイズを最大512GBまで拡張できるというもので、オプション扱いとなり、PCI Express 2.1以降では正式に仕様に取り込まれているみ(ただし実装は必須ではなく引き続きオプション)。

 マイクロソフトはWDDM v2でこのResizable BARに対応したことを2017年4月に表明している。というわけで、SAMは別にDX12やVulkanだけでなく、DirextX 9/10/11やOpenGLでもその効果が期待できるとAMDの関係者からは返事があった。

 余談であるが、筆者もHorizon Zero DawnをSAMありで実施したが、問題なく4Kで完走した。KTU氏との違いは、主にマザーボード(筆者はASUS ROG CROSSHAIR VIII HEROを利用)程度であるが、それが理由とも思えないのだが。

CDNAアーキテクチャーを採用したHPC向けGPU
AMD Instinct MI100を11月16日に発表

 さて、Radeon RX 6800の話はこの程度にして、本題に入ろう。もともとRadeon Instinct系、つまりGamingではなくComputationにフォーカスした市場向けに、AMDは従来のGCN(Vega)からRDNA(Navi)とCDNAに分けると今年3月に明らかにした。

Computationにフォーカスした市場向けに、従来のGCNからRDNAとCDNAに分けると今年3月にAMDが発表

 これはNVIDIAも同じで、アーキテクチャーこそ共通のAmpereとされつつ、GPGPU向けのGA100とGaming向けのGA102では、SM(Streaming Processor)の構造が異なっている。GA100はFP64の演算ユニットを搭載する一方でRTコアがなく、逆にGA102はFP64を省いてRTコアを搭載しているのがわかる。AMDはもっと大胆に、アーキテクチャーそのものを切り替えた形だ。

GPGPU向けのGA100。当然倍精度演算が必要になるので、FP64ユニットが大量に搭載される。ここでFP32ユニットを2つ組み合わせてFP64にしないあたりがNVIDIAらしい

Gaming向けのGA102。RTコアの詳細を細かく描画するのは放棄してる感じ(それを言えばTensorコアもそうだが)

 さてその中身である。ちなみにAMDはまだ“VEGA”や“NAVI”にあたる、CDNAのコード名を公開していない。“Arcturus”という名前がRadeon Instinct MI100のコード名と言われているが、アーキテクチャーの名前そのものではない。ということで、以下CDNA 1.0として表記したい。

 そのCDNA 1.0の構造が下の画像となる。RDNAの構造と比較すると、(CU数はともかくとして)例えばPixel UnitやRasterize、RB(Render Backend)など描画に必要な要素がキレイに消えていることがわかる。また、当然ながらGeometry Processorも搭載されていない。

CDNA 1.0の構造。Multimedia Engineが搭載されているのはやや興味深い。HPC市場でこれが利用されるシーンが想像できないのだが、汎用サーバー向けを念頭に置いてるのだろうか?

こちらはRDNAの構造。40個のCUが10個ずつ4つのグループに分けて実装される

CDNAはRDNAにかなり近いが
SIMDエンジンをHPC向けにチューンしている

 個々のCU(CUDA 1.0ではXCUという名前になっている)の構造が下の画像である。1つのXCUに64個の演算ユニットが実装されるという構図はGCNやRDNAと同じであるが、GCNとの比較で言えば以下の違いがある。

XCUの構造。この64個の演算ユニットが16WideのSIMD構成であることそのものは以前と同じ

こうしてみると基本的なコンセプトはRDNAとかなり近いが、SIMDエンジンの内容をHPC向けにした感じである

  • FP64/FP32のサイクル当たりの処理性能(Vector FP32/FP64)は同じ(FP64で64Flops/サイクル、FP32で128Flops/サイクル)
  • 新たに行列演算を高速化するMatrix Unitと呼ばれる仕組みが入り、これを利用することでFP32だと2倍(256Flops/サイクル)の処理性能になる
  • FP16は、GCNだとFP32の2倍(256Flops/サイクル)なのに対し、CDNA 1.0ではこの4倍の1024Flopsサイクルで演算可能
  • 新たにBFloat16をサポート。演算性能は512Flops/サイクルになる

 XCUはこの演算ユニット4つで構成されるので、1CUあたりFP64で256Flops/サイクル、FP32だと512~1024Flops/サイクル、BFloat16で2048Flops/サイクル、FP16なら4096Flops/サイクルになる計算だ。

 フロントエンドを含む全体の構成が下の画像だ。RDNAの構成と比較すると、RDNAがWave32での管理となっており、2つの16-Wideをまとめて32-WideのSIMDとして扱う関係か、Wave Controllerは20 Waveになっているのに対し、CDNAではおそらくGCN同様に64-Waveでのハンドリングしていると思われ、Wave Controllerは10 Waveになっているのが目立つ違いである。Vector Registerの数などはRDNAと共通になっている。

こちらはRDNA(RDNA2ではない)の内部構造。Scalar Registerが10Kあるのが目立つ

RDNAのダイ写真。どういう理由か知らないが、AMD提供のこの画像は妙に解像度が低い

こちらのダイ写真は斜めになり、しかも妙な映像効果付きであるが、高解像度のものに歪み補正をかけたもの。したがって縦横比は正確ではない

 さて、先のCDNA 1.0の構造を示す画像によれば、CDNA 1.0はこのXCUを複数個まとめたグループを8つ搭載することになる。Radeon Instinct MI100の仕様によればXCUは120個なので、グループあたり15個のXCUが含まれる計算になるのだが、実際にダイ写真を見ると、16個のXCUが含まれていることがわかる。

 つまりハードウェア的には128XCU、8192個のStream Processorが実装されており、このうち120XCU、7680個のStream Processorのみを有効にしているとわかる。

前述のダイ写真の左上を切り出してナンバーを振ってみた

 この理由は後述するダイサイズに関係する。CDNA 1.0は過去最大規模のダイサイズであり、それなりに欠陥を含んでも対応できるように、冗長XCUを8つ用意したというあたりであろう。

メモリーはHBM2Eを採用
入手性に困難もなく妥当な選択

 ダイの話はもう少し後にして、メモリーについて説明しよう。メモリーそのものはHBM2であるが、従来のHBM2ではなく、転送速度を2.4Gbpsに引き上げたHBM2Eが採用された。JEDECは2018年12月にJESD235を発表(最新はJESD235C)しており、最大でピンあたり2.4Gbpsとなったほか、最大で12スタックまでの積層が可能になっている。

 HBM2Eについては今年2月にSamsungが量産開始を発表、7月にはSK HYnixも量産開始をアナウンスMicronもすでに製品を提供中である。

 したがって入手性には困難はなく、妥当な構成と言える。余談ながらNVIDIAも、HBM2Eの8スタックでスタックあたり16GB、トータルで80GBの容量となるNVIDIA A100 80GBを発表している。実際I/Fが2.4Gbpsに対応できれば、後はHBM2を入れ替えるだけで実装できるため、これは妥当な選択である。ひょっとすると今後AMDも64GBメモリー搭載のRadeon Instinct MI100を投入しても不思議ではない。

XGMI Linkを3つに増やして
I/F周りを276GB/秒に引きあげる

 次にI/F周り。Radeon Instinctのインターコネクト(というよりインフィニティーファブリック)のロードマップは今年3月に公開されており、すでに現状のRadeon Instinct MI50/60で、ここで言う第2世代に対応しているのだが、CNDA 1.0でもまだこの第2世代の構成となる。つまり4枚のRadeon Instinct MI100をブリッジカードで接続できる格好だ。

3月に公開されたインフィニティーファブリックのロードマップ。CNDA 1.0は第2世代となる

 ただし、Radeon Instinct MI50/60ではこのブリッジカード経由で184GB/秒での接続が可能だったが、Radeon Instinct MI100ではこれが276GB/秒に引きあがった。

 これはなにか? というと、Radeon Instinct MI50/60では23GT/秒の16bit幅で92GB/秒の帯域を持つXGMI Linkを2つ持つ。これを利用して4枚のRadeon Instinctを下図の左側のように接続する形だ。

XGMI Linkの仕組み。左がRadeon Instinct MI50/60、右がRadeon Instinct MI100

 対してRadeon Instinct MI100ではLinkの速度そのものは同じながら、XGMI Linkが3つに増やされた。このため、図の右側のようにすべてのRadeon Instinct MI100ボード同士が1:1で直接接続されるようになっている。

 ちなみにEPYC1つに4つまでRadeon Instinctを接続できるので、2 SocketのEPYCだと8枚までRadeon Instinctを装着できることになる。

2 Socketの場合の接続図

実際AMDはこの2 Socket+8 Radeon Instinct MI100を推奨構成としているようで、こんなCGイメージも提供されている

ついにAMDもダイサイズが700平方mm超え

 話をダイに戻そう。妙に解像度が低いAMD提供のダイ写真がおそらく縦横比がほぼ正しいイメージと推察されるが、HBM2の寸法から推定するとCDNA 1.0のダイサイズは24.0×31.8mmで763.2mm2となる。ついにAMDも700mm2超えである。NVIDIA A100の826mm2にはやや負けるが、それでもモンスターであることは疑う余地がない。それは冗長XCUを用意しないとまずいのも理解できる。

RDNAのダイ。AMD提供のこの写真が、おそらく縦横比がほぼ正しいと思われる。HBM2の寸法から推定するとダイサイズは763.2平方mm

2 EPYC+8 Radeon Instinct MI100の
理論性能はFP64でおおむね85TFlops程度

 さてこのRadeon Instinct MI100であるが、最初のターゲットはオークリッジ国立研究所のFrontierであろう。連載510回で触れたが、オークリッジ国立研究所はAMDのカスタム版EPYC+Radeon Instinctの構成で1.5 EFlopsの性能のFrontierを2021年からインストール開始し、2022年に運用開始となる。

 ただ、連載510回の後半で書いたように、本命となるのは5nm世代のEPYC+おそらくCDNA 2.0ベースのRadeon Instinctである。

 これに先駆けてオークリッジ国立研究所ではソフトウェアの移植を進める必要がある。すでにオークリッジ国立研究所はAMDの開発キット「ROCm 4.0」をベースにソフトウェアを開発すると表明しており、このソフトの移植のプラットフォームとなるマシンが必要であり、ここに第3世代EPYCと組み合わせたシステムを納入すると思われる。

 やや古い話だが、IBMがオークリッジ国立研究所とローレンス・リバモア国立研究所にSierra/Summitを納入する前段階として、POWER8+Keplerベースのシステムが納入されたという話を連載373回で紹介したが、これと同じ話である。

 AMDはすでに第3世代のEPYCであるMilanを、特定顧客向けにサンプル出荷を開始していることを明らかにしており、Frontier開発用マシンとしてRadeon Instinct MI100と一緒にオークリッジ国立研究所に納入がスタートしていると思われる。

 まだMilanの性能などは明らかになっていないが、例えばEPYC 7742の場合の理論最大性能は2304GFlopsとされており、仮にFPUに関してもALUと同程度に性能が上がったとすれば2700GFlops程度。ということは2 EPYC+8 Radeon Instinct MI100の理論性能はFP64でおおむね85TFlops程度になる。

 1ノードで85TFlopsだとすると、これで1.5 EFlopsを実現するためには17647ノードが必要になる計算だ。これは実現不可能な数ではないが、フル稼働時にEPYCが200W、Radeon Instinct MI100が300Wの消費電力だとするとノードあたり2.8KW。これが17600ノードだと消費電力はおよそ50MWになる。

 これはCPUとGPUの分だけで、ストレージやインターコネクトの分を含んでないため、これを加味するとざっくり2倍で100MWであろうか? 1Exaflopsあたり66MWというのはやはり大きすぎる。おそらく本番はGenoa(第4世代EPYC)+CDNA 2.0ベースのRadeon Instinctになるだろう。

 この世代は5nmに移行することが明らかになっており、確実に消費電力あたりの性能を上げている、つまり同じ性能なら消費電力を下げられるからだ。

 その意味では、今回のRadeon Instinct MI100の発表はFrontierやその後に控えているEl Capitanに続くであろうステップを確実に踏んでいることを実証できたという、非常に意味のある発表なのである。

豪PAWSEY Supercomputing CentreはRadeon Instinct MI100をベースに50PFlopsのマシンを2022年第2四半期から運用開始する予定である

■関連記事