11th Symposium

学際大規模情報基盤共同利用・共同研究拠点公募型共同研究 平成31年度採択課題

jh190039-ISH

緑川博子 （成蹊大学 理工学部）

高性能，高生産性を実現する大規模メモリ・並列処理
システムソフトウエアの研究
概要
本研究では, 高性能計算において広く利用される大規模マルチコア計算クラスタにおいて，高性能かつ並列プログラム開発の生産性を高めるためのシステムソフトウエアの構築を目的とする．具体的には，以下の研究項目を含む．
1. 複数ノードに分散したメモリを大域メモリとして一元化し，リモート／ローカルメモリにおけるメモリアクセス局所性を高め，高性能かつ大規模メモリ並列処理システムをコンピュータクラスタ上に実現する．(mSMSの構築と性能評価）
2. 既存の逐次プログラムから容易にクラスタシステム向けの並列プログラムに変換できる生産性の高い並列プログラミング開発環境，APIを構築する．実応用として音響解析FDTD (Finite Difference Time Domain) 計算を行い，処理性能とプログラム開発環境の評価を行う．
3. クラスタでの典型的処理（各ノードに処理データを静的に等分した同期型並列処理など）だけでなく，グラフ，ツリーなどの不規則構造データ処理，非同期実行，データフロー型実行，トランザクショナルメモリモデルにみられる投機的並列実行など，クラスタシステムにおける大域メモリモデルを基本とした新たな実行方式，実行モデルを，性能および生産性という２つの観点から検討し，実行方式とAPIの検討を行う． （クラスタ向けTransactional memory API）
4. 現在の並列プログラムにおいて，性能と生産性がエンドユーザの最大の関心事であるが，今後，省電力性が重要になることから，大規模メモリ・並列処理システムの低消費電力化を行う．（mSMSの電力オーバヘッドを解析し，省電力化方式を検討）

1. 大域アドレス空間をクラスタ上に実現するmSMSシステム
3次元データ7点ステンシル計算
MPIプログラムと同等以上の性能を獲得

Tsubame3.0 （東工大）
128GBデータ/node, 2-180ノード
最大データサイズ22.5TB/180ノード
128時間ステップ 実行時間

図1 クラスタ上で大域アドレス空間を実現するソフトウエア分散メモリmSMS

大域データshared宣言により，通常Cプログラムと同等な記述で．マルチコア並列（OpenMP)とノード並列（ｍSMS)を実現

図2 7点ステンシル計算におけるMPIとmSMSにおける実行時間の比較

図3 SMSを利用したクラスタ向け７点ステンシル計算プログラム（MpC）

2b. 実応用（音響FDTD法）における高効率実装と性能評価

2a. グローバルビューモデルに基づくmSMS並列プログラミング環境と３つのAPI 
 

SMint API 
 

MpCShared 

mSMSC

実行プログラム

mSMSにおいて３つのAPI が利用可能 （SMSライブラリ関数利用，MpC，SMint）







SMS
ライブラリ

逐次コード

ディレクティブベースAPI SMint
ループ並列処理などの典型的記述向け
インクリメンタルプログラミングにより，逐次コードからの容易な拡張が可能＊GPU向けOpenACC＊マルチコア向けOpenMP との併用可能

Op en ACCOp en M P

マルチコア並列

GPU 並列マルチノード＋GPU 並列

マルチコア＋GPU 並列

マルチコア＋ノード間並列

マルチノード＋マルチコア＋GPU 並列
マルチコア並列

逐次プログラム# in clu d e < sm s.h >// SM Sライブラリ関数利用によるC プログラム# d efin e N …
in t m ain (in t arg c, ch ar *arg v[] ){ in t size, st, ed ;// 各ノードの担当領域
d ou b le *vec1, *vec2; // 1次元配列 vec1[N ], vec2[N ] のためのポインタ
d ou b le (*array) [N ]; // 2次元配列 array[N ][N ] のためのポインタ
in t d im [3]= { N , N ,-1} , d iv[3]= { 1, 1,-1} ; // d im : 配列サイズ, d iv:分散マップ分割数

int main(){
int i = 0 , M IN = 0 , M AX= N;
for(int i = M IN , i < M AX ; i+ + )x[i]= a[i]+ b[i]；return 0;}sm s_ startu p (& arg c, & arg v);

インクリメント
デクリメントデクリメントvec1 = (d ou b le*)sm s_ alloc(si ze of(d ou b l e), N , 0); // vec1[N ] n od e0に割り付け
vec2 = (d ou b le*)sm s_ alloc(si ze of(d ou b l e), N , 1); // vec2[N ] n od e1に割り付け
d iv[0]= sm s_ n p rocs;// arrayをバンド分割，全ノードに分散マッピング
array= (d ou b le(*)[N ]) sm s_ m ap alloc(d im , d iv, sizeof(d ou b le), 0, sm s_ n p rocs );int main()
インクリメント{
int i = 0 , M IN = 0 , M AX= N;#pragm a SM int parallel for
for(int i = M IN , i < M AX ; i+ + )x[i]= a[i]+ b[i]；return 0;}

図6 SMintによるプログラム

図5 SMSライブラリ関数によるプログラム

担当者： 阪口裕梧，緑川博子 (成蹊大学理工学研究科)

int main(){
int i = 0 , M IN = 0 , M AX= N;#pragm a SM int parallel for#pragma omp parallel for
for(int i = M IN , i < M AX ; i+ + )x[i]= a[i]+ b[i]；return 0;}

図 7 簡易バスレフポートスピーカーモデルの音響解析例
担当者： 田畑諒也 (九州工業大学大学院情報工学府)
緑川博子 (成蹊大学理工学部)，高橋公也 (九州工業大学大学院情報工学研究院)

４. mSMSの電力評価と省電力方式の検討

3. クラスタ向けTransactional Memory APIの検討
2a.で検討するAPIに加え，より直感的な記述が可能なトランザクショナルメモリ（TM）の記法をmSMS向けに適用することを検討する．既存のSoftware TM（STM）やDistributed TM（DTM）の実装を参考に，変数ベースやオブジェクトベースでのアクセス競合処理や，スレッドスケジューリングの，mSMS向け実装についても検討する．また，ハードウェアTM（HTM）であるIntelTSXをノード内並列処理に活用することで，マルチコア・マルチノードの並列処理をTMの枠組みで統一的・透過的にプログラミング可能とすることを目指す．

programmers’ view

int main(){int i = 0 , M IN = 0 , M AX= N;#pragma omp parallel for
for(int i = M IN , i < M AX ; i+ + )x[i]= a[i]+ b[i]；return 0;}

マルチノード+ マルチコア並列

マルチノード並列

size= N /sm s_ n p rocs;
st= size * sm s_ ran k ; ed = size * (sm s_ ran k + 1); //各ノード担当領域# p rag m a om p p arallel for// 各ノードでは，マルチスレッド実行
for( i= st; i< ed ; i+ + ) {// 全ノードで for(i= 0; i< N ; i+ + ) を並列実行
for(k = 0; k < N ; k + + ) vec2[i]= array[i][k ] * vec1[k ];// 行列ベクトル積}
sm s_ b arrier();sm s_ sh u td ow n ();BEGIN_TX();
calc(tid-1, tid, tid+1)
obj.modify(tid);
COMMIT_TX();

マルチノード並列

Pressure [Pa]

図4 mSMSにおける３つのAPI}

SM in tmSMSを用いた3次元FDTD(2,4)計算のマルチノード並列化と性能評価実験を行う．時空間ブロッキング等の導入により音響ソルバーに適した高効率実装手法の開発を検討する．また、楽器や音響機器等の実問題への応用(図2)を検討し，境界条件等も含めた性能調査を行う．

TSUBAME3.0上で大規模並列計算アプリケーションを実行した際のノード電力およびノード間通信電力の評価・分析を行い，アプリケーションの実行性能を保ちつつシステムの消費電力を削減するmSMSランタイムについて検討する．TSUBAME3.0の25ノード（計100台のGPU）上でステンシル計算プログラムを実行した際のGPU電力を計測し，GPU間に19.3Wの消費電力差が存在することをこれまでに確認した．

Hierarchical TM system
mSMS + Software Transactional Memory

Lock-free Global Memory SpaceIntel TSX(HTM)Intel TSX(HTM)Intel TSX(HTM)Intel TSX(HTM)

nodenodenodenode

図 8 Transactional Memory API の実装イメージ
担当者： 飯田凌大，二間瀬悠希，小林龍之介，川口優樹，
津邑公暁（名古屋工業大学大学院情報工学専攻）

図 9 TSUBAME3.0上でステンシル計算プログラムを実行（シングルGPU実行）した際の各GPUの消費電力担当者： 大八木哲哉，三輪忍 (電気通信大学大学院情報理工学研究科)
緑川博子 (成蹊大学理工学部)

学際大規模情報基盤共同利用・共同研究拠点 第11回シンポジウム
2019年 7月 11日，12日

THE GRAND HALL （品川）