スパコン「SX-Aurora TSUBASA」を使ったプログラミングコンテスト
SX-Aurora TSUBASAはNECが開発したベクトル型スーパーコンピュータ。ベクトルプロセッサを広く一般的に活用できるPCIeカードタイプのベクトルエンジンに発展、幅広いラインナップを揃えることで、HPC領域だけではなくAIやビッグデータ解析などの領域でも、手軽に活用できるようになっている。
今回のプログラミングコンテストのテーマは、SX-Aurora TSUBASAを活用して、Auroraが搭載しているベクトル型プロセッサの性能を活かし、社会課題の解決に貢献できるものであること。プログラミング期間は11月30日から2月10日の午後5時まで。応募者は年末年始も使って、作品の構想を練ったり、プログラミングしたりしていたのだろう。開会挨拶を行ったNEC プラットフォーム販売部門の岡田修平氏は、「『こんなに速くなる方法があるのか』『こんな社会課題をこんなアイデアで解決できるのか』など、社内で非常に盛り上がる作品が集まった」と話す。
決勝イベントに残った3組は、その中でも非常に個性が目立った提案だったという。審査員を務めるのは審査委員長の田尾研二氏、先述の岡田氏を含めたNEC プラットフォーム販売部門のメンバー5人とカゴヤ・ジャパンの鶴岡謙吾氏の計6人。審査基準は社会貢献度、市場有望度、CPUとの性能の差という3つの観点で総合的な判断となる。
量子ゲート方式のハードウェア限界突破を目指す「Alpha-Qu」
最初にプレゼンを行ったのは小林博一氏。応募プログラムは量子コンピュータの動作をソフトウェアでシミュレートする量子回路シミュレータ「Alpha-Qu」。汎用的な量子ゲートを組み合わせて電子回路を構成する量子ゲート方式を採用したシミュレータである。
量子コンピュータは、従来のコンピュータでは難しかった複雑な社会課題を解決するツールとして期待が高まっている。だが、量子コンピュータ実現にはエラー発生の割合が多く、期待した計算結果にならない、膨大な費用が必要というハードウェアの課題に加え、量子の特長を生かした特別なアルゴリズムが必要という課題がある。「そこでAlpha-Quの出番」と小林氏。Alpha-Quであれば、ハードウェアの登場を待たずして量子コンピュータ相当の動作検証が可能になるからだ。
現在、Alpha-Qu以外にも手軽に使えそうなシミュレータはいくつか登場している。だが、それらのシミュレータは計算できる量子ビット数が20~30程度と限界がある。だが、Alpha-Quは最大41量子ビットのシミュレートが可能。量子回路次第では60量子ビット程度でも実行可能だという。20量子ビットを超える量子回路では、100倍、1000倍、1万倍というレベルの処理速度の向上が図れている。メモリの使用量も1%未満。「従来のシミュレータとの性能の違いがAlpha-Quの特長」と小林氏は胸を張る。
このような性能の違いが出るのは、従来の量子ビット数を増やすためのアプローチと、Alpha-Quのアプローチが異なるからだ。従来は量子ビット数を増やすためのアプローチとして、サーバを増やしてデータを分散するというアプローチを取っていた。だが、Alpha-Quのアプローチは、0以外の状態ベクトルのみを保持することで性能改善を図る。
他のスパコンと比較してみると、その性能は圧倒的。富岳512台によるショアのアルゴリズムを使ったN=253の素因数分解に要した時間は463秒、一方、Alpha-Quではたった3秒と150倍もの性能改善を実現。「SX-Aurora TSUBASA1台で、富岳512台×150セットよりも価値がある効果を示したと言えるのではないか」と小林氏は言う。今後、量子コンピュータの研究が加速していくことは間違いない。Alpha-Quの発表は、SX-Aurora TSUBASAは量子アニーリング方式の世界だけではなく、量子ゲート方式でも世界一を獲得する可能性を示すことができたと言えるのかもしれない。
小林氏の発表の後、質疑応答が行われた。
「すばらしいパフォーマンス。社会課題の解決ということでいうと、どういうことがターゲットになるのか」という鶴岡氏の質問に対し、小林氏は「量子コンピュータの発展は、ハードウェアが壁になり停滞しています。Alpha-Quが採用したアプローチにより、その壁を取り払い、一気に量子コンピュータの発展を加速させることができる。つまり量子コンピュータの発展させることが、社会課題の解決に貢献できると考えました」と回答した。
「組合せ最適化問題」に必要なQUBO行列を超高速に作成
続いて発表したのは中川修氏。応募プログラムは「量子アニーリングを用いた避難経路最適化のためのリアルタイムQUBO行列作成プログラム」。解決したい社会課題として中川氏がテーマにしたのは群衆事故。群衆事故とは、統制ないし誘導されていない人の流れによって発生する事故のことを指す。
人が密集する空間で避難口に人が殺到して群衆事故が発生しないよう、いかにして人びとを迅速に避難誘導させるか。「これは言うほど簡単なことではない」と中川氏。というのも全体状況を俯瞰して超高速に組合せ最適化問題を解く必要があるからだ。量子アニーリングを使えば簡単に解けるのではと思うかもしれないが、量子アニーリング計算に必要なQUBO行列作成は従来型のコンピュータで作るしかなく、これが遅いと意味がない。そこでSX-Aurora TSUBASAのベクトルエンジンを利用することで、QUBO行列の作成を高速化・リアルタイム化するプログラムの実現に取り組むことになったという。
組合せ最適化の基本アイデアは、各人に対する避難経路の候補を数パターン生成し、各人の重なりの最も少ない経路を最適経路とする。
計算式は次の図の通り。
中川氏は10x10の通路マップ上に50人が、ある偏りをもってランダムに存在するという状態を想定して、量子アニーリングで全体最適化を実施した。発生していた渋滞は緩和できたが、QUBO作成に0.008秒かかったという。この結果からベクトルエンジンを使う必要がないと思われるかもしれないが、大規模ショッピングモールや百貨店の避難経路最適化を考えると、複数階のフロアにまたがった通路に数百~数千人の客が集まる状況が起こりえる。例えば5000人だとQUBO行列の計算時間は約9秒。「そんな時間は待てませんよね」と中川氏。そこで活用するのがSX-Aurora TSUBASAのベクトルエンジンである。
リアルタイムQUBO行列作成プログラムの処理の流れは次の図の通り。
候補経路作成とQUBO行列作成のソースコードにベクトル化の工夫を施した上で、「ベクトルエンジンを利用しない場合(gccのみ)」「ベクトルエンジンを利用しない場合(gcc+OpenMP利用)」「ベクトルエンジンを利用する場合(ncc+OpenMP利用)の3つのパターンで処理時間を計測した。OpenMPを利用することで約7.8倍、ベクトルエンジンを利用することでさらに約14.2倍の高速化、トータルで約111倍の高速化を実現。約0.08秒で計算が完了したという。
「今回の技術は災害時の避難誘導だけではなく、交通渋滞の回避やドローンなどの次世代交通インフラの制御にも適用できると考えられます」と中川氏は加える。
災害対策や高度交通システム、エアモビリティなどは、大量のセンシングデータを収集してリアルタイムに計算結果を返す必要がある領域。これらは、普通のPCに組み込んで使えるSX-Aurora TSUBASAが生かせる領域だ。
続いて行われた質疑応答では、NEC速水氏の「SX-Aurora TSUBASAを操作した感想やベクトル化の工夫について教えてほしい」という質問に対し、中川氏は「FOR LOOPの中にif文を書くと遅くなるので、if文に相当するものをLOOPの外に出すような処理を多用しています。乱数発生のところもLOOPに入れると時間がかかるので、NECが提供している数値計算のライブラリを使用し、乱数を外に出すという工夫をしました」と回答。
また田尾氏の「組合せ最適化問題で未解決な問題はいろいろあったと思いますが、今回のプログラムを選んだ理由について教えてください」という質問には、「例えば製造スケジューリングやシフト表、物流の配送ルートなども組合せ最適化問題ですが、それらは数理最適ソフトウェアが出ており、それで解けてしまいます。今回のプログラムを選んだのは、量子アニーリングの得意分野である2次計画問題であり、社会課題解決につながると考えたからです」と回答した。
Fortranの表現力向上と開発効率向上を支えるSX-Aurora TSUBASA
最後に登壇したのは出川智啓氏。応募プログラムのタイトルは「izumi-Fortranの表現力向上と開発効率向上,それを支えるSX-Aurora TSUBASA」だ。
Fortranにどんなイメージを持っているか。多くの人は「古めかしい言語」と思っているのではないだろうか。確かにFortranはいまどきの開発者に好まれるプログラム言語でも、プログラミング環境でもない。だからこそ、出川氏は「このプログラミングコンテストを通じて、Fortranの状況を改善しようと考えました」と言う。
Fortranの課題はいまどきのプログラミング言語や環境と遜色のない、表現力と開発効率を有すること。つまり表現力向上と開発効率の向上である。表現力とは数式や自然言語に近い記述でプログラミングできること。出川氏はそれを実行する仕組みとして「izumi」を作成。また開発効率の向上については、Fortranのコミュニティが立ち上がっており、そこで作成されたエコシステムと組み合わせることで達成することにしたという。だが、表現力を向上させようとすると、複雑な処理が必要になる。Fortranの特長は高速な数値計算ができること。そこで「SX-Aurora TSUBASAを用いて数値計算でも有効に利用できることを確認することにしました」(出川氏)
作成したizumiの評価をするために流体シミュレーションに適用してみたという。それを表したのが次の図の式だ。
Fractional Step法による計算式をizumiで記述すると次のようになる。青色の部分がizumiによって定義した演算子で、緑色の部分がizumiによって定義された方を使った変数である。この中で毛色が異なるのは2番目の式、連立方程式を解くというもの。「ある基準を満たすまで、共役勾配法でポアソン方程式を解くという記述にしました」と出川氏は説明する。
この開発にあたっては、「次の4種類のコミュニティ製モダンエコシステムを活用した」と出川氏。それが「Fortran Package Manager(FPM:プロジェクト管理、ビルド、依存関係解決)」「Fortran Standard Library(標準ライブラリ)」「VTKFortran(VTK形式のファイル出力ライブラリ)」「FORD(APIドキュメント自動生成スクリプト)」である。
このプログラムの性能をSX-Aurora TSUBASAとXeonで測定したところ、Xenonで3459秒かかっていたものが、SX-Aurora TSUBASAを使うと126秒、27分の1に短縮できたという。「ここで強調したいのはプログラムの変更はまったくしていないこと」と出川氏。
この成果は、Fortranの再活性化を後押しし、市場の拡大と潜在顧客の増加に貢献できる可能性がある。例えばシミュレーションで物理現象を研究している学生や若手研究者、シミュレーションのフレームワークを開発している研究グループ、ソルバーを内製している企業のアーキテクトやテックリードなどがターゲットになるのではと出川氏は言う。
Fortranはこれまで水槽の中に英知をたくさん溜めてきたが、それを水槽の外に湧き出すことができなかった。「今回のプログラミングコンテストがその英知を泉から湧き出す一つのきっかけとなり、その湧き出した英知が社会問題を解決してくれると信じています」最後にこう語り、出川氏は発表を締めた。
質疑応答では、NECの浅田氏から「研究者がターゲットになるのではという話もありましたが、研究者がメインとする業務は研究です。どこまで研究者が踏み込んで、このようなシステムを扱っていくのか。そのバランスをどう考えて運用すべきでしょうか」という質問が投げかけられた。出川氏は「研究者がやりたいのはあくまでもシミュレーションで、プログラミングではありません。利便性向上のために時間を割くことは問題なので、考えていく必要があります。今は乱数生成などいろいろなアルゴリズムもあり、FPMと組み合わせることで外部との連携もより簡単にできるようになるので、ぜひ試してほしいです」と回答した。
最終結果発表!優勝は誰の手に
3人の発表が終わり、続いて審査結果の発表と表彰式が行われた。
まず、カゴヤ・ジャパン特別賞から発表。カゴヤ・ジャパン特別賞を受賞したのは、中川氏の「量子アニーリングを用いた避難経路最適化のためのリアルタイム QUBO 行列作成プログラム」。
続いて、今回の審査結果が発表された。3位の審査員特別賞を受賞したのは、小林氏の「世界最速量子回路シミュレータAlpha-Qu」。
続いて準優勝は出川氏の「izumi-Fortranの表現力向上と開発効率向上,それを支えるSX-Aurora TSUBASA」。
そして優勝に輝いたのが中川氏の「量子アニーリングを用いた避難経路最適化のためのリアルタイム QUBO 行列作成プログラム」である。
カゴヤ・ジャパンの鶴岡氏は次のようにコメントした。「さすがにレベルが非常に高い戦いとなりました。特に中川氏が提案したアイデアは、実用性が高いソリューションになり得ると思いました。出川氏の発表も、FortranはPython並にライブラリが充実すればもっと使えるようになると思いましたし、小林氏の発表も、Alpha-Quでは量子アニーリングではなく量子ゲート方式に挑戦しており、そのファイティングスピリットに感動しました」
NECの田尾氏からは今回の発表に関して、次のような講評が送られた。
「今回、発表していただいた三者は、将来の技術の話をされる方、近未来の話される方、トラディショナルな話をされる方というように、技術の考え方も趣旨の捉え方も異なります。そこが採点する側にとっては、非常に難しく、配点に悩みました。
量子ゲート方式はNECも20年以上前に取り組むと宣言し、今も諦めずに取り組んでいる領域です。小林さんのAlpha-Quの取り組みには、イノベータの力を感じました。
準優勝の出川さんはFortranというトラディショナルな技術にフォーカスした発表でした。若手プログラマが減っている領域ですが、今後研究者が温めていた技術を継承していくフェーズに入ると思います。それをわかりやすく体系化していただいたことを評価しました。
優勝の中川さんが発表した内容は、NECの企業理念にも合致するところに鋭く切り込んでいました。避難経路最適化は解決すべき社会課題であり、事業としてもポテンシャルのある領域だと思いました」(田尾氏)
最後は受賞者が感想を延べ、熱気に包まれたプログラミングコンテストの幕は閉じた。
「C++を久しぶりに触りました。コンピュータの性能がダイレクトに返ってくるのはいいものですね。久しぶりに年末年始、楽しい時間を過ごさせていただきました」(小林氏)
「このコンテストに参加するモチベーションとなったのは、NECのコンパイラが使える機会があると思ったこと。GFortranやNAG Fortranを使う中で、NECのFortranコンパイラはどのくらい使えるのだろうかと思っているうちに、NECのFortranの出来の良さやSX-Aurora TSUBASAの出来の良さに支えられ、受賞することができました。SX-Aurora TSUBASAは素晴らしい計算環境です。もう少し安くなったら個人的に購入したいと思いました」(出川氏)
「2つも賞をいただき、ありがとうございます。数年前、GPUのプログラムに携わった際、自分のプログラムが速くなるのが嬉しく、自分はこのようなことが好きだと気づきました。GPUを触ったので、今度はスパコンを触りたいと思い始めたときに、今回のコンテストの情報を知り、『応募するしかない』と思いました。スパコンを使えることにワクワクし、年末年始、熱中してプログラミングに取り組みました。こういう機会をいただいて感謝しています。また次回もあるなら応募したいと思います」(中川氏)
SX-Aurora TSUBASAの詳細資料はこちらから!
今回のプログラミングコンテストの題材となった、ベクトル型スーパーコンピュータ「SX-Aurora TSUBASA」のご紹介資料です。
従来のHPC領域だけでなくAI/ビッグデータ解析などの領域でも手軽にお客様業務の生産性を飛躍的に高めるプラットフォームとして提供しています。