理化学研究所 計算科学研究センター

メニュー
メニュー
OVERVIEW 計算科学研究機構とは

プログラミング環境研究チーム

エクサスケール計算のための高性能高生産性プログラミング環境の研究開発

当研究チームでは、大規模な並列システムの能力を引き出し、かつ、難しいといわれる並列プログラミングの生産性を向上させるためのプログラミング言語およびプログラミングモデルの研究開発を行ってきた。その一つが、PGAS(Partitioned Global Address Space)モデルをベースとした新しいプログラミング言語「XcalableMP」の開発である。我々は、Omni XMPコンパイラというレファレンス実装を行い、「京」に向けた最適化やPGASモデルの性能評価、さらに「京」以外のGPUなどの演算加速機構をもつ並列システムへの適用を行ってきた。現在、「富岳」においても、利用できるように開発を進めており、ノード内の多数のコアが効率的に利用できるように拡張機能について研究開発を進めている。

これからのエクサスケール計算のための高性能高生産性プログラミング環境に向けて、XcalableMPの次のバージョンであるXcalableMP 2.0の研究開発を進めている。大規模なメニーコアプロセッサ並列システムを活用するためのプログラミングが重要な課題となるため、マルチタスク機能とPGASの片方向通信を統合したモデルを提案している。これにより、時間のかかる大域的な同期を排除し、RDMAによる軽量の通信機構と計算のオーバーラップが可能となり、効率的な実行が可能である。これについては、「富岳」での演算効率の向上に寄与できると期待している。また、これからの演算加速機構として、書き換え可能ハードウエアデバイスであるFPGA向けのプログラミングの研究も進めている。

おもな研究成果

演算加速機構を持つ並列システムのためのプログラミング言語XcalableACCを開発
XGPUなどの演算加速機構を各ノードに持つ並列システムが多く使われるようになってきているが、プログラミングの複雑さが問題になっている。XcalableACCは、これまで開発してきた並列プログラミング言語XcalableMPにGPUのためのプログラミング仕様であるOpenACCを統合したプログラミング言語である。XcalableMPの機能を用いてノード間のデータ分散や計算の割り当てを記述し、OpenACCを用いてGPUへの処理のオフロードを記述する。OpenACCによるオフロードはXcalableMPによる分散されたデータに対応するだけでなく、GPU間の直接通信を記述できるように拡張されている。以下に示すように、ラプラス方程式の逐次プログラムに対して、XcalableMPの記述(赤)、OpenACCの記述(青)を加えることでGPUクラスタに対応ができる。

プログラミング環境研究チーム 図1

QCDのアプリケーションを用いたケーススタディでは、842行のCコードについて、XcalableACCでは160行あまりの追加で並列化ができるのに対し、従来のMPIとCUDAを使った場合には832行の追加修正が必要となり、高い生産性を提供できることを示している。

プログラミング環境研究チーム 図2

また、性能については、MPIとCUDAを使ったケースに比べて、95%から99%の性能となり、ほぼと同等の性能が得られることがわかっている。

関連サイト

チームリーダー佐藤三久

チームリーダー
佐藤 三久(さとう みつひさ)

略歴: 詳細を見る
アニュアルレポート
FY2017
(PDF 899KB)
FY2016
(PDF 673KB)
FY2015
(PDF 690KB)
FY2014
(PDF 1.05MB)
FY2013
(PDF 986KB)
FY2012
(PDF 766KB)
FY2011
(PDF 448KB)