スパコンポエムAdC2020 Day9 Nov/2020 #2 Summit(前編)

山田です。

スパコンポエムAdC2020も九日目となりました。
改めて残弾を計算したら残り8つぐらいになってアレ詰んだ？25日までどうやって逃げ切る？という気持ちでいっぱいになっている今日この頃です。

# Day 9 Summit

![summit](https://blogs.nvidia.co.jp/wp-content/uploads/2018/06/hdr-worlds-fastest-exascale-ai-supercomputer-summit-720x340.jpg)
(引用元: https://blogs.nvidia.co.jp/2018/06/14/worlds-fastest-exascale-ai-supercomputer-summit/)

それはまさに、"頂点"と呼ぶに相応しい。

## Summitとは？

もう言わずと知れた最強のスーパーコンピュータ。
Nov/2020では#2 につけている、DOEはOak Ridge National Laboratory(ORNL) のスーパーコンピュータです。
初登場はJune/2018。それまで4期に渡ってトップを維持し続けた中国のSunway TaihuLightにさらに30PFlopsの実効性能差をつけてトップに君臨した、まさしくトップになるべくして建造されたスーパーコンピュータ……！！
Summitが出てきたときはめっちゃテンションが上がりましたね。メイクアメリカグレートアゲインーーー！！！！！

ちなみにSummitには兄弟機のSierraというのもあり、こちらは二回りほど小さいスパコンで、Lawrence Livermore National Laboratory(LLNL) に設置されています。コンポーネントはほぼ同様。

## Summitのスペック

ORNLの[Summit公式サイト](https://www.olcf.ornl.gov/olcf-resources/compute-systems/summit/) によれば

| Spec | |
|----|----|
|CPU| IBM POWER9 * 2|
|GPU| NVIDIA V100 * 6|
|Memory| 512GB DDR4 (+ 96GB HBM2)|
|InterConnect| Mellanox EDR 100G Infiniband |
|Number of Nodes| 4,608 |
|Peak Performance| 200,795 TFlops|

うーん圧倒的。200PFlopsの息吹を感じる。
さて、Summitの特徴的なところというと、IBMは最強のPOWER9と、NVIDIAは最強のV100を組み合わせて、最強 * 最強のゆで理論みたいになってるところではないでしょうか(？

というわけで、今回は今日明日の二本立て。
超強力ビッグダイのIBM POWER9と、超強力ビッグダイのNVIDIA V100それぞれについて述べる会にしたいと思います。

## IBM POWER9

IBMといえばPOWERで栄華を誇った印象がありますよね(あるのか？
POWERアーキテクチャはとても綺麗なISAで、僕はCell/B.E.でこの世界に入ってきたので、ベースとなっているSIMD命令セットはAltVecですし、まじめに読んだasmもPOWERが初めてでした。
まぁCellの話は、もしかしたらこのAdCでネタがなくなったらやるかもしれないので後に回すとして…

IBMはIntelと同様に、自社でFabを持ち、その時代の最先端プロセスを使用して、限界までトランジスタを詰め込んで限界までリッチな構成をしたらここまで作れる、という、一種の半導体ベンチマークをしていたような節があります(注:個人の感想です)。
POWER7, POWER7+, POWER8のいずれもそれを象徴するかのような感じでしたが、POWER9も負けず劣らずの、文字通りパワーを持ったCPUです。
ただ、POWER8とPOWER9の間で、IBMも最先端プロセスについていくのが辛くなってきたのか、自社で持っていたFabを[売却してしまう](https://www.atmarkit.co.jp/ait/articles/1411/25/news091.html) んですよね…売った先はGLOBAL FOUNDRIES。AMDの半導体製造部門から独立した会社ですが、そのGFも7nmの開発競争が辛いと開発を停止。5nm, 3nmへの投資もキャンセル。14nmとかでやっていくわという話でしたが、その[IBMから買ったFabも売却](https://news.mynavi.jp/article/20190423-813432/) ということになり、POWER10はSamsungの7nmを使う、ということになったようです。

閑話休題。そんなIBMのFabの最後の作品ともいえるPOWER9ですが、やっぱりこいつはモンスターだと思います。

何がどうモンスターかは[マイナビのAndoさんのHotchipsの記事](https://news.mynavi.jp/article/20160915-hc28_power9/) とか、[Wikichips](https://en.wikichip.org/wiki/ibm/microarchitectures/power9) を読んでください(？

……とだけ書いてあると、それはそれで問題な気がするので、以下に少々POWER9の解説的なものを書いていきたいと思います。

### SMT4 / SMT8

POWER9ですが、1コアあたりのスレッド数の違いで2つの構成が取れます。それがSMT4とSMT8です。見たまんまの通り、スレッド数が4と8で違います。
Intelの機構でおなじみのHyperThreadingとかは、演算器の稼働率を上げるために、論理スレッドを作り、演算器が空いているタイミングで別スレッドの命令を実行するというものでした。これは、演算器が空いていればもちろん効果がありますが、演算器が空いていなければ効果がありません。当たり前ですね。なので、HPCのワークロードだと、むしろHyperThreadingはないほうがいいケースのが多い、というのが実情でした。
なら演算器も増やしとくよ、というのがPOWER9の回答のようです(なんやて？？？

SMT4コアのブロックダイアグラムが以下になります。

![SMT4](https://en.wikichip.org/w/images/thumb/2/2b/p9smt4core.png/1050px-p9smt4core.png)
(引用元: [Wikichips](https://en.wikichip.org/wiki/ibm/microarchitectures/power9) )

64ビットのスカラ演算を行うVector and Scalar Unit(VSU) と、Load/Store Unitが一つになったものがSlice,その二つを束ねてSuperSliceという構造を作っています。SMT4の場合、SuperSliceは2つです。SMT8の場合はこれが倍になります。見かけ的に、スレッドごとに64bit演算器がある感じですね。
1サイクルあたり、8命令のFetch, 6命令のDecodeが行われます。6 Decodeって結構化け物じみてますけど、SMT8だと12ですからね。激ヤバ。
さて、SMT4 Coreでは4つの64bitスカラ演算または2つの128bitベクトル演算、4つのロード/ストアが行えます。2つのベクトル演算 + 4つのロードストアでパイプが埋まるような構造になっているわけですね。コード書くのめっちゃ大変そうですけど…
スカラ演算ではALU, FPが4、Divが2出ます。DivはSuperSliceで1つなので、128bit演算と同等になるわけですねえ。ベクトル演算は先述の通り2つ。特徴的なのは、SuperSlice2つに1つの4倍精度演算器と、十進浮動小数演算器でしょうか。この二つ、なかなか見たことありませんよね。

### キャッシュシステム

![Die](https://en.wikichip.org/w/images/thumb/2/24/power9_so_die_%28annotated%29.png/900px-power9_so_die_%28annotated%29.png)
(引用元: [Wikichips](https://en.wikichip.org/wiki/ibm/microarchitectures/power9) )

見てくださいこのクソ巨大なL3キャッシュ。
CPU Coreと呼ばれているのが先ほどのSMT4であれば2 SuperSlice、SMT8であれば4 SuperSliceです。それに対して10MBのキャッシュがあります。全部合わせて120MB。120MB！？Linuxブートしそう(？？
このL3キャッシュ間のバス帯域は7TB/sなのかな？ 7TB/s On-chip bandwidthとしか書かれていないんでアレですが…詳細を知ってる人がいたら教えてほしい…POWER系はあんまり資料がないのじゃ…

### 外部IF

POWER9では、どういう構成であれ、PCIe Gen4 x48を持っています。いち早くGen4をサポートしていたのは素晴らしいですね。(なかなかGen4対応のPCIeデバイス出なかったけど…)
POWER9はCAPIというコヒーレントバスもサポートしています。↑の25Gって書いてある緑色の意味深な領域ですね。まぁCAPIについてはあんまり情報がないので脇において…これのすごいところは、同じPHYでNVLink 2.0もサポートしているところです。
内部バスにGPUを直結できる、しかも帯域が300GB/s(！？) ということで、ホスト-デバイス間がめちゃくちゃ高速な接続が可能になっています。これはx86にはないかなり強力な強みであり、Summitの高性能の秘密ともいえるものになっています。

### ダイサイズ

まぁそんだけリッチなことやってたらそりゃ当然だろって気もしないでもないんですけど…
↑にはったダイ、サイズどれぐらいだと思います？
堂々の693.37mm^2です。

ほぼ同時期(2017年リリース) のIntelの14nmを使ったSkylake-SPの28コアモデルがおそらく同等の大きさとされているあたりで、その巨大さが伝わるのではないでしょうか。まぁIntelの14nmとGFの14nmだとIntelのが小さいんじゃないって感じはありますけども。アレ、もしかして最大級に巨大なのって実はIntelだったりする？

まぁそういうのを軽く凌駕する、V100っていう化け物ダイがあるわけですけれども…
なんとこちらは堂々たる815mm^2。これは激ヤバでしょ…

## POWER9へのあこがれ

実はですね、POWERアーキテクチャめっちゃ好きといいつつ、POWERの石って触る機会が全くないんですよ俺。
POWER7は先輩が評価してるのを近くで聞いてるだけだったり、POWER8も先輩が評価してるのを近くで聞いてるだけだったりして、なんか全くと言っていいほどPOWER触る機会がないんですよね。POWER好きを公言していたはずなのに、なぜかPOWERのほうから寄ってきてくれない、むしろ避けられてるまである。
IBM CloudでPOWER9のインスタンスがあるみたいなんですけど、なんか従量課金とかないっぽいので使えてないんですよね…あの…どなたかPOWER9貸してください…触ってみたいんで…

という与太話はここらにしつつ、後編ではV100、そしてSummitの高性能さと、高効率さの話をしていきたいと思います。


# 前半のまとめ
* Nov/2020にて#2 となったSummitについて軽く述べました。
* 超々モンスターチップ、IBM POWER9について述べました。
* 明日はSummitの演算性能を支えたV100の話と、SummitのGreenが偉大だという話をします。