1. はじめに

1.1. 本文書の目的

国立研究開発法人理化学研究所(以下、「理研」)は、2021年3月からスーパーコンピュータ「富岳」(以下、「富岳」)を運用しています。「理研」は「富岳」利用者を支援する業務の一環として、「富岳」を有効に利用するための様々な視点からの文書整備を重要な課題の一つに位置付けています。簡単に「富岳」の利用を始められ、習熟度に応じて高度な技術も活用できるような広範囲な文書(たとえば、「富岳」の利用手引書、プログラム言語マニュアル、各種ツールの利用ガイド、計算性能向上を目指すためのプログラミングガイドなど)を整備し利用者に提供しています。

本文書では、上記の文書整備の一環として、独立系ソフトウェアベンダー(以下、ISV)が開発・販売する、ある商用アプリケーションのチューニング事例を紹介します。この事例は、富士通株式会社が ISV と協力して実施したもので、「富岳」にも用いられている A64FX プロセッサ向けのチューニングです。

商用アプリケーションは一般に、オープンソースソフトウェアと比べて機能が豊富であり、ソースコードは大規模かつ複雑です。この大規模で複雑な商用アプリケーションのチューニングに関する事例は、実用的なプログラムをチューニングしたいと考える「富岳」利用者にとって有用であると考え、本文書では重要なポイントを抜粋して紹介します。

1.2. チューニング対象のアプリケーション

本文書で対象とするアプリケーション(以下、本アプリケーション)は、汎用熱流体解析シミュレーションとして車体周りの空力解析や電子機器製品の熱伝導解析など、産業界の幅広い分野で利用されている商用 CFD アプリケーションです。本アプリケーションは、様々な流体モデルに対応するなどの多くの機能を持ち、一般の商用アプリケーションと同様に、ソースコードは大規模かつ複雑な構造をしています。

産業界では、複雑な形状のモデルの高精細な解析など、高精度かつ大規模なシミュレーションを行おうとする動きが広まっています。本アプリケーションに対しても、このような高精度かつ大規模なシミュレーションを実行するために、数十万並列程度の計算リソースを利用することが、利用者から求められています。今後は、それを超える大規模な計算リソースの利用も求められると考えられます。

そこで注目されたのがスーパーコンピュータ「富岳」です。「富岳」で大規模なシミュレーションを行うためには、現実的な時間でのシミュレーション完了を目指すための性能向上と、高精度で大規模なシミュレーションを可能にするための改善が求められます。この2つを実現し「富岳」を利用した大規模なシミュレーションを目指して、アプリケーションを開発した ISV と協力してチューニング作業を実施しました。

なお、一般の多くの商用アプリケーションと同様に、知的財産権等の関係で本アプリケーションの詳細や、関数名・変数名を含むソースコードは記載できません。そのため、本書に記載されているソースコード等は、チューニング事例紹介の目的で再編集しています。