並列プログラミング言語XcalableMP規格部会活動報告

XcalableMP 2.0に向けて
村井 均
理研 AICS

2015/12/17

第15回PCクラスタシンポジウム

1XcalableMP• 分散メモリ環境を対象とした指示文ベースの並列言語• 次世代並列プログラミング言語検討委員会→ 当部会において仕様を検討、提案。
• 2つの並列プログラミングモデルをサポート– グローバルビューモデルによる定型的な並列化– ローカルビューモデルによる自由度の高い並列化
2015/12/17

第15回PCクラスタシンポジウム

2XcalableMPの現況• 2014/11に現行のVersion 1.2.1仕様を公開。
• 前回シンポジウム以降、5回の規格部会（12/16、3/5、5/14、7/29、10/21）を開催。
– 次回予定: 12/21• Version 1の系統は「収束」した。
– エラッタを除き、検討を終了。

• 次期仕様「XMP2.0」の検討を開始。
– 2016/11公開予定。
2015/12/17

第15回PCクラスタシンポジウム

3XcalableMP 2.0• メニーコア対応（タスクレット機能）• C++のサポート• その他– ループ並列化の強化– シャドウ領域（ステンシル）の活用– etc.

2015/12/17

第15回PCクラスタシンポジウム

4

タスクレット：背景• コア数の増加• 互いに依存関係を持つ多数のタスクの非同期的実行（データフロー）により、高並列度を活用。
– バリア同期の除去– 通信と計算のオーバラップ– Intel OPA等によるコア間通信のサポート• cf. OpenMP task構文, OmpSS,
PLASMA/QUARK, StarPU, etc.
From PLASMA/QUARK slides by ICL, U. Teneessee

2015/12/17

第15回PCクラスタシンポジウム

5

タスクレット：要件• 互いに依存関係を持つ「タスク」を動的に生成する。
• 依存関係が満たされたタスクから実行される（一対一の同期）。
• 依存関係はノードをまたぐことができる。
• 異なるノード上のタスク間で通信ができる。
• 異なるノード上へのタスクの生成、タスクのマイグ
レーションやスティーリングは、当面は考えない。

2015/12/17

第15回PCクラスタシンポジウム

6

タスクレットの例
node 1

A[0][0]node 2

node 3

A[0][0]A[0][3]

A[0][0]A[0][2]

A[0][0]A[0][1]

A[0][1]A[1][1]

node 4

A[0][2]
A[0][1]A[1][2]

A[0][2]A[2][2]

A[0][3]
A[0][1]A[1][3]

A[0][3]
A[0][2]A[2][3]

A[0][3]A[3][3]

A[1][1]A[1][1]A[1][3]

A[1][1]A[1][2]

black : inout
white : in: depend: commA[1][2]A[2][2]

trsm

gemm

A[1][3]A[3][3]A[2][2]

potrfsyrk

A[1][3]
A[1][2]A[2][3]

A[2][2]A[2][3]Cholesky Decomposition
distributed on 4 nodes

A[2][3]A[3][3]A[3][3]

2015/12/17

第15回PCクラスタシンポジウム

7

タスクレット：検討事項• tasklet構文の文法、意味論– 通信– 依存関係• 実行モデルの再定義– 従来の「ノード」から、「スレッド」を実行主体に変更。
– 既存機能（PGAS）との整合性

2015/12/17

第15回PCクラスタシンポジウム

8tasklet構文の案• グローバルビューに基づく案– out節に、対象データと送信先を指定。
– in節に、ローカルバッファと受信元を指定。
Node1
int A[100], B[25];#pragma xmp nodes P()#pragma xmp template T(0:99)#pragma xmp distribute T(block) onto P#pragma xmp align A[i] with T(i)/…/#pragma xmp tasklet out(A[0:25], T(75:99))
taskA();#pragma xmp tasklet in(B, T(0:24)) out(A[75:25])
taskB();#pragma xmp taskletwait

2015/12/17

Node2

Node3

Node4

taskA
A[0:25] -> B[0:25]

taskB
A[0:25]

第15回PCクラスタシンポジウム

A[25:25]

A[50:25]

A[75:25]9

Omni XcalableMP

.....
.....

XMPソース

フロントエンド• 理研AICSと筑波大で開発中のXMP処理系– XMP/C– XMP/Fortran

中間表現(XcodeML)

トランスレータ

.....
.....

中間表現
(XcodeML)

Omni XcalableMP• オープンソース• トランスレータ + ランタイム(MPIベース)• OpenACC、XcalableACC対応
2015/12/17

.....
.....

第15回PCクラスタシンポジウム

バックエンド(デコンパイラ)
XMPランタイム
.....
.....

C/Fortran
ソース

MPIライブラリ

ネイティブ
コンパイラ

実行形式

10

現況
• ver. 0.9.2を公開中– XMPの主要な機能を実装済み– 主な残項目: gmove in/out、image• 対応プラットフォーム– Linuxクラスタ、Crayマシン、京コンピュータ、FX10、NEC SX、地球シミュレータ、BlueGene、日立SR• 今後の予定– ver. 1.0 （4月？）
2015/12/17

第15回PCクラスタシンポジウム

11

LENS2015 International Workshop• 10/29-30、秋葉原コンベンションホール
• JST/CREST3課題とXMP規格部会の共催• 講演者23（うち海外研究者5）、参加総数68• テーマ: ポストペタスケール時代の並列記述言語・並列通信システム・システム
ソフトウェア• 4つのセッションを通じて、密接に関連する各分野に関する有意義な議論が行われた。

2015/12/17

第15回PCクラスタシンポジウム

12XcalableMP講習会• 前回シンポジウム以降に、3回を開催済み、さらに1回を予定。
– 2014/12/08 FOCUS（公益財団法人 計算科学振興財団）– 2015/10/23 大阪大学 サイバーメディアセンター– 2015/12/09 筑波大学 計算科学研究センター– 2016/01/08 FOCUS（公益財団法人 計算科学振興財団）• 講義資料: www.xcalablemp.org/ja/lecture.html• 講習会の依頼、承ります！

2015/12/17

第15回PCクラスタシンポジウム

13

まとめ
• XMP2.0仕様を検討中– メニーコア対応（タスクレット機能）– C++のサポート• Omni XMPコンパイラver. 1.0のリリース間近• LENS2015 International Workshopを開催• XcalableMP講習会を継続的に開催中
www.xcalablemp.org
2015/12/17

omni-compiler.org

第15回PCクラスタシンポジウム

14