スパコンポエムAdC2020 Day1 そもそもスパコンランキングって？

どーも、山田です。
スーパーコンピュータポエムアドベントカレンダー2020です。

# このアドベントカレンダーについて

このアドベントカレンダーは、Nov/2020のTop500ランキングをもとに、20余のスーパーコンピュータを取り上げてその構成や特性について書いてみたり、スパコンについてのポエムを述べるアドベントカレンダーです。
スパコンポエマー()としての山田てるみの個人的活動なので、所属機関とは無関係です。無関係だぞ。
一人で20システムぐらいについて書くつもりなので、内容の濃淡については保証しません。あしからず。
あ、空いてる日をだれか埋めたいっていう人がいたら大歓迎です。というか書いてくれゾンビ各位。

「このシステムについて書いてほしい」とかあったらご要望どうぞ。書くとは限りません。
なお、富岳については確実に書くので最終日までお待ちください。

# Day1 そもそもスパコンランキングって？

そもそも皆さん、Top500ってご存じですか？
年に二回、ニュースになって日本のスパコンがどうとかこうとかっていう話題で盛り上がると思いますが、実際は何？って、なかなか伝わりにくいと思います。

スーパーコンピュータのランキングというのは、年に二回発表されています。
それに合わせるように、年に二回、スーパーコンピュータに関連する学会も行われています(鶏が先か卵が先かは知らない)
例年、6月にヨーロッパで行われている学会がISC(https://www.isc-hpc.com/), 11月にアメリカで行われている学会がSC(https://supercomputing.org/)と呼ばれるものです。
今年はどちらもオンライン開催でちょっと寂しい。

## スパコンランキングの種類
スーパーコンピュータのランキングというのは、実は現状で(活気があるのとないのを含めれば) 六つぐらいあります。

* Top500
* Green500
* HPCG
* Graph500
* HPL-AI
* I/O500
* MLPerf

主に話題になるのはTop500, Green500, HPCG, Graph500の四つです。まだできたばっかりではあるものの、HPL-AIも注目されることがあります。
I/O500とMLPerfについては、できたばかりのランキングというのもあり、まだ参加者が多くはありません。ただ、IO性能にせよ、ディープラーニング性能にせよ、これから必要とされていくと思うので、人数はそのうち増えていくことでしょう。
この中で、主に話題になる四つに対して少し話していきたいと思います。

## Top500

主に二位じゃダメなんですかって揶揄されるのがこれ。
https://www.top500.org/lists/top500/

Top500は、HPLと呼ばれるプログラムを使用しており、LU分解を使用して大規模連立一次方程式を解く、というものになっています。

詳細な解説資料が世の中にはしこたまある(Wikipediaですら詳しい) ので、ここで詳しく話すことはしません。
https://ja.wikipedia.org/wiki/TOP500

何ならご自分でも実行できます。
https://github.com/telmin/lu2
をよろしく！(露骨な宣伝

あ、↑のLU2はオリジナルは神戸大学の牧野淳一郎先生によるものです
http://jun-makino.sakura.ne.jp/

Top500に対する批判はままありますが、実際問題、ではこれに代わる指標はあるか？というと、少なくともこの十年見つけられていないのが現状です。おそらくこれから先もこれに代わるものはないでしょう。
Top500で得られるものは、「システムの理論性能に対する実効性能」です。
これはスポーツカーに例えて「直線だと速い」とか揶揄されますが、逆に言うと、「直線であれば実際にここまでスピードが出せる」という証明でもあります。世の中、直線でもスピードが出せないものというのもあって…まぁこの話やめよか…

## Green500

最近よく話題になるのと日本が強いって言われるヤツ。
https://www.top500.org/lists/green500/

Green500では、使用するプログラムはTop500と同じですが、着目するものが違います。Green500でランキングにしている指標は、ずばり消費電力です。
Top500の性能を何ワットの消費電力で実現したか、が問われており、これがわかると電力効率、つまり1ワット当たりの性能というものが求められます。

Green500はなぜ重要か？というのもこれまたいろいろなところで語られているのであんまり語ってもしかたない気はしますが、軽く説明すると、現状のスーパーコンピュータの性能向上にはこの電力という問題は避けて通れません。
近年、プロセッサの性能向上は非常に緩やかになっており、スーパーコンピュータシステムの性能を向上させるためには規模を拡大することが必要不可欠です。一方で、大規模化するためには、それなりの場所と、それなりの電力が必要になります。電力が必要になるということは、それなりの冷却設備も必要になる、ということです。
今日のスーパーコンピュータの限界を決めるのは、予算か電力です。倍精度で1ExaFlopsというのがスーパーコンピュータ業界の次のマイルストーンですが、実際問題、予算も電力も熱量も度外視すれば超巨大スパコンを建造するだけで達成できるでしょう(諸説あり)。それができないのは、予算か電力か熱量のいずれかに超えられない問題があるからです(諸説あり)。

## HPCG

実アプリ性能ってよく言われるヤツ。実アプリってなんだよ(哲学
https://www.top500.org/lists/hpcg/

やっていることは、幾何学的マルチグリッド前処理による共役勾配法を用いた大規模連立一次方程式の解法です。詳しくは専門家の書かれた解説を読んだほうがいいと思いますマジで。

東大計算機センターの中島先生による解説(https://www.cc.u-tokyo.ac.jp/public/VOL18/No5/06.201609hpcg-1.pdf)

HPLとの違いは、HPLが密行列に対しての処理であるのに対して、HPCGは疎行列に対する処理である、ということです。
密行列と疎行列では必要となる性能特性が大きく異なっています。疎行列の場合、性能を出すためにはメモリ帯域が非常に重要になってきます。(*1)
今日のアプリケーションでは、その多くがメモリ帯域でのネックになると「言われており」(*2)、メモリ帯域が重要とされています。嘘ではないですが真実でもない気がしますね。

## Graph500

ビッグデータ処理って言われるヤツ。ビッグデータってExcelに載らなくなったららしいですよ。知ってました？(ほんとか？
https://graph500.org/

Graph500では、グラフのトラバーサル処理(グラフをたどる処理) を指標にしています。たどり方は幅優先探索。これは突き詰めるとネットワーク帯域とレイテンシがネックになってきます。(レイテンシはどうだったかな…)
Graph500に関してもいろいろな資料がある(というか世界一のプログラムの性能評価資料とかある) ので、そちらをご覧ください。
https://sites.google.com/site/tokyotechsuzumuralab/projects-list/graph500

富岳での資料も教えてもらったので共有します。
https://hpc-phys.kek.jp/workshop/workshop200924/nakao_200924.pdf
(似鳥先生ありがとう！！)

# 代表的なスパコンランキングで得られるもの
この四つのランキングで得られるものは、大まかに分類すると以下のようなものになります。

Top500 : スーパーコンピュータシステムの理論値に対する実効性能。「そのシステムが限界まで稼働したとき」に得られる性能。理論性能に対するトップの性能。
Green500 : スーパーコンピュータシステムの消費電力性能。
HPCG : スーパーコンピュータシステムの演算器に対するメモリ帯域の性能。メモリ帯域がボトルネックになったときに得られる性能。理論性能に対するボトムの性能。
Graph500 : スーパーコンピュータシステムのネットワーク性能。システムのネットワークがボトルネックネックになったときの理論性能に対するボトムの性能。


さて、これを見ると、この四つのいずれもおろそかにできないことがわかると思います。
なぜか？
そもそも、理論ピーク性能に対して、システムがフル稼働したときに理論性能に近い値が出せるかどうか、というのは非常に重要です。HPLで性能が出せないシステムは、それ以外のどのプログラムでもそれ以上の性能は出ません。同様に、ボトムの性能以上は出ると考えられるので、そのシステムの大まかな実効性能を探ることができます。

というか、コンピュータの性能が出ない原因なんて、

* 演算器が回らない
* メモリ帯域が足りない
* ネットワーク帯域が足りない
* 
(* ストレージ帯域が足りない)

のどれかなので、そのいずれもを測らなければ、妥当なシステムかどうか、というのは言えません。
まぁ、もちろん、これは一般論なので、自分のプログラムにSuitableかどうか、というのはまた別問題ですが。

なんかめっちゃ長くなってしまったので、システムを取り上げてつらつらやるのは明日以降に回します。

# まとめ
* スパコンランキングの概要について説明しました。
* 四つどれも重要だということが伝わればいいと思います。
* 明日も山田の担当で、スパコンシステムどれかを取り上げたいと思います。


*1 そもそも「性能を出すってなんだ？」とか思った人はコメントください。
*2 めっちゃ含みがあるのはそういう宗教です。