理化学研究所(理研)、千葉大学、神戸大学、京都大学、富士通は2016年12月2日、スーパーコンピュータ「京」(けい)を用いて、数式のような簡潔な指示を書くだけでスーパーコンピュータでの計算に必要となる高度なプログラムを自動生成できるプログラミング言語「Formura」を共同で開発したと発表した。
理研らの共同研究グループは今回、自然が元来備える「局在性」と「並列性」を極力分解せずにスーパーコンピュータの動作に変換することを計画。元の方程式が表す自然現象を一挙にシミュレーションできるスーパーコンピュータがあると仮定し、方程式が表す対象をその仮想スーパーコンピュータのプログラムに翻訳する方式を考案した。
次に、現実のスーパーコンピュータが備える階層構造に、この仮想スーパーコンピュータのプログラムを適用しながら実際のプログラムに翻訳する手法を検討し、方程式をプログラムに自動的に変換できる一連の段階を発見。そして、全ての段階に対応する数学的定義を作ることでFormuraを開発した。
共同研究グループはFormuraの開発により、従来シミュレーションとコンピュータ双方に深い知識が必要だったスーパーコンピュータのプログラミングを機械化することに成功した。Formuraは、同じアプリケーションに対して何万通りものプログラムの生成が可能。そして、それらのプログラムを、京で実際に実行して性能を測定し、最も速かったものを自動的に選択できる。
また、共同研究グループはFormuraで記述したプログラムで、地下に伸びる菌類の複雑な挙動のシミュレーションに成功した。このシミュレーションでFormuraは、3万行以上のプログラムを4万通り以上、自動的に生成。一方、その元となったシミュレーションプログラムは約20行で、はがき1枚に収まる程度だったとしている。