（様式 20）成果報告書

TSUBAME 共同利用 平成２９年度 学術利用 成果報告書

利用課題名 先進的ステンシルコード技術
英文：Advance Stencil-Code Engineering
利用課題責任者
千葉 滋
Shigeru Chiba所属
東京大学 情報理工学系研究科創造情報学専攻
Grad. School of Information Science and Technology
The University of Tokyo
http://www.csg.ci.i.u-tokyo.ac.jp
邦文抄録（300 字程度）
⾼度なステンシル計算のためのドメイン専⽤⾔語 (DSL) の開発を⾏い、その実⾏時性能を検証するた
め、NAS Parallel Benchmark の CG, LU 相当のプログラムを DSL で書き、TSUBAME 上で元のFortran によるプログラムと実⾏時性能の⽐較をおこなった。本研究課題は JST CREST/独 DFG による⽇独共同研究 SPPEXA の ExaStencil プロジェクトの中で実施している。ExaStencil プロジェクトで開発している ExaSlang の性能測定の⼀部も TSUBAME 上でおこなった。さらに DSL の実⾏基盤として分散システムの資源管理システムの研究もおこなった。具体的には Hadoop のオリジナル実装を MPI環境で効率よく動かすための研究を TSUBAME をテストベッドとしておこなった。
英文抄録（100 words 程度）
We have developed a domain specific language (DSL) for high-performance stencil computing andexamined its execution performance on TSUBAME by writing equivalent programs in that DSL to NAS
Parallel Benchmark CG and LU. This work was performed under the ExaStencil project of the joint
research program SPPEXA of JST CREST and German DFG. Part of the performance evaluation of theExaSlang language developed in the ExaStencil project was also conducted on TSUBAME. Furthermore,
we also studied a distributed resource management system for the execution environment of DSLs. We
used TSUBAME to study an efficient MPI-based execution platform for the original implementation ofHadoop.

Keywords: domain specific languages, reflection, deep reification, stencil computing, Java.

背景と目的ぶ）のライブラリとして実装される。ライブラリでステンシル計算は多くの科学技術分野で頻繁に使はあるが、そのライブラリを⽤いた書かれたホストわれる計算でこれまでも様々なドメイン専⽤⾔語や⾔語のプログラムが、あたかも専⽤の⾔語で書かれライブラリが開発されてきた。⼀⽅で、ドメイン専

たかのように⾒えるよう、ライブラリのプログラミ⽤⾔語はせまい応⽤範囲（ドメイン）のために新規ング・インタフェースを注意深く設計する。
しかし、にコンパイラやライブラリ、開発環境を整備しなけ

埋め込み型ドメイン専⽤⾔語は、ホスト⾔語のライればならず、開発コストの⼤きさが課題である。ドブラリであるが故に、開発コストが⽐較的⼩さくでメイン専⽤⾔語の開発コストという課題を解消するきるが、実⾏時性能は必ずしも満⾜いくものではな⼿法として注⽬されているのが埋め込み型ドメインかった。そのドメイン固有の実⾏時性能最適化技法

専⽤⾔語（Embedded Domain Specific Languages）などの適⽤が難しくなりがちだからである。と呼ばれる⼿法である。この⼿法では、ドメイン専

本研究課題は、最新のプログラミング⾔語の技術

⽤⾔語は汎⽤プログラミング⾔語（ホスト⾔語とよを適⽤することで、⾼い実⾏時性能をもつ埋め込み（様式 20）成果報告書
型ドメイン専⽤⾔語の開発⼿法を明らかにすることローカルディスクのように⽤いてしまい、著しく効を狙っている。
昨年度に引き続き、ホスト⾔語に Java率が悪い。これを避けるためには各ノードのメモリ⾔語を⽤いたドメイン専⽤⾔語を開発するためのプを⽤いて仮想ディスクを実現すればよいが、各ノーラ ッ ト フォ ー ム Bytespresso の開 発 を中 ⼼ に、ドの資源をどのように仮想ディスクに振り向ければTSUBAME を⽤いて研究をおこなった。

良いかの研究をおこなった。研究のテストベッドに、概要各ノードに SSD をローカルディスクとして備える

Bytespresso を⽤いた簡単なステンシル計算向け

TSUBAME を利⽤することで、各ノードのローカルドメイン専⽤⾔語の性能測定については昨年度に実な物理ディスクを⽤いる Hadoop の元の実⾏⽅法を施し、良好な結果を得た。本年度はステンシル計算含め、様々な資源管理⽅式を⽐較実験した。に限らずより⼀般的なドメイン専⽤⾔語を作成した結果および考察場 合 の 性 能 を 実 験 す る た め 、 NAS Parallel

Bytespresso で実装したドメイン専⽤⾔語で書い

Benchmark の中から CG と LU を選び、これを記た NAS CG と LU の性能を TSUBAME 3.0 で述するためのドメイン専⽤⾔語を Bytespresso を⽤測定した。コンパイラとしては GCC 4.8.5 を⽤いて開発し、実際にベンチマークと等価なプログラい、OpenMPI をライブラリとして⽤いた。各ノムを作成し、この性能測定を実施した。特に CG のードで 8 MPI プロセスを実⾏する設定の下、ノためには⾏列およびベクトル演算を MPI 環境で実ード数を 4, 8, 16, 32, 64 と増やして実験したと⾏するためのドメイン専⽤⾔語を新たに開発した。

ころ、CG では元の Fortran プログラムとほぼ同このため、このドメイン専⽤⾔語を⽤いて書き直し等の性能を得た。クラスは C である。⼀⽅、LUた CG プログラムは、ベクトルや⾏列オブジェクトの場合は 10%から 20%の性能低下が⾒られた。

を⽤いた抽象的な記述になっており、元の Fortran

LU についてはクラス C と D で実験をおこなった。

によるプログラムに⽐べて注釈⾏を含んだ状態でこれらの結果の詳細は今後出版予定である。

30%ほど⾏数が減少している。
本研究課題は JST CREST/独 DFG による⽇独Hadoop の実装⽅式に関する実験は TSUBAME
2.5 上で実施し、結果は Thanh-Chung Dao and共同研究 SPPEXA の ExaStencil プロジェクトの中Shigeru

Chiba,SEMem:Deploymentofで実施している。このプロジェクトでは、内部 DSL

MPI-Based In-Memory Storage for Hadoop on

だけでなく外部 DSL の研究開発もおこなっており、Supercomputers, Euro-Par 2017, Springer, pp.

ステンシル計算のための外部 DSL を Scala ⾔語で開442-454, 2017 にて公表した。

発している。ExaSlang と呼ばれるこの外部 DSL のGPU 搭載スーパーコンピュータ上での実⾏時性能を TSUBAME を⽤いて評価した。

まとめ、今後の課題
本研究課題では、我々が研究開発した Bytespresso、加えて、Java ⾔語で実装された分散処理フレーム

ExaSlang、Hadoop のスーパコンピュータ上での実ワークである Hadoop をスーパーコンピュータ上で⾏⽅式の実効性を確かめるため、TSUBAME を⽤い効率よく動かすための研究を TSUBAME 上でおこた性能測定をおこなった。おおむね望ましい性能をなった。通常 Hadoop のようなシステムは各計算ノ観察することができた。なお Bytespresso を⽤いてードにローカルディスクを備えた PC クラスタシス

開発したドメイン専⽤⾔語で書き直した NAS LU ベ

テムで動かすが、現在運⽤中の典型的な⼤規模スーンチマークの実験では、元の Fortran 版の LU ベン

パーコンピュータでは計算ノードにローカルディスチマークのプログラムが TSUBAME 上で動作せず、クを備えていないことが多い。このため、
Hadoop をsegmentation fault で終了するという現象を観察しそのまま典型的なスーパーコンピュータ上で動かすた。これは実験当時 TSUBAME 3.0 が稼働開始直後と、ネットワーク上のファイルサーバのディスクをで⼗分に安定していなかったためと思われる。