プログラミング言語XcalableMP規格部会の活動報告と実装状況・課題

佐藤三久
筑波大学・理研AICS

並列プログラミング言語XcalableMP(XMP) 規格部会


並列プログラミング言語XcalableMPとは

XcalableMP言語仕様検討委員会（大学、研究機関、メーカの有志がメンバ）で、仕様を検討した並列プログラミング言語
分散メモリの並列システム（PCクラスタ）を対象、PGASモデル、HPFの経験を反映
ベース言語C/Fortranを指示文で拡張（既存プログラムの利用が容易）
現在、仕様v1.0を決定、公開中 http://www.xcalablemp.org/「e-サイエンス実現のためのシステム統合・連携ソフトウェアの研究開発」（代表：東大 石川裕、H23年度終了）において、筑波大を中心にレファレンス実装

部会の活動、計画概要






部会長：佐藤三久、副部会長：岩下英俊 （富士通（株））、林 康晴（日本電気（株））
趣旨：並列プログラミング言語XcalableMP(XMP)の仕様について、検討し、決定する。本部会では、アプリ
ケーション開発者がさまざまな計算環境で並列プログラム言語を容易に利用することができるように、プログラミング言語に要求される機能を検討するとともに，計算機メーカ及びユーザ・コミュニティが合意できる標準的な言語仕様を定めることを目的とする。これにより、並列プログラミングの生産性を向上させるとともに、コミュニティからの支援により、さまざまなプラットフォームにおいて利用できる言語の普及を目指し活動を行う。

１）並列プログラミング言語XcalableMPの言語仕様（v1.0以降）の検討・決定
２）並列プログラミング言語XcalableMPの普及活動（講習会、ワークショップ、コンテストの開催等）
３）PCクラスタ向け並列プログラミング言語の動向の調査

XMP規格部会2

slide at SC12 PGAS BoF

XcalableMP(XMP) http://www.xcalablemp.org
What’s XcalableMP (XMP for short)?

A PGAS programming model and language for
distributed memory , proposed by XMP Spec WG
 XMP Spec WG is a special interest group to designand draft the specification of XcalableMP language.
It is now organized under PC Cluster Consortium,Japan. Mainly active in Japan, but open foreverybody.
Project status (as of Nov. 2013)

XMP Spec Version 1.2 is available at XMP site.
new features: mixed OpenMP and OpenACC ,libraries for collective communications.
 Reference implementation by U. Tsukuba and Riken
AICS: Version 0.7 (C and Fortran90) isavailable for PC clusters, Cray XT and K computer.
Source-to- Source compiler to code with theruntime on top of MPI and GasNet.
Possiblity of Performance tuning

XcalableMPchapel
HPF
AutomaticparallelizationMPIPGASXMP provides a globalview for data parallel
program in PGAS model
Programming cost

Language Features

Directive-based language extensions for Fortranand C for PGAS model Global view programming with global-view
distributed data structures for data parallelism
 SPMD execution model as MPI
 pragmas for data distribution of global array.
 Work mapping constructs to map works anditeration with affinity to data explicitly.
 Rich communication and sync directives such as“gmove” and “shadow”.
 Many concepts are inherited from HPF
 Co-array feature of CAF is adopted as a part of thelanguage spec for local view programming (alsodefined in C).


int array[YMAX][XMAX];#pragma xmp nodes p(4)#pragma xmp template t(YMAX)#pragma xmp distribute t(block) on p
#pragma xmp align array[i][*] to t(i)main(){
int i, j, res;
res = 0;Code example

data distribution

add to the serial code : incremental parallelization#pragma xmp loop on t(i) reduction(+:res)for(i = 0; i < 10; i++)for(j = 0; j < 10; j++){work sharing and data synchronizationarray[i][j] = func(i, j);
res += array[i][j];}}3これまでの活動

2011年11月、V1.0仕様を公開


文科省e-Scienceプロジェクトの一環として2011年6月、XMP規格部会発足
WG開催は、2011年12月第１回 ～ 2012年12月第9回
PCCC会員以外の参加も自由。ただし投票権は正会員のみ




開催通知案内をご希望の方は、事務局（pccc-sec@pccluster.org）まで

V1.0仕様の修正と拡張を議論
影舞による進捗管理

2012年11月、V1.1仕様を公開


V1.0からの主な拡張




4

Coarray機能対応
XMPによる並列化との混在の意味付け
プライマリノード配列 物理ノードのトポロジへの対応
マッピング問合せ関数
数値計算libやMPIとのインタフェース
並列I/O仕様の詰め アトミック性などについての議論

Coarray機能対応： V1.1仕様では

Coarray機能は、XMPに必要

XMP V1.1言語仕様

Fortranでは今後標準。無視できない。
ローカルビューであり、XMPの指示行拡張とは相補的に使えると期待

グローバルビュー ローカルビュー||||
指示行拡張
CAF仕様

議論の末、解決した課題Fortran2008仕様との互換性保障

Coarrayの「イメージ」とXMPの「ノード」との対応付けを定義

Coarrayで書かれた関数・サブルーチンは、そのままXMPから呼出し可能

XMPプログラム中に、coarray記法が混在可能

XMP/Cでも、同じ機能をサポート

XMP/Cでのcoarray記述例
float a[100]:[*], b[100];
me = xmp_node_num();if (me>0) b[0] = a[99]:[me-1];
xmp_sync_all(&stat);5

並列ライブラリインタフェース & XMP IO
並列ライブラリインタフェース

すべてをXMPで書くことは現実的ではない。他のプログラミングモデルとのインタフェースが重要MPIをXMPから呼び出すインタフェース

(MPIからXMPを呼び出すインタフェース）

XMPから、MPIで記述された並列ライブラリを呼び出す方法

XMP IO

分散配列の入出力



MPI の wrapper

XMP project6今年度の活動（1/2）


2013年4月以降


規格部会開催（第12回：4/23，第13回：6/7，第14回：9/30）
配列処理関数，不規則問題などについて議論
 11月に仕様書v1.2を公開予定


第3回XMP Challengeの開催（2013年2月 - 4月）



XMP利用講習会の開催（7/18，9/13，12/4）
計算科学振興財団（FOCUS）の講習会



http://www.j-focus.jp/event_seminar/entry-394.html

7月と9月は初級編．ハンズオンで講義を行う
 12月は中級編の予定

XMPワークショップ@秋葉原UDX（11/1）


40人前後の方の参加、盛況！

7仕様書 v 1.2 での追加内容


マルチコア対応

現状
ほとんどのクラスタがいまや、マルチコアノード（SMPノード）
 小規模では格コアにMPIを走らせるflat MPIでいいが、大規模ではMPI数を減らすためにOpenMPとのハイブリッドになっている。







ハイブリッドにすると（時には）性能向上も。メモリ節約も。

しかし、ハイブリッドはプログラミングのコストが高い。

ＸＭＰとOpenMPをhybridに記述、その規則を定義

collective communicationのライブラリを定義
sin,cosなどの算術関数の要素並列
 transposeなどの形状変換関数


並列言語検討会

8リファレンス実装についてOmni XMP Compiler v0.6.1をリリース（2013年3月）

Coarray機能のストライド通信の対応
京コンピュータにおけるCoarray機能のサポート
http://www.hpcs.cs.tsukuba.ac.jp/omni-compiler/xcalablemp/

2013年11月にOmni XMP Compiler v0.7をリリース


OpenMP指示文やOpenACC指示文との混在利用
京コンピュータにおけるハードウェアサポートを利用した実装
XMP/Fortranの片側通信機能のサポートは、未

9

今年度の活動（2/2）


SC13@Denverでブース展示（11/18 - 21）
筑波大・理研AICS チームでHPC Challenge Class 2に応募
⇒ 日本初のawardを獲得！


HPCシステムの性能を評価するためのベンチマーク集


HPL，FFT，RandomAccess，Stream

Class 1は性能のみを評価
 Class 2は生産性（実装のエレガントさ）と性能の2つを統合的に評価


XMPでHPC Challenge
ベンチマークを実装し，京コンピュータ上で計測
 SC13のBoFで発表
 SC13後にXMPのHPC Challenge
ベンチマークを公開予定

10

現在の（研究）活動

フランスでのチュートリアル

フランスとのYMLとの統合プロジェクト（日仏戦略FP3Cプロジェクト）

NEC SXやIBM BG/Qなどへの移植 （AICSの活動の一部）


そのうちに、調達の「仕様書」にいれてもらえるように

XMPを使った並列プログラムのチュートリアルなどの人材育成活動 (AICS)
 GPUのサポート、XMP-devはあるが、OpenACCとの混在で再検
討（朴CREST@筑波大、AICS)
 研究





Xeon Phiでの性能評価（筑波大）
XMP向けのshared memoryモデル、one-sided通信（筑波大）
有限要素法などの不規則メッシュのための拡張（AICS）
ＸＭＰ上の動的なタスク生成（AICS)

XMP規格部会

11