3Dゲーム制作の先生から教わったCUDAが、私の物理学の博士論文になるまで(後編)

そして2021年9月。長い回り道の末に、私は新潟大学の博士課程に再入学し、大野義章研究室に配属された。大野研究室は第一原理計算が専門の研究室ではなく、強相関電子系や超伝導が専門の研究室である。大野研では、最初は超伝導と二次元物質を組み合わせた研究をするつもりだった。しかし、このアプローチはうまくいかなかった。その後も、鉄系超伝導物質に近い構造を持つ物質や鉄セレンの第一原理計算など、いくつかのテーマを試したが、博士論文の柱にできるほどの結果にはならなかった。このままでは、3年での博士号取得は厳しいと思った。

そんな中2022年に、尾崎先生にメールを送ってみた。尾崎先生はこの13年で、JAISTから東京大学物性研究所(物性研)に異動になっていた。内容は「博士課程に再入学して、研究を頑張っています」という感じで、単なる近況報告を送ったつもりだった。しかし、尾崎先生からの返信メールは、要約すると「頑張っているのですね。また一緒に頑張りましょう」というもので、これに私は驚き感動した。尾崎先生は私のことを忘れていなかった。そしてその翌年の2023年から今まで、毎年物性研に研究員として出向している。

もう一つ、後から見れば重要な出来事があった。2022年12月に、大野先生と私は物性研のスーパーコンピュータを申請した。物性研には、CPUノードの「ohtaka」と、NVIDIA A100というGPUを搭載したGPUノードの「kugui」という2つのスーパーコンピュータがある。当初は「kugui」を使用するつもりはなかった。
ほとんど「ついで」に申請したつもりだった。ただ、この時私は、15年ぶりにあのアイデアを思い出した。尾崎先生と連絡が取れ、高性能なGPUが活用できるようになった今、「OpenMXをGPU加速する」という夢は実現できるのではないか。このアイデアを大野先生と尾崎先生に話した。お二人は止めなかった。私は15年ごしのアイデアで博士論文を書き、博士号を取得することに決めた。

まず行ったのは、博士課程の期間延長である。新潟大学では、障害者は博士課程を1年ないし2年延長できる制度がある。私はこの制度を利用し、博士課程を2年延長した。「OpenMXをGPU加速する」というアイデアを実現し、論文にするためには、それだけの期間が必要だろうと思ったからである。

2023年のGPUであるNVIDIA A100はVRAMに40GBのHBM2を搭載し、FP64性能は2009年当時のGPUとは桁違いだった。これなら第一原理計算プログラムのGPU加速は十分に実現できる。実際、VASPやQuantum ESPRESSOはすでにGPU加速が行われていた。

そして、15年の間にすでにOpenMXはGPU加速の研究が行われていたことも記しておかなければならない。その研究は4コアCPUであるXeon E5606(Westmere)に対して、NVIDIA Quadro 4000(2010年代初期のワークステーション向けGPU)を用いて約2倍弱の高速化というものだった。用いたGPUの貧弱さを考えれば、これは立派な結果である。ただし、その研究はOpenMX 3.6をベースにしたものであり、2023年時点のOpenMX 3.9とは事情が大きく異なっていた。OpenMX 3.9では大規模なMPI並列化が進み、CPU版そのものが非常に高速になっていた。また、先行研究の対象はコリニアなバンドDFT計算に限られており、ノンコリニアDFTやクラスターDFTはGPU加速の対象ではなかった。先行研究のこれらの欠点を補うために、私は、彼らとは独自にOpenMX 3.9のGPU加速を行うことを決意した。

しかしOpenMX 3.9をGPU化する作業は非常に困難だった。2023年のOpenMX 3.9は、かつて私が見た2010年のOpenMXから大きく変化していた。OpenMX 3.9では並列化の構造が大きく変わっており、単純に重いループをGPUへ投げればよい、という状況ではなかった。前述のように内部が高度にMPI並列化されていて、CUDAとどう組み合わせるかが課題だった。そして私は当初、MPIにもCUDAにも詳しくなかった。

そんな中、東京大学情報基盤センターで「GPU移行相談会」や、「GPUミニキャンプ」という題目の、GPU講習会が行われていることを知った。私はこれに参加し、大きな知見を得た。OpenMXをGPU加速するためには、CUDAで書かなくてもよく、OpenACCとCUDA数学ライブラリ(cuBLASやcuSOLVER)を組み合わせればいいと気付いたのはこれらの講習会がきっかけである。そして、東京大学情報基盤センターでは「MPI基礎:並列プログラミング入門」や、「MPI上級編」という題目でMPIの講習会も開かれていた。私はこれらの講習会を通じて、なんとかMPI並列化を理解することができた。

最初は、OpenMXの既存のMPI並列構造をできるだけ壊さず、そのままGPUを足す方針を取った。言い換えれば、既存の並列計算の枠組みにGPUを後付けしようとしたのである。しかし、これはうまくいかなかった。全く性能が出ず、CPUとほとんど変わらなかった。そこで私は方針を変えた。OpenMXの心臓部である一般化固有値問題の解法部分だけは、あえてMPI並列を切る。そこだけ単一MPIプロセスに集め、GPUへ行列積や固有値問題を投げる。これはある程度上手く行った。

そして時は経ち2025年、ベンチマークのために申請した筑波大学のスーパーコンピュータであるPegasus上で、NVIDIA H100を使ってCPU比約3倍の高速化を達成した。GPU計算としては、CPU比3倍という数字は正直物足りなかった。ただ、なぜ3倍にとどまるのかは分かっていた。そして、OpenMX 3.9のコリニア・ノンコリニアDFTをGPU加速したという点では、論文として十分に意味があると判断した。そして論文は採択され、JPSJ誌に載った。15年越しの夢が叶った瞬間だった。

そして2026年の今、OpenMXのGPU加速のパフォーマンスは、CPU比3倍ではなく、最良ケースで6倍以上となっている。そして、私はOpenMXのGPU加速に加え、別途研究していたMISAKAアルゴリズムで博士論文を書き上げ、これは最終的に220ページを超える大部となった。博士号取得は9月の予定である。

私の人生を振り返って思うのは、私の人生は「偶然」の連続だったことである。3Dゲーム制作の先生からCUDAについて聞いたのも偶然、尾崎先生と出会ったのも偶然、F氏と出会い、新潟大学の博士課程に再入学したのも偶然、尾崎先生との再会も偶然、「kugui」を申請したことも偶然だったのである。

2008年に、京都の専門学校で3Dゲーム制作の先生から聞いたCUDA。
その一言から始まった直観は、15年をかけて、私の博士論文の一部になった。

私はいわゆる「ストレートな」学歴をたどっていない。
ただそれでも、私はもう一度、研究者として歩き始めることができた。

この物語が、誰かにとって何かを意味することがあれば、幸いである。

謝辞
NVIDIAのジェンスン・フアンCEOにもこの場を借りて感謝を申し上げたい。2006年のフアンCEOによる「すべてのGPUにCUDAを載せる」という決定がなかったら、私はこの自伝を書いていない。うぬぼれかもしれないが、2008年のあの時、私は確かにフアンCEOと同じ未来を見ていたと思う。それはフアンCEOが見ていた巨大な未来の、ごく小さな一部分にすぎないだろうが、私は確かに見た。第一原理計算がGPUで加速する未来を。

いいなと思ったら応援しよう!