雛形書庫

An Unmoving Arch-Archive

KYOCERA TECHNOLOGY COLLEGEを気ままにおさらい (1)

はじめに

タイトルにあるTECHNOLOGY COLLEGEとは、J-WAVEで毎週金曜20時より放送されているJ-WAVE INNOVATION WORLDのコーナーのひとつであって、そこでは「毎月1名のゲスト講師が登場。週替わりのテーマで学生向けの授業を実施」している。今月のゲスト講師は松岡聡先生。

8月の学生向け授業は、理化学研究所 計算科学研究センター センター長 松岡聡さん!Google Meetを活用してオンライン授業を行った模様をお届けします。

今回は松岡さんの講義1回目。まず「スーパーコンピューターとは」や、スーパーコンピューター「京」との違い・共通点などのお話をいただきました。

 

引用箇所を読み直して気づいたけど、講義では最近話題のスーパーコンピュータ「富岳」について主に語られていて、それで前世代のスーパーコンピューター「京」との違いとか共通点とかの話になっている。

松岡先生に限らず毎月のゲスト講師には豪華なメンバーが揃っていて、参加できる学生が羨ましいのだけれど、しかし授業の様子は(ダイジェストではあるが)番組やYouTubeにあるJ-WAVEチャンネル*1で知ることができる。この記事では先日 (2020/08/07) の放送、第一回目の講義を聴いて考えたことを振り返りがてら綴っていく。

ちなみに先日の放送はYouTubeチャンネルにはまだ上がっていないものの*2radikoのタイムフリー機能で聴くことができる。 アーカイブがすでにアップロードされたので、以下で引用。

www.youtube.com

 

以降は、この放送回を聴いて考えた気ままなおさらい。

 

 

「富岳」の特徴

「富岳」というかスーパーコンピューターの特徴として、番組では3つの要素が挙げられていたと思う。

  1. CPUが強いこと
  2. CPUを大量に並べていること
  3. 大量に並んだCPU同士が、高速なネットワークで結合していること

 

CPU単体でも強いのに、それをさらに大量に並べることで更に強くするというやり方で昨今のスーパーコンピューターは性能を上げている。約10年前に稼働を開始した「京」と現在の「富岳」はともに超並列機とはいえ、その並列性は単純なコア数でいえば、「京」の約66万に対して「富岳」では約750万と10倍以上に増えている。それぞれのハードウェアの仕様は富士通*3理研*4のウェブサイトで公開されているのと、加えて「富岳」のハードウェアについてはHakuro MatsudaさんがRebuildの最近のエピソードで解説している*5ので、それぞれ参考にされたい。

 

ところで上で書いた昨今のスーパーコンピューター「京」や「富岳」のような超並列機の潮流は、番組で言われていたようにここ20年のことである。それ以前のスーパーコンピューターはどうやっていたかというと、おもに一つ目の要素である「CPUが強いこと」を頑張ることでスーパーたりえていた。

番組では20年という数字が挙げられていて、それ以上に遡っていくと、かつては演算方式の異なる強いCPUを載せた計算機(ベクトル計算機 *6)が活躍していた。けれど様々な歴史的経緯を経て、スーパーコンピューターの比重は二つ目の要素である「CPUを大量に並べていること」へと徐々に移っていった。CPUはほどほどにして、数の力で性能を上げていくというやり方が主流となり、しかしここにきて「富岳」が一つ目の要素、CPUの強さも兼ね備えて登場してきたことは、RebuildでHakuroさんが語っていた通り、とても胸の熱い話である。その高性能を支える技術がどんなものかが気になったけれど、残念ながら番組内では言及されず。

 

 

「富岳」の運用

並列計算

ところで、超並列機となった昨今のスーパーコンピューターにおいて、その性能を最大限に発揮させることはそれほど容易ではない。計算機の世界にはアムダールの法則というものがあって、ウィキペディア*7にわかりやすくまとまっているので説明は省くけれども、超並列機での計算ではうまくやらないとすぐに高速化が頭打ちになってしまう。並列計算に応じてプログラムを書き直すなり、あるいはアルゴリズムを改良することが求められるようになって、ここをどうにかするのが計算機屋・アプリ開発屋の腕の見せどころでもある。

番組ではマルチスレッド(1CPU内での並列化)とマルチプロセス(複数CPU間での並列化)に言及されていたけれど、だいたいどのスーパーコンピューターでも見かける並列化の仕様として、それぞれOpenMPとMPIがある。これらについては「富岳」の仕様にも記載されているから「富岳」でも使える。超並列機で特に大事になるのは後者のMPIであって、普段の逐次処理とは別の頭の使い方をしないといけない感じでやや難しみがある。MPIを学ぶうえで、あるいは実装例として、HPCIが公開しているセミナー資料*8にある「並列プログラミング虎の巻MPI版」が非常に参考になる。

 

 

耐障害

学生からの質問があった障害については、対策として多重化を施していて、コアが2個まで不良品があっても大丈夫、というお話があった。

コアの良品率をpとして、n個のコアのうちm個が良品である確率は {}_n \mathrm{C} _mp^m(1-p)^{1-m} で求められる(はず)。かりにp=0.999、1000コアに1個の割合で不良品が生じるとすると、48個のコアすべてが良品である確率は95%程度にまで下がってしまうけれど、これを50個のコアを用意して、2個まで壊れても良いとすると、良品とみなせる確率は99.99%まで上がる。

このパーセンテージをシステムの可用性に例えるならば、95%という数字は年あたりのダウンタイムが18日程度ということで詫び石どころの騒ぎではないけれども、99.99%であればわずか1時間程度のダウンタイムで済む。冗長性を確保することはそれほどまでにインパクトが大きい。

ちなみにここまでの議論は1ノードでの話だけど、「富岳」のノード総数は約16万であるので、それらの良品率は想像するだけで少し気が遠くなることには注意されたい。

 

では3つ以上のコアが壊れたときにはどうするかというと、あくまでも予想だけど交換修理になるのだと思う。理化学研究所 計算科学研究センターのウェブサイトでは、「京」のCPU交換の様子が書かれている。

www.r-ccs.riken.jp

 

番組で言われていたように、スーパーコンピューターの運用では普通では考えられないことが起こるので、それに応じられるだけのスーパーな保守体制が必要になってくる。システムの常時稼働を支えてくれている関係各位の努力にはただ頭が下がるばかりである。

 

 

おわりに

そんな感じで第一回目のおさらいはこのあたりにしておく。スーパーコンピューターとは何ぞやと問われたら、3つの要素

  1. CPUが強いこと
  2. CPUを大量に並べていること
  3. 大量に並んだCPU同士が、高速なネットワークで結合していること

と、それら超並列機の性能を引き出すためには相応のワザマエが必要となる、ということを思い返してもらえれば幸いである。

KYOCERA TECHNOLOGY COLLEGEのゲスト講師は月替わりということで、8月はあと3回は松岡先生の講義回があるだろうから、引き続きやっていくかも。またスーパーコンピューターの全体像を知るうえで、少し古い文献になるけれども、以下の本が参考になる。■

 

 

第二回目に続く: 

tl.hateblo.jp