『半導体業界の第一人者,AI業界を行く!』 Vol.7:独自設計CPUで世界一 富岳の秘密

『半導体業界の第一人者,AI業界を行く!』  Vol.7:独自設計CPUで世界一 富岳の秘密

こんにちは,HACARUS 東京R&Dセンター所属のエッジ・エバンジェリスト 田胡治之です.この連載では,半導体業界で長年知識や情報を得てきた私,田胡がこれまでと異なるAI業界に飛び込み,そこから感じる業界のニュースやトピックを独自の視点で紹介したいと思います.

第7回のテーマは,独自設計CPUで世界一 の性能を叩きだした富岳の秘密,についてです.筆者はかって組込み向けマイクロプロセッサとそれをコアにしたゲーム機向けSoC 設計チームの一員でした.SoC開発を家の建築に例えると現場監督?の立場だったでしょうか.

スパコン開発は経験なく,このような blog を書くのは無免許運転のそしりを免れないですが,スパコンランキング一位を裏付ける優れたアーキテクチャと設計に感銘をうけ,筆者なりに理由の一端を考えてみました.

富岳[1]

富岳[1]

スパコン世界一の富岳

富岳は,2020年6月と11月の世界スパコンランキングにて,TOP500(LINPACK)ベンチマーク のみならず,様々な側面での性能が試される計4部門のベンチマークで二位に2.58倍以上の大きな差をつけて,ぶっちぎりで世界一位に輝きました(Figure 1) [2]. HPL-AI ベンチマークでは,スパコン史上初めて Exa FLOPS (エクサフロップス,浮動小数点演算を1秒間に100京回行う)の壁を超えました.

富岳の開発目的

少し長くなりますが文献[3]を引用します.

「理化学研究所計算科学研究センターの松岡聡センター長は2020年10月15日オンラインで開催された「日経クロステック EXPO 2020」で「富岳:『アプリケーション・ファースト』の共同研究開発によるSociety5.0に向けたブレークスルー」と題して講演した.

演題ともなっている理研のスーパーコンピューター「富岳」の開発目標であるアプリケーション・ファーストの重要性や,富岳が中心的な役割を果たすことを期待しているSociety5.0への取り組みについて紹介した.「アプリケーション・ファースト」の意味について松岡氏は「国民が関心のある課題を解決する幅広いアプリを最も有効に,世界一のスピードで動かすことを目的にした」と語った.

2020年6月に発表されたスーパーコンピューターの性能ランキングでは,TOP500,HPCG,HPL-AI,Graph500の4部門で同時に1位という世界初の快挙を成し遂げた.それでも松岡氏は「あくまでもベンチマークで1位を獲ることを目標に開発したのではない」と松岡氏は強調した.

 富岳の開発プロジェクトではアプリケーション・ファーストのほかに,世界で初めて1エクサFLOPS(フロップス,1秒当たり浮動小数点演算回数)以上の演算性能を実現する「エクサスケールマシン」を開発するという目標があった.

これら2つの目標を達成したことを示すために松岡氏は「ありとあらゆるアプリケーションで最高性能を発揮するのが富岳の目標だとすれば,ありとあらゆるベンチマークで1位を獲らなければ意味がない.TOP500だけ1位を獲れました,だと使いものにならない.(これらの全ての指標で2位以下の)いわゆるプリ・エクサスケール・マシンに数倍の性能差を付け,富岳が1位を獲ることが重要だった」と語った.」 [3].

富岳が狙う9種のターゲットアプリケーションは,「創薬」,「遺伝子解析による個人に適合する予防薬の開発」,「地震や津波の防災」,「ビッグデータを使った環境変化の予測」,「高効率のエネルギー生成,変換,貯蔵」,「創造的なクリーンエネルギーシステム」,「高性能な機能デバイス」,「製造工業における創造的な設計」,「製造プロセス」,「宇宙の基本的な法則と宇宙の進化の研究」といったアプリケーションが開発される予定となっています(Figure 2)[4].

Figure 2 富岳が狙う9種のターゲットアプリケーション [4]

Figure 2 富岳が狙う9種のターゲットアプリケーション [4]

富岳を含めたスパコンランキング - TOP500 1位から10位

Figure 3 に2020年6月時点のスパコンランキング1位から10位を示します.

Figure 3 TOP500 1位から10位 [5]

Figure 3 TOP500 1位から10位 [5]

GPUを使っているシステムが10システム中7システムを占める中.富岳はGPUを使わずに1位を獲得しました.その理由を第2位 Summit と比べつつ探っていきます.

富岳の基本構造

富岳の基本構成を Figure 4 に示します.上位階層から,ラック → シェルフ(棚)→ ノード(CPUメモリユニット)→ A64FX CPU となります.

Figure 4 富岳の基本構造 [6]

Figure 4 富岳の基本構造 [6]

諸元比較

富岳とSummit の諸元比較を Figure 5 に示します.ピーク性能は富岳がSummitの約2.7倍高いです.ノード数は富岳 152,064 に対し Summit は 9,216 で,富岳が約16.5倍多いです.ノードのピーク性能では,富岳 3.072TFLOPS に対し,Summit 21.7TFLOPS です.

Summit はノードを重量級とするかわりにノード数を少なくしたのに対し,富岳ノードを中量級?(といっても巷のCPUよりはるかに高性能ですが)にしてノード数を多くした設計です.両者は設計思想が異なると言えるでしょう.

Figure 5 富岳と Summit の諸元の比較

Figure 5 富岳と Summit の諸元の比較

Summit のノードは,IBM社 Power9 AC922サーバー[10] がベースです[14].Power9チップ 1個あたり,アクセラレータとして NVIDIA社GPU Tesla V100 3台が NVLink-2 を通じて接続されています.ノードのプリント基板に搭載されている主要チップ数は10個です[13].

一方,富岳の主要チップはA64FX 2個だけでとてもシンプルです.A64FXは,高速メモリHBM2を同一パッケージに収めた上にネットワークインターフェースI/O回路TNI (TofuD Netwok Interface) も含んでいます.なお Tofu は, “Torus Fusion” または “Torusconnected Full connection” を意味し, ”D” は,前世代に比べて強化された  ”high-Density” ,  “Dynamic” packet slicing for “dual-rail” を意味するとのことです.

Figure 6 富岳のノード(水冷機構取り外し時)と Summit のノードの比較 [11][12][13][14]

Figure 6 富岳のノード(水冷機構取り外し時)と Summit のノードの比較 [11][12][13][14]

例えば256kBデータを自分のノードから別のノードに送信する時の送信準備時間を考えてみます(Figure 7).つまりメモリ内の送信データをノード間ネットワークに送り出し始めるまでの時間です.データがネットワークを伝わるのにかかる時間を含みません.

Summit では,Power9 チップが GPU HBM内の送信データをプリント基板上のNVLink-2(50GB/s)を通して読み出し,DRAMに一時的に蓄えます(Figure 7 右側の赤矢印).次にPower9 がDRAMから送信データを読み出しプリント基板上の PCIe Gen4 (16GB/s) を通じて Mellanox社NICに送り(Figure 7 右側の青矢印),そこからノード間ネットワークに送り出されます.

一方,富岳では,A64FX CPUチップが同一パッケージ内の HBM2(256GB/s) )から送信データを読み出し(Figure 7 左側の赤矢印),同じチップ内の TNIに送り(Figure 7 左側の青印),ノード間ネットワークに送り出されます.文献などからこの送信準備時間を見積もると,Summit では約100us に対し, Fugaku ではおそらく μsオーダーと極めて短いです.

Summit が時間かかる理由は,GPU, Power9, DRAM, NIC が別チップのため NVLink と PCIe を介して送信データを送っているためです.Summit の NVLink-2 転送速度は仕様上ピーク50GB/s と高速ですが,通信リンクを確立するまでのリンク確立時間が数十us 程度かかることに注意が必要です[15].

例えばピークの80%の実効転送ハンド幅を得るには転送一回で約10MB以上を送る必要があります.Summit の性能を引き出すには,一回の転送で約10MB 以上のデータを送り,なるべく少量データを送らないようにプログラムする必要があることを意味します.これが可能かどうかは,アプリケーションの特性,アルゴリズムとプログラミングに依存します.

Figure 7 ノードからノードへの送信データ準備でのデータの動き [7][13][15]

Figure 7 ノードからノードへの送信データ準備でのデータの動き [7][13][15]

Graph500 ベンチマークは,ノード間通信性能の影響が大きいと言われます.Graph500の意義は,「実社会における複雑な現象は,大規模なグラフ(頂点と枝によりデータ間の関連性を示したもの)として表現される場合が多いため,コンピュータによる高速なグラフ解析が必要とされています.例えば,ソーシャル・ネットワーキング・サービスなどでは,「誰と誰がつながっているか」といった関連性のあるデータを解析する際にグラフ解析が用いられます.富岳は,約1.1兆個の頂点と17.6兆個の枝から構成される超大規模グラフに対する幅優先探索問題を平均0.25秒で解くことに成功しました.」[16].

Figure 1 表の最下行に示したように,Summit の Graph500 スコアは富岳の 1/9.26倍に落ち込んでいます.他のベンチマークで富岳との差が 1/2.58 ~ 1/4.57 であるのに比べ落差が大きいです.筆者は上で述べたようにノード間通信性能,特にLatency の差を反映していると考えます.

富岳の CPUチップA64FX にメモリを直結しネットワークインターフェースも集積した低レーテンシーな設計のメリットを遺憾なく発揮している,とも言えるでしょう.さらに言えば,Summit では,Power9 はIBM社製,GPUはNVIDIA社製ですから,ビジネス面からもワンチップにすることはできません.

A64FXの設計と実装

ノードのCPUチップが A64FX (Figure 8)です.TSMC 7nm 半導体プロセステクノロジで製造され,約 90 億個のトランジスタを実装しています.

CPU チップあたり計算コア 48 個,アシスタントコア 4 個の合計 52 コアを搭載し,計算コア 48 個の合計ピーク性能は倍精度浮動小数点演算で 3.3792TFLOPS (ブーストモード時)です.CPU チップは入出力に HBM2 インタフェース 4 組,TofuD インタフェース,PCIeインタフェースを備えます.

A64FX のようなメニーコアプロセッサでは,コア,キャッシュ,メモリ間の接続方法は実効性能を引き出す上で非常に重要な課題です.A64FX では Core Memory Group (以降CMG)という4つのグループに分割する方式を採用しています.

1 つの CMG は,12 個の計算コア,1個のアシスタントコア,2 次キャッシュ,メモリコントローラで構成されます.4 つの CMG 間はキャッシュ一貫性が維持されており,システムソフトウェアは CMG を NUMA ノードとして扱うことができます[8],とのことです.

倍精度浮動小数点の行列乗算アルゴリズムである DGEMM において,2.7TFLOPS以上(ピーク性能に対し90%以上)の実効性能が得られていることから,上述のチップ内アーキテクチャの高効率性は立証されたと言えるでしょう.

Figure 8 A64FX チップの概要 [7]

Figure 8 A64FX チップの概要 [7]

A64FX では 2.5 次元パッケージ技術を使用し,CPU チップと 3 次元積層メモリを単一のパッケージに異種統合しました.A64FX の 2.5 次元パッケージの写真(Figure 9 左)と断面模式図(Figure 9 右)を示します.CPU チップと 4 スタックの HBM2 は近接配置され,微細配線で高密度に接続されます[8].

Figure 9 2.5 次元パッケージ技術によるCPU と 3 次元積層メモリ HBM2 の異種統合 [8]

Figure 9 2.5 次元パッケージ技術によるCPU と 3 次元積層メモリ HBM2 の異種統合 [8]

A64FXのチップ写真を Figure 10 に示します[9].HBM2 への配線を最短にするため,HBM2インターフェースがチップ左辺と右辺に配置され,Coreグループ等が整然と配置され,美しさを感じます

Figure 10 A64FX チップ写真  [9]写真のアノテーションを修正

Figure 10 A64FX チップ写真  [9]写真のアノテーションを修正

A64FX の 命令セット

A64FX の命令セットは,Arm社v8.2-A SVE (Scalable Vector Extension ) です.

これは Armに昔からあった NEON の 128bit レジスタを拡張したものです(Figure 11 左).富士通はArm社と協業することにより,科学技術計算,AIを含む HPC (High Performance Computing) アプリケーションを高速に実行できるSVE(Scalable Vector Extension)の策定にリードパートナーとして貢献し,その成果をA64FXに採用したそうです[17].

SVEの仕様上は128ビットから2048ビットまで128ビット毎にスケーラブルな実装が許され,A64FX では 512bit 幅が実装されています.SVE では,ハードが実装する SIMD ビット幅に依存せずに動作可能なバイナリを作成できます.このようなバイナリをベクトル長非依存バイナリと呼びます.

ベクトル長非依存バイナリは実装された SIMD ビット幅の異なる SVE マシンにおいても,再コンパイルなしに実行可能です.Figure 11右のように 100 回のループを実行するプログラムをベクトル長非依存バイナリにコンパイルすると,マシンの SIMD ビット幅から 1 命令で演算する要素数(ベクトル長)を計算し,ループ回数を調整するコードが生成されます.

このコードはベクトル長=4 のマシンでは 25 回,ベクトル長=8 のマシンでは 13 回ループします.元のループ回数がベクトル長の倍数でない場合,端数の要素は Predicate 操作でマスクされます[8].これから,仮に SVEを現在の512bit長から1024bit長などに伸ばしたポストA64FXにおいても,バイナリは変更しなくてよいことになります.これは A64FX のソフトウェア資産を守る意味で大きなメリットでしょう.

Figure11 左:SVEのレジスタ構成,右:ベクトル長非依存バイナリ動作イメージ [8]

Figure11 左:SVEのレジスタ構成,右:ベクトル長非依存バイナリ動作イメージ [8]

A64FXのピーク性能を考えます.科学技術計算で一番使われる倍精度浮動小数点データ(64bit長)に対しては,以下になります.

富岳システム全体のピーク性能は,これにノード数 15,8946 を乗じて 488PFLOPS となります.AIで使われる半精度浮動小数点(16bit)では,同時に最大32演算できるので,ピーク性能は上記の4倍になります.

Intel社Xeonサーバーとの消費電力あたりの性能比較

Figure 12 に,A64FXチップ1個を使ったサーバーとIntel Xeon サーバーの消費電力あたりの性能比較を示します[19].A64FX は計算用に48コアを持ちます.

一方Xeonは1チップ24コアなので2チップで48コアとなり,コア数を揃えた比較と思われます.水色の棒グラフがXeon 2チップで,オレンジの棒グラフが2.2GHzクロックのA64FX 1チップです.

縦軸は上から実アプリケーションプログラム名で,OpenFOAM,FrontSTR,ABINIT,SALMON,SPECFEM3D,WRF,MPAS です. Intel社Xeon 最新チップに比べて,消費電力あたりの実アプリ性能が 2.3 ~ 3.5 倍高いのは,チップの極めて優れた省電力設計を示していると思います.富士通のA64FXサーバーが沢山売れてアプリが増えコストが下がり,次世代の開発が回ることを期待します.

Figure 12 A64FXとXeon(24コア, 2.9GHzクロック) 2チップのシステム電力効率の比較 [19]

Figure 12 A64FXとXeon(24コア, 2.9GHzクロック) 2チップのシステム電力効率の比較 [19]

まとめ

富岳の高性能の秘密を以下にまとめてみました.

  • アプリケーション・ファーストを掲げ貫いた,
  • ノードの計算能力とノード数の良いバランス,
  • 京での実際のアプリケーション分析に基づく性能向上の工夫を取り込んだ,
  • 富士通の新規一気通貫開発ならではの一貫した設計,例えば,A64FXにノード間通信インターフェースを搭載し通信レーテンシーを大幅に削減,
  • 最先端の半導体製造技術 TSMC 7nm の採用.A64FXはおそらく 7nm の初期ユーザで,半導体製造プロセス開発と並行したチップとシステム設計開発になったと思われます.筆者も経験ありますが,開発進捗と共に変わっていく半導体プロセス技術に追い付きながらチップ・システムを設計するのはチャレンジだったであろう,と想像します.

お客様であり共同開発の仲間でもある理研と富士通が「ワンチーム」として機能したと,筆者には映ります.世界一を目指した開発なので茨の道なのは覚悟の上だったと思いますが,スパコンランキング4冠を達成できて報われたのではないでしょうか.

Intel社は2018年にXeon Skylakeで AVX-512 を導入し[17],SIMDレジスタ幅の単純比較ではA64FXと同じ512bit幅になり差がなくなりました.独自一気通貫開発の強みを活かして,次世代スパコンでも世界一連覇を期待しています!

 

参考文献

[1] スーパーコンピュータ「富岳」TOP500,HPCG,HPL-AIにおいて世界第1位を獲得
https://www.riken.jp/pr/news/2020/20200623_2/

[2] 1位にこだわらないスパコンとして生まれて1位を獲った「富岳」.日本の技術者たちが開発で目指したものとは
https://pc.watch.impress.co.jp/docs/column/gyokai/1261786.html

[3] 世界初のエクサ級スパコン「富岳」,開発経緯や活用を理研の松岡センター長が解説
https://xtech.nikkei.com/atcl/nxt/column/18/01437/101500013/

[4] Top500に「さよなら」をした富岳スパコン
https://news.mynavi.jp/article/20190625-848903/

[5] Wikipedia TOP500
https://ja.wikipedia.org/wiki/TOP500#2020%E5%B9%B46%E6%9C%88

[6] 蹉跌と反省の末に 富岳,世界4冠の軌跡
https://xtech.nikkei.com/atcl/nxt/mag/nc/18/020600014/080600068/?P=2

[7] 富士通が明かした日本の次期フラッグシップスパコンの心臓部
https://news.mynavi.jp/article/a64fx-1/

[8] White paper FUJITSU Supercomputer PRIMEHPC FX1000 AI・エクサスケール時代を切り拓く HPC システム
https://www.fujitsu.com/downloads/JP/jsuper/primehpc-fx1000-hard-ja.pdf

[9] 第55回 Top500の1位は理研の富岳スパコン,Green500はPFNのMN-3が獲得
https://news.mynavi.jp/article/20200623-1062804/

[10] IBM Power System AC922
https://www.ibm.com/jp-ja/products/power-systems-ac922/details

[11] 日本の次世代スパコン「富岳」,富士通の工場から理研に向けて出荷を開始
https://news.mynavi.jp/article/20191202-931937/

[12] Top500トップの「Summit」はどのようなスパコンなのか?
https://news.mynavi.jp/article/summit-1/

[13] 世界一のスパコン「Summit」の性能はどの程度のものなのか?
https://news.mynavi.jp/article/summit-2/

[14] WikiChip Summit (OLCF-4) – Supercomputers
https://en.wikichip.org/wiki/supercomputers/summit

[15] Evaluating Modern GPU Interconnect: PCIe,NVLink, NV-SLI, NVSwitch and GPUDirect
https://arxiv.org/pdf/1903.04611.pdf

[16] スーパーコンピュータ「富岳」Graph500において世界第1位を獲得
https://www.riken.jp/pr/news/2020/20200623_3/

[17] 高性能・高密度実装・低消費電力を実現するスーパーコンピュータ「富岳」のCPU A64FX
https://www.fujitsu.com/jp/about/resources/publications/technicalreview/2020-03/article03.html

[18] Wikipedia ストリーミングSIMD拡張命令
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0SIMD%E6%8B%A1%E5%BC%B5%E5%91%BD%E4%BB%A4

[19] 日本の次世代スパコン「富岳」プロトタイプ機がGreen500の1位を獲得 – SC19
https://news.mynavi.jp/article/20191128-929639/4

ニュースレター購読Newsletter

登録はこちら