4冠を誇るスーパーコンピュータ「富岳」はいかにつくられたのか
―格子QCDアプリケーションからのコデザイン物語
世界ランキングで2021年11月に4期連続4冠を獲得したスーパーコンピュータ「富岳」。2021年3月に本格共用が始まり、新型コロナウイルス感染症関連のシミュレーションなど高性能スパコンならではの成果を着々と上げています。理化学研究所 計算科学研究センターの中村宜⽂(なかむら・よしふみ)技師は、「富岳」を開発するプロジェクトFS2020(Flagship 2020 Project)に、「富岳」を利用する格子量子色力学の専門家の立場から参画し重要な役割を果たしました。ここでは、「富岳」の開発に中村さんがどのように関わってきたのかをご紹介します。
開発はシステムとアプリで並走する「コデザイン」
スーパーコンピュータ「京」の後継となるフラッグシップコンピュータの開発が始まったのは、2014年(図1)。その前段の研究プロジェクト「アプリケーション分野からみた将来のHPCIシステムのあり方の調査研究」も含めると、中村さんは2012年から9年間、「富岳」(「富岳」という名称が決定したのは2019年だが、以後、名称決定前でも文脈により「富岳」を使用)の開発に携わってきました。
フラッグシップコンピュータにどのような性能が最適なのかは、計算機システム(ハードウェア)をつくる専門家だけでは決められません。開発の初期に7年後の技術を予測するだけでも難しい上に、研究分野ごとに求める性能は異なるため、計算機システムの上でアプリケーションソフトウェアを実際に使う人たちからの評価や意見を採り入れる必要があるからです。そこで、まず、フラッグシップコンピュータを活用して重点的に取り組むべき社会的・科学的課題が2014年に9つ選定されました(表1)。そして、それぞれを代表するターゲットアプリケーション(表2)と計算機システムの開発を並行して進めるコデザインという開発手法がとられました。
中村さんが研究する格子量子色力学(LQCD)は、量子色力学理論にもとづき、素粒子に働く力を計算機でシミュレーションするための手法です*1。3種類のクォークや、クォーク同士を結びつけるグルーオンを格子状に区切られた空間に配置して、素粒子に働く力を計算可能にしています(図2)。
LQCDでより正確に素粒子の振る舞いを知るためには膨大な計算が必要なため、LQCD用のアプリはターゲットアプリケーションの1つに選ばれたのです。中村さんは、LQCDアプリの計算の大半を占め、核となる部分を一から一人で作成し、「QWS」と名付けました(QWS:QCD Wide SIMD Library*2)。そして、QWSを用いて、開発中の「富岳」の性能を定期的に評価し、計算機システムの開発者と相互にフィードバックをしながら「富岳」とLQCD アプリの性能を高めることに尽力してきました*3。LQCD研究者全員が使いやすいスパコンを実現するために
なぜ中村さんは一人でQWS初版を作成することになったのでしょうか。
まず、2014年の10月から理研と富士通株式会社とが「富岳」のシステムの基本設計を始めました。このとき、他のターゲットアプリに先駆けてLQCDのアプリを使ってシステムの評価を行うことになりました。同年12月末までに、「富岳」の重要なアーキテクチャパラメータ(メモリ構成、通信構成、コア数、演算器等)を決める計画で、そのためのアプリ側からの根拠が必要だったのです。
アプリ自体は1ヵ月で完成させなければ、間に合わない状況でした。まず、中村さんはどのアプリを使うかを決めるという難題にぶつかりました。既に、2014年の総合科学技術・イノベーション会議で「CCS-QCDというアプリで、1924の問題サイズで、「京」の50倍の性能を目指す」という目標が設定されていました。しかし、CCS-QCDは「京」での実績がありません。もしターゲットアプリケーションとするなら、「京」と「富岳」の双方に最適化をしなければなりません。一方、「京」で実績のあったLDDHMCというアプリは「京」での計算に極限まで最適化されていました。これを「富岳」用に1ヵ月という短期間で最適化し直すのは現実的でありませんでした。
LQCD用のアプリはその他にも多数ありましたが、その中の一つを使うとそのアプリだけに最適化されたハード設計になってしまいます。どのアプリを使うLQCD研究者にとっても使いやすいスパコンにするために、LQCDアプリに共通するDirac方程式をシンプルに解くものがシステムの評価には適していると中村さんは考えました。また、「富岳」で開発したソフトウェアをオープンソース化するという「富岳」の開発方針に共感していた中村さんは、LQCD用のアプリの核となるものを一から開発するという決断をし、初版を1週間で完成させました。中村さんは当時のことを「この1週間を含め、何度か終電を逃して1時間半かけて歩いて帰ったこともありましたね。でも、この仕事の意義を理解しやりがいも感じていましたので、楽しみながら開発しました」と振り返ります。
コデザインの難しさとコデザインならではの成果
「富岳」のパラメータが何も決まっていない状況でQWSを作るために、中村さんは様々な工夫をしました。LQCDでは、複素数の演算が必須です。しかし、残り8つのターゲットアプリケーションは複素数演算を(すくなくとも富岳の性能評価においては)必要としないため、複素数演算は強化されないかもしれないと中村さんは予想しました。
中村さんは「一つの命令で多くの演算が並列に行えるSIMD演算処理において、従来と同じか従来より広いSIMD幅を「富岳」は持つだろうとの検討情報をもとに、複素数の実部と虚部を分離し実部16要素を先に並べるデータレイアウトにしよう」と戦略を練りました(図3)。この戦略について中村さんは「この方が、手戻りがないだろうと考えました。結果的にこの方針はとても良かったです」と言います。中村さんの予想通り、「富岳」は「京」ほど複素数を得意とする仕様にはなりませんでしたが、広いSIMD幅を効率よく使うという中村さんの工夫が功を奏し、LQCDアプリは「富岳」の性能を最大限に引き出すことができました。
コデザインをしていたからこその成果について中村さんは「プロジェクト初期の2015年2月ごろに『高速な縮約機能を追加してほしい』という要望を出しました。これは、かなり大きな要求で、「京」では実数1つだったハードウェアバリアによる高速縮約機能が、「富岳」では実数3つまで可能になるという形で実現しました。LQCDアプリだけでなく、他アプリケーションが高性能を達成するのにも大きく貢献するはずです」と説明します。
ハードウェアバリアによる高速縮約とは、全CPU(プロセス)から数字を集めて足し算(等)をして全CPUに答えを戻す「縮約」という処理を、ソフトウェアを介さずにハードウェアの中だけで完結する高速化の仕組みです。LQCDの計算では、短い時間間隔で関連するプロセスから数字を集めて合計するという手続きがあり、高速縮約はとても重要だったのです。
世界初100ペタフロップスを達成
中村さんは、プロジェクト初期には別のスパコン、中期には「富岳」のCPUの性能シミュレータ、後期には試作機を使って、LQCDアプリの性能を測定しましたが、このアプリは特殊なケースのみで発生するバグを修正するif文を一つ加えただけで、「富岳」開発期間終了まで順調に走り続けました*3。「富岳」の一部を使ったベンチマークテストでは、計算ノードへ実行ファイルをコピーするのに時間がかかるという問題も起こりましたが、OSの管理システムを調整してもらうことで解決しました。
そして、2020年8月に「富岳」全系を使用した最終ベンチマークテストが行われ、LQCDアプリは「京」の38倍、100PFLOPS以上(単精度)を達成しました。それまでのLQCDのアプリの世界記録、アメリカの27PFLOPSを大幅に更新した記録です。「100PFLOPSという数字は公式の開発目標には設定されていませんでしたが、自身のマイルストーンとして目指してきたので、この結果はとても嬉しかったです」と中村さん。
目標の50倍には届きませんでしたが、中村さんは「問題サイズが1924という設定は、「富岳」全系を使った能力をはかるには小さすぎるのです。大規模ベンチマークでも計算自体ではなく通信関係の時間が半分を占めていました。「富岳」の倍精度演算性能は「京」の50倍と大幅に向上していますが、通信性能がそれほど向上していません。もっと大きな問題サイズの研究ができるポテンシャルのあるスパコンだと言えるでしょう*1」と説明します。
中村さんは、LQCDが広いSIMD幅を使うのに不利な計算だったからこそ、実部と虚部のデータをどうレイアウトするかを工夫してきました。「もし、今後、さらにSIMD幅の広いコンピュータを開発することになった場合、今回はデータレイアウトに配慮しなくても計算性能を向上できた気象や創薬などのアプリにも、データレイアウトの工夫が必要になるはずです。LQCDアプリの開発を経て培った知見を、他分野のアプリにも広く還元していきたいです」と抱負を語ります。
コデザインによりLQCDアプリは「富岳」の計算能力を存分に活用できるようになりました。「富岳」の運用が進むにつれて、QCDの新たな知見が積み重ねられていくことでしょう。期待が膨らみます。
- *1 関連情報「スーパーコンピュータを使ったクォークとグルーオンの運動方程式の計算」
- *2 QCD Wide SIMD Library (QWS)はDirac方程式を解くライブラリで、様々なLQCDアプリから利用可能です。完成版は誰でも使えるよう公開されています。https://github.com/RIKEN-LQCD/qws
- *3 LQCDのワーキンググループでは、中村さんの他にも3名の方が特に活躍されました。
富士通の向井 優太さんは開発中の試作機やCPU性能シミュレータを早い段階から使えました。その環境を生かして実機用の細かなチューニングに尽力されました。広島大学の石川健一さんは「京」の開発からLQCD専門家としてかかわり、その経験から有益な議論を展開、とりまとめをしました。また理化学研究所の金森逸作さんはネットワーク・通信系の実装を担いました。