• 検索結果がありません。

PGAS言語XcalableMPのハイブリッドビューによる核融合シミュレーションコードの実装と評価

N/A
N/A
Protected

Academic year: 2021

シェア "PGAS言語XcalableMPのハイブリッドビューによる核融合シミュレーションコードの実装と評価"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)HPCS2015 2015/5/19. 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. PGAS 言語 XcalableMP のハイブリッドビューによる 核融合シミュレーションコードの実装と評価 津金 佳祐1,a). 朴 泰祐1,2. 村井 均3. 佐藤 三久1,2. William Tang4,5. Bei Wang5. 概要:分散メモリ環境における新しいプログラミングモデルとして Partitioned Global Address Space (PGAS)モデルが登場しており,XcalableMP(XMP)はその一種である.XMP は,指示文を用いる既 存言語(C,Fortran)の拡張であり,プログラミングモデルとして,グローバルビュー・ローカルビュー モデルを提供している.Particle-in-Cell(PIC)法のような,場の演算を行う計算格子と粒子の移動演算で 構成されているアルゴリズムの XMP 実装に対しては,計算格子のように分割された領域が変更されない 場合にはグローバルビューモデルによる領域分割が適しており,粒子の移動演算のように分割された領域 内の演算量が動的に変化する場合にはローカルビューモデルが適している.そこで本稿では,グローバル ビューモデルとローカルビューモデルを組み合わせたハイブリッドビューモデルを提案し,PIC 法による アプリケーションである GTC-P に対して適用を行う.オリジナルの実装である MPI 版と比較をした結 果,最大で約 20%の性能劣化となったが,PIC 法のような複雑なアプリケーションに対しても XMP 実装 が可能であることを示した.また,生産性の観点からは,グローバルビューモデルによるデータ分散によ り基本的に逐次版に指示文の挿入のみで実装でき,さらに袖領域通信を指示文一行で記述することができ るため,より簡易な実装であると言える.また,ローカルビューモデルの coarray 記法は,配列代入文形 式のために直感的で見通しが良い.従って,ハイブリッドビューモデルによる実装の生産性の高さを示す ことができた. キーワード:GTC-P,Partitioned Global Address Space,PIC コード,核融合シミュレーション,XcalableMP. Implementation and Evaluation of Nuclear Fusion Simulation Code in PGAS Language XcalableMP Hybrid-view Keisuke Tsugane1,a). Taisuke Boku1,2. Hitoshi Murai3 Bei Wang5. Mitsuhisa Sato1,2. William Tang4,5. Abstract: Partitioned Global Address Space (PGAS) parallel programming model has emerged as a new parallel programming model on distributed memory system. XcalableMP (XMP) is a PGAS language that extends base languages such as C and Fortran with directives and provides global-view and local-view models. Particle-in-Cell (PIC) method uses a space grid to calculate the field and the particle trajectory calculation. If the size of the distributed domain is not changed, the data distribution employed in the global-view programming model is suitable. Furthermore, if the calculation of the domain during each time step of the simulation changes dynamically, such as particle motion, coarray communication is required using local-view programming. In this study, we propose a hybrid-view programming approach, which combines global-view and local-view models in XMP and port GTC-P, which is a three dimensional PIC code, using it. As a result, XMP implementation is degraded by up to about 25% compared with the original MPI version, and we showed that XMP can be used to implement for complicated application like PIC method. The data distribution is described in the global-view model, which is almost the same as that in the serial code, and its loop distribution is annotated by the directives. For the data distribution by global-view, the communication with the overlapped sleeve area in the distributed calculation domain can be described in only one line. In addition, coarray notation is simple and intuitive compared with MPI because it is expressed in the form of an array assignment statement. Due to the reasons described above, we obtained high productivity using hybrid-view programming model. Keywords: GTC-P,Partitioned Global Address Space,PIC code,Nuclear Fusion Simulation,XcalableMP ⓒ 2015 Information Processing Society of Japan. 54.

(2) HPCS2015 2015/5/19. 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. 1. はじめに. $) &'#,#&$%( &'#,#&)#&")  . . 分散メモリ環境上での並列プログラミングモデルとし て,Message Passing Interface(MPI)が広く普及してい.  .   . る.しかし,MPI はプロセス毎のデータの分散配置を考. . 慮するといった,並列化を行う上での様々な処理手順を明. &'#,#& ()' *)"%!%$)%. 示的に示す必要があるために,プログラミングの学習コス. . トが高くソースコードが煩雑になりやすいといった生産性.    

(3)       .   

(4)        . の低下が大きな問題となっている.そのような問題から,. &'#,#&" $ + ) . 分散メモリ環境における新しいプログラミングモデルとし. . て,Partitioned Global Address Space(PGAS)[1] モデル が登場している.PGAS モデルは,分散メモリ環境におい.    

(5)       .   

(6)        . て各プロセスに分割されたデータを単一のアドレス空間と してユーザに提供することにより,プロセス間通信や並列.   

(7)        . 処理を容易に記述可能とするモデルである.. &'#,#&"%%& %$  %'    - *$ .. XcalableMP(XMP)[2][3][4] は,PGAS モデルによる並 列言語の一種であり,分散メモリ環境上でのプログラミン グをより容易にするために開発されている.XMP は指示. 図 1 グローバルビューモデルによるプログラミングの例.. 文形式を採用した既存言語(C,Fortran 言語)の拡張であ り,グローバルビュー・ローカルビューの二種類のプログ.      . ラミングモデルを提供している.グローバルビューモデル.   . は,指示文を用いたデータ分割,並列実行,通信・同期を提 供しており,既存の逐次実装に対して指示文を追加するの. . . . . .   

(8)  . みでの並列実装を行うことが可能である.ローカルビュー.   . モデルは,Co-array Fortran[5] をベースとした coarray 記. . 法を提供しており,各ノードが持つローカルデータに対し て配列代入文形式で通信を記述することができるプログラ. 図 2. shadow,reflect 指示文による一次元配列の袖領域通信例.. ミングモデルである.そのため,MPI で記述できるような 複雑な通信パターンを,より直感的に記述することが可能. を得られたが,coarray による通信の記述以外は複雑な演算. である.. 領域の分割やループ分割の記述が必要となるために,プロ. 核融合プラズマ中の乱流現象のシミュレーション行う代. グラム全体の生産性が高いとは言えない.一方で,場の計. 表的な手法である Particle-in-Cell(PIC)法は,場の計算を. 算は,演算領域が格子状であるためにブロック分割による. 行う計算格子と,空間を自由に動き回る格子によらない粒. 並列実装が適している.従って,グローバルビューモデル. 子軌道演算によって構成される.このような手法を XMP. による指示文を用いた演算領域の分割を行うことで,逐次. で実装する場合,粒子軌道演算のように分割された領域内. 実装に指示文を追加するのみでのループ分割や,分割され. の演算量が動的に変化する場合には,グローバルビューモ. た領域の近傍同士の通信を指示文一行で記述できる等の生. デルが提供する指示文では記述することはできず,MPI 実. 産性の高い実装が可能である.そこで,グローバルビュー. 装同様にデータ分割,ループ分割の記述を行い,通信の記. モデルとローカルビューモデルを組み合わせて用いること. 述のみをローカルビューモデルの coarray 記法を用いた実. で,上記のような手法に対しても XMP を用いて,より簡. 装方法が取られてきた.そのため,MPI 実装と同等の性能. 易に実装することが可能になると考えている.. 1. 2 3 4 5 a). 筑波大学大学院システム情報工学研究科 Graduate School of Systems and Information Engineering, University of Tsukuba 筑波大学計算科学研究センター Center for Computational Sciences, University of Tsukuba 独立行政法人理化学研究所 計算科学研究機構 Advanced Institute for Computational Science, RIKEN Prince Plasma Physics Laboratory, Princeton University Princeton Institute for Computational Science and Engineering, Princeton University [email protected]. ⓒ 2015 Information Processing Society of Japan. 本稿では,グローバルビューモデルとローカルビュー モデルを組み合わせたハイブリッドビューモデルを提案 し,PIC 法による実アプリケーションである核融合シミュ レーションコード GTC-P(Gyrokinetic Toroidal Code -. Princeton)[6] に対して適用を行う.また,ハイブリッド ビューモデルとローカルビューモデルによりそれぞれ実装 を行い,オリジナルの MPI 実装と比較をすることで,性 能・生産性の評価を行うことを目的とする. 55.

(9) HPCS2015 2015/5/19. 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. 2. XcalableMP. #

(10)  #$&'%  

(11)   

(12)

(13)  "!# #. XMP は,次世代並列プログラミング言語検討委員会及. 0 1 2 3. 0 1 2 3. び PC クラスタコンソーシアム並列プログラミング言語. XcalableMP 規格部会により,仕様検討及び策定されてい. a:. る分散メモリ型 SPMD(Single Program Multiple Data). b:. a: b:. を実行モデルとする並列言語である.リファレンス実装で. Node 1. ある Omni XcalableMP コンパイラ [7] は,筑波大学と理. 図 3. 化学研究所により開発が進められている.. Node 2. ローカルビューモデルによるプログラミングの例. 2.1 グローバルビューモデル グローバルビューモデルは,問題で扱うグローバルな配. . . . .  .  . 列を各ノードに分散する指示文を記述することで,並列実 行を行うプログラミングモデルである.そのため,逐次実 装に指示文を挿入するのみでの並列実装を行うことが可能 である.図 1 にグローバルビューモデルによるプログラミ ング例を示す.ノード毎にデータの分散を行うには,テン. . プレートと呼ばれる仮想的なインデックス空間を用いる. まず,node,template 指示文により実行ノード数(プロ セス数)とテンプレートサイズを指定する.次に,テンプ.  . レートに対して distribute 指示文により分割方法(ブロッ. 

(14) .  . ク,サイクリック,ブロック・サイクリック及び,任意の. . ブロックサイズによる分割)の指定を行い,align 指示文 で対象の配列と分割されたテンプレートを対応付けること で,各ノードへとデータの分散を行う.これらの動作は全 て指示文によるものであり,ユーザは各ノードへと分散さ れたデータの配置を意識することなく,分割したいループ. 図 4. 二次元ブロック分割による二次元 PIC シミュレーションの簡 易図.(A)は隣接格子点による場の計算を表し,(B)は粒子 の移動演算を表す.. に対して記述された loop 指示文により,並列実行を行う ことが可能となる.また,グローバルビューモデルによる 並列プログラムは,XMP 指示文を無視することで逐次実. うため,MPI のようにローカルデータの振る舞いを詳細. 装の C,Fortran 言語によるプログラムとして解釈するこ. に記述することが可能である.図 3 に coarray を用いた. とが可能である.. Put 通信の例を示す.ノード 2 が持つローカル配列であ. XMP は,典型的な通信パターンを表すための指示文を. る配列 b の添字 2 番目から 2 要素をノード 1 のローカル. 提供している.shadow・reflect 指示文は,ステンシル演算. 配列 a の添字 0 番目に対して通信,代入することを表す.. 等で用いられる袖領域通信を実行する指示文である.図 2. coarray 記法は,配列括弧内のコロン前の値が配列の添字. は,一次元配列をブロック分割した場合の袖領域通信の例. を表し,後の値が通信要素数を表す.配列の後に記述され. である.shadow 指示文により,各ノードに分割された配列. ているコロン後の括弧は,通信相手のノード番号となる.. の上端・下端に指定したサイズの袖領域を確保し,reflect. xmp sync memory は,2 ノード間での coarray 記法による. 指示文で確保された袖領域の値を更新するための通信を実. 通信の完了を保証する API である.Omni XMP コンパイ. 行することが可能である.. ラでは,C 言語の coarray の実装にインターコネクト毎に 最適化された片方向通信ライブラリである GASNet[8] を. 2.2 ローカルビューモデル ローカルビューモデルは,各ノードが持つローカルデー タに対して通信を行うプログラミングモデルである.XMP. 用いている.. 3. 核融合シミュレーションコード. では,Fortran 2008 から正式採用された Co-array Fortran. 核融合プラズマ中の乱流現象のシミュレーションを行う. をベースとした coarray 記法が実装されている.記述方法. 代表的な手法として,PIC 法とモンテカルロ法が挙げられ. として配列代入文形式をとっており,ノード番号,通信要. る.本稿では,PIC 法による実アプリケーションを対象と. 素数を指定することによる片方向通信(Put,Get)を行. することから PIC 法のみの説明を示す.. ⓒ 2015 Information Processing Society of Japan. 56.

(15) HPCS2015 2015/5/19. 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. 図 5 GTC-P における三次元トーラス空間の簡易図 [11].. 図 6. ポロイダル断面における格子点 [12].. 3.2 GTC-P 3.1 PIC 法. GTC(Gyrokinetic Toroidal Code)は,磁場閉じ込め. PIC 法によるシミュレーションは,場の計算を行う計算. 型核融合装置における核融合プラズマ中の微視的乱流現. 格子と,空間を自由に動き回る格子によらない粒子軌道計. 象の解析を目的として,米国 DoE SCiDAC,UC Irvine. 算によって構成される.以下は PIC 法のシミュレーショ. 等で開発された三次元ジャイロ運動論的 PIC コードであ. ン手順である.. る [9].本稿で対象とする GTC-P は,プリンストン大学に. ( 1 ) 各粒子が持つ電荷を近傍格子点に加算を行う.. より開発された国際熱核融合実験炉 ITER(International. ( 2 ) ポアソン方程式により,近傍格子点上の電荷密度から. Thermonuclear Experimental Reactor)[10] 規模に対応し. 格子点上の静電ポテンシャルを求め,それを元にし電. たアプリケーションである.GTC-P は,GTC の並列アル. 場を求める.. ( 3 ) 各粒子の近傍格子点から個々の粒子の現在位置での電 場を求め,1 ステップ粒子の位置を進める.. ゴリズム改良版であり,GTC では MPI による一次元の領 域分割とその領域内での粒子数の分割に加え,OpenMP に よるループレベルでのスレッド並列による三層レベルでの. PIC 法を並列実装する場合には,計算格子のサイズは演算. 並列化が行われているのに対して,GTC-P では二次元の領. ステップ毎に変化しないためにブロック分割が適している.. 域分割へと改良され,四層レベルでの並列化となっている.. また,粒子は分割された演算領域内を移動するため,別プ. また,GTC は Fortran 言語で開発されているが,GTC-P. ロセスが持つ領域へと粒子が移動した場合に通信が発生す. は C,Fortran 言語で開発されている.本稿では C 言語版. る.図 4 に二次元 PIC シミュレーションに対して,二次. を用いる.. 元ブロック分割を行った例を示す.図中の(A)は,隣接. 図 5 は,GTC-P の計算領域を表した三次元トーラス空. 格子点情報を用いた場の計算を表し, (B)は粒子の移動演. 間の簡略図であり,主軸 Z を回るトロイダル方向,磁気. 算を表す.並列実装を行った場合に通信が発生するステッ. 軸を回るポロイダル方向,磁気軸からの距離の方向を径方. プとして, (A)では隣接格子点が別プロセスが持つ領域に. 向と呼ぶ.また,トロイダル方向に分割したトーラスの断. ある場合に, (B)は粒子の移動先が別プロセスの持つ領域. 面をポロイダル断面と呼ぶ.GTC-P では,MPI を用いて. の場合が挙げられる.. トロイダル方向に Nt ,径方向に Nr と二次元の領域分割. 以上の事から,XMP を用いた実装を行うにあたり,計. を行い,さらにそれぞれ分割された領域が持つ格子上の. 算格子のように分割された領域のサイズが演算中に変更さ. 粒子数を Nrp と分割する.従って,総 MPI プロセス数は. れない場合には,グローバルビューモデルによる指示文を. N = Nt × Nr × Nrp となる.. 用いた領域分割を用いることで,大幅に簡易な実装とする. 図 6 に示すように,GTC-P ではポロイダル断面上の格. ことが可能である.また,粒子運動のように,粒子の移動. 子点数は各径方向位置ごとに異なる.そのため,トロイダ. に伴い演算ステップ毎に各プロセスが受け持つデータサ. ル方向に対して等トロイダル角での分割は可能だが,径方. イズが動的に変化する場合には,グローバルビューモデル. 向に対して等間隔に分割を行った場合には格子点数の偏り. の指示文では対応することができない.そこで,ローカル. により,プロセス毎の演算量に大きな差が生じる.そこで,. ビューモデルによる coarray 記法を用いることで,各プロ. GTC-P では,径方向の分割においての格子点数の偏りを. セスの動的に変化する演算量に対応でき,さらに,配列代. 減らすために,径方向の内側の領域の幅を広く,外側の領. 入文形式で記述できるために直感的な実装を行うことが可. 域の幅を狭く分割する事で,格子点数を極力揃えている.. 能である.. ⓒ 2015 Information Processing Society of Japan. 57.

(16) HPCS2015 2015/5/19. 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. 1 double ∗sendr, ∗recvl;. 1 #define n t 2 /∗ トロイダル方向の分割数 ∗/. 2. 2 #define n r 4 /∗ 径方向の分割数 ∗/. 3 for(i=0;i<nloc over;i++). 3 #define n rp 2 /∗ 粒子数の分割数 ∗/. 4. 4. sendr[i]=phitmp[i∗(mzeta+1)+mzeta];. 5. 5 #define Xnloc all 107722. 6 MPI Sendrecv(sendr,nloc over,MPI DOUBLE,right pe,. 6. 7. isendtag,recvl,nloc over,MPI DOUBLE,left pe,. 7 double phitmp g [Xnloc all][2∗n t];. 8. irecvtag,toroidal comm,&istatus);. 8 int b [n r∗n rp] 9. 図 7 GTC-P 内の MPI による一対一通信. = {10967,10967,14086,14086,16164,16164,12644,12644};. 10 /∗ gblock 分散時の各プロセスのブロックサイズ ∗/ 11. 1 #pragma xmp nodes P1(∗) 2 double Xsendr[nloc over],Xrecvl[nloc over]; 3 #pragma xmp coarray Xrecvl:[∗] 4. 13 /∗ ノードの分割数の指定 ∗/ 14 #pragma xmp template T(0:Xnloc all−1, 0:2∗n t−1) 15 /∗ テンプレートサイズの指定 ∗/ 16 #pragma xmp distribute T(gblock(b), block) onto P2. 5 for(i=0;i<nloc over;i++) 6. 12 #pragma xmp nodes P2(n r ∗ n rp, n t). Xsendr[i]=phitmp[i∗(mzeta+1)+mzeta];. 7 8 Xrecvl[0:nloc over]:[right pe]=Xsendr[0:nloc over]; 9 xmp sync memory(NULL); 10 #pragma xmp post(P1(left pe), mype+1) 11 #pragma xmp wait(P1(right pe), right pe). 図 8. coarray 記法による GTC-P の通信の実装. 17 /∗ テンプレートの分割方法の指定 ∗/ 18 #pragma xmp align phitmp g [i][j] with T(i, j) 19 /∗ 配列とテンプレートの対応 ∗/ 20 #pragma xmp shadow phitmp g [0][1:0] 21 /∗ 袖領域の確保 ∗/ 22 /∗ ・・・ ∗/ 23 #pragma omp parallel for 24 #pragma xmp loop (i, j) on T(i, j) 25. for (i = 0; i < Xnloc all; i++) { for (j = 0; j < (mzeta + 1) ∗ n t; j++) {. 26 1 #pragma xmp reflect (phitmp) width (0,/periodic/1:0). 27. phitmp g[i][j] = func(i, j); }. 28. 図 9. reflect 指示文による GTC-P の通信の実装. 29. }. 図 10. 4. 実装. XMP による GTC-P の実装. 変化する事から coarray 記法による通信を用いる.図 7 は. GTC-P の XMP 実装の方針を示す.以降,ローカル. MPI,図 8 は coarray 記法による通信箇所の実装を表す.例. ビューモデルによる実装を XMP-localview,ハイブリッド. では通信のために pack 処理を行い,隣接プロセスに対して. ビューモデルによる実装を XMP-hybridview と記述する.. coarray 記法の Put による通信を示す.また,coarray は非. XMP-localview は,演算領域の分割やループ分割等,通信. 同期通信であるために,同期処理として xmp sync memory. の記述以外はオリジナルの MPI 実装同様に行い,通信は. と post/wait 指示文を用いる.xmp sync memory により. coarray 記法で記述を行う.XMP-hybridview は,演算領. 送信側の通信完了を保証し,wait 指示文により待機してい. 域の分割をグローバルビューモデルを用いて行い,隣接格. る受信側のプロセスを,post 指示文により処理を再開さ. 子点間の通信を reflect 指示文による袖領域通信で表す.各. せる.post 指示文の XMP の実装では,受信側で内部的に. プロセスの演算量が動的に変化する粒子演算は,ローカル. post 命令が保持されるため,post 指示文後に wait 指示文. ビューモデルによる coarray 記法を用いて通信の実装を行. が記述された場合でも正常動作する.これにより,2 ノー. う.また,両実装共に MPI Bcast,MPI Allreduce のよう. ド間での非同期通信を記述することが可能である.Omni. な全体通信は,グローバルビューモデルが提供する bcast,. XMP コンパイラは現状,coarray 記法の両辺共にポインタ. reduction 指示文を用いる.加えて,GTC-P は,MPI と. を指定する事が出来ず,通信相手のプロセスを指定する配. OpenMP によるハイブリッドな実装が行われているため,. 列(図 8 では Xrecvl を指す)は静的に記述されている必. XMP による実装も XMP-localview・XMP-hybridview 共. 要がある.. に OpenMP を組み合わせた実装を行う.. 4.2 ハイブリッドビュー実装(XMP-hybridview) 4.1 ローカルビュー実装(XMP-localview). GTC-P におけるトロイダル方向,径方向の領域分割は,. GTC-P における粒子の演算領域間の移動により発生す. 3.2 節よりトロイダル方向は等間隔に分割されるが,径方向. る通信は MPI Sendrecv または,MPI Isend/Irecv により. に対しては初期格子点演算時に不均一に分割される.そこ. 記述されている.通信先は常に同一であり,一部を除き左. で,グローバルビューモデルが提供する distribute 指示文. 右の隣接格子間で通信を行う.また,通信サイズは動的に. の gblock 分割を用いる.gblock は各プロセスが受け持つ. ⓒ 2015 Information Processing Society of Japan. 58.

(17) HPCS2015 2015/5/19. 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. 表 1. ズによって開始・終了の値を指定する必要はなく,逐次実. 実験環境(HA-PACS). Intel Xeon E5-2670 × 2 (2.6GHz). CPU. 装の for ループ(例では,25 から 29 行目の for ループを指. CPU (8 cores/CPU) × 2 = 16 cores Memory. 128GB, DDR3 1600MHz. す)に対して 24 行目の loop 指示文を記述することにより, 並列実行される.. Interconnect. Infiniband QDR 4 Lines x 2 Rails. OS. CentOS 6.4. C Compiler. gcc 4.4.7. MPI. MVAPICH2 2.0. GASNet. 1.24.0. 4.3 XMP + OpenMP による実装 XMP と OpenMP は,XMP の仕様上,同時に記述する ことが可能である.また,for ループの最外部に対して記 述される XMP と OpenMP の pragma の順序は関係なく,. 6000 MPI (MPI_Send/Recv) Bandwidth [MB/s]. 5000. どちらの場合も,それぞれのプロセスが持つ分散された配. XMP (coarray). 列に対してスレッド並列を行う.図 10 の 23 行目からが,. 4000. XMP と OpenMP を用いたループ分割の実装例となる.例 3000. のように XMP の loop 指示文と OpenMP の parallel 指示. 2000. 文を for ループの最外部に記述することで,各プロセスで. 1000. の分割された配列に対するループの実行に加え,スレッド 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608. 0. Transfer Size [Byte]. 図 11. MPI(MPI Send/Recv)と XMP(coarray)の通信性能の 評価. 並列化を行うことが可能となる.. 5. 評価 5.1 通信性能の予備評価 ローカルビューモデルが提供する coarray 記法の C 言 語版は,Omni XMP コンパイラでは,現在,GASNet を. 表 2. 弱スケーリングにおける各次元の分割数変動時の問題サイズ を決定するパラメータの値.. 用いた実装が行われている.本稿で,ハイブリッドビュー モデル,ローカルビューモデルを用いた実装を行うに当た. Default. トロイダル方向. 径方向. 粒子数. り,MPI Send/Recv 等による一対一通信を coarray 記法. mstep. 100. 20. 20. 20. による片方向通信の Put を用いた実装とする.その場合. mpsi. 90. 90. 90–2880. 90. mzetamax. 64. 2–64. 2. 2. に,通信方法の違いや GASNet による Infiniband に対す. 粒子数. 100. 100. 100. 100–3200. 問題サイズ A. る最適化により,通信性能に差が生じる可能性があるため,. ping-pong プログラムを用いて通信性能の調査を行った. 分割領域のサイズをユーザが指定することができるため,. 評価環境として,筑波大学計算科学研究センターの超並列. 各プロセスに不均等にデータを配置することが可能な分割. GPU クラスタである HA-PACS[13] を用いた.HA-PACS. 方法である.図 10 は,演算領域に対して gblock 分割を用. の 1 ノードの計算機環境を表 1 に示す.図 11 に通信性. いた場合のグローバルビューモデルによる GTC-P の実装. 能の評価を示す.結果として,通信サイズが 65536Byte ま. である.16 行目の distribute 指示文で gblock 指定の際に,. では XMP の coarray 通信の方が速く,それ以降は MPI. 各プロセスが持つ分割領域のサイズが格納された配列(例. の MPI Send/Recv による通信の方が有利となることがわ. では,8,9 行目の配列 b を指す)を指定することで不均一. かった.. な分割を行う.MPI 実装では,各プロセスが持つ配列サイ ズは動的に確保されるが,本稿では全て静的に記述してい. 5.2 問題サイズ,分割方法. る.XMP では,動的にテンプレートや分散配列を定義す. GTC-P には演算量を決定するパラメータとして,演算. ることが可能であり.現在,それらを用いたバージョンを. ステップ数である mstep,径方向の格子数である mpsi,最. 開発中である.隣接格子点間の通信にはグローバルビュー. 外殻でのポロイダル格子数である mthetamax,トロイダル. モデルが提供する reflect 指示文を用いる.図 9 は,reflect. 格子数である mzetamax に加えて,格子点当たりの粒子数. 指示文による実装例であり,図 7,図 8 と同様の通信を表. がある.本稿で評価に用いる問題サイズとして,GTC-P. す.width 節により片袖のみの通信とし,periodic 指定に. が提供する問題サイズ A を用いているが,強・弱スケー. より極座標系のような周回データに対して,末端プロセス. リングでの評価を行うに当たりパラメータの修正を行って. 同士の袖領域の更新を行う事を表す.袖領域として隣接格. いる.表 2 に問題サイズ A と修正した問題サイズを示す.. 子点間の通信を行うことで,MPI,XMP-localview で行っ. GTC-P は,三次元分割を行うことから,弱スケーリング. ていた通信のための pack,unpack 処理が必要なくなる.. の評価には,各次元の分割数毎に表 2 のようにパラメータ. また,for ループの演算範囲は各プロセスが持つ配列サイ. を変更し,強スケーリングの評価には,mstep は 20,mpsi. ⓒ 2015 Information Processing Society of Japan. 59.

(18) HPCS2015 2015/5/19. 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. 10   Calc. 9  . Comm. 実行時間 [sec]. 8   7   6   5   4   3   2  . 512. XMP-L. XMP-H. MPI. XMP-H. MPI. 128. XMP-L. XMP-H. MPI. 64. 径方向分割. XMP-L. XMP-H. MPI. 32. XMP-L. XMP-H. MPI. 16. XMP-L. XMP-H. MPI. XMP-L. XMP-H. MPI. 256. XMP-L. XMP-H. MPI. 128. XMP-L. XMP-H. MPI. 64. XMP-L. XMP-H. MPI. 32. XMP-L. XMP-H. MPI. 16. XMP-L. XMP-L. XMP-H. 0  . MPI. 1  . 256. 512. 粒子数分割 プロセス数. 図 12. 強スケーリングの評価.. 35. Calc. 実行時間 [sec]. 30. Comm. 25 20 15 10 5. 16. 32. 128. 256. 16. 32. トロイダル方向分割. 128. 256. 16. 径方向分割. 32. 128. 256. XMP-L. XMP-H. MPI. XMP-H. MPI. XMP-L. XMP-H. XMP-L. MPI. XMP-L 64. XMP-H. MPI. XMP-H. MPI. XMP-L. XMP-H. XMP-L. MPI. XMP-L 512. XMP-H. MPI. XMP-H. MPI. XMP-L. XMP-H. XMP-L. MPI. XMP-L 64. XMP-H. MPI. XMP-H. MPI. XMP-L. XMP-H. XMP-L. MPI. XMP-L 512. XMP-H. MPI. XMP-H. MPI. XMP-L. XMP-H. XMP-L. MPI. XMP-L 64. XMP-H. MPI. XMP-L. XMP-H. MPI. XMP-H. MPI. XMP-L. 0. 512. 粒子数分割. プロセス数. 図 13. 弱スケーリングの評価.. は 90,mzetamax は 2,粒子数を 100 とした.また,トロ. 場合においての評価を行う.また,評価環境は 5.1 節で用. イダル方向の分割数とトロイダル格子数を表す mzetamax. いた環境と同様である.. の値を同値とする GTC-P の制約があるため,トロイダル 方向の分割数を変動させた場合の強スケーリングの評価を することはできない. 各次元での分割数は,二つの次元の分割数をそれぞれ 2. 5.3 性能評価 図 12 に,径方向,粒子数の分割数変動時の強スケー リングによる評価を示す.XMP-localview(XMP-L)は,. に固定し,一次元の分割数を 4 から 128 と増加させる.例. 径方向,粒子数の分割数変動時共に MPI 実装と比較して. えば,粒子数の分割数を 4 から 128 へと増加させる場合は,. ほぼ同等の性能を得ることができた.また,径方向分割. トロイダル方向と径方向の分割数はそれぞれ 2 となる.し. 数変動時の 128 プロセス以上において,MPI 実装よりも. かし,トロイダル方向分割時には,分割数の増加毎に演算量. XMP-localview の性能が良い.図 14 に強スケーリング時. が増加するため,16 プロセスでの分割数(Nt × Nr × Nrp ). の径方向・粒子数の分割数を変動させた場合における,プ. を 4 × 2 × 2 と 2 × 2 × 4 とした場合に演算量が倍異なる.. ロセス番号 0 の他プロセスとの通信回数を示す.図 14,. そのため,他の分割方法と演算量を揃えるためにトロイダ. 図 11 より,プロセス数増加とともに通信サイズが減少し,. ル方向の分割数を変動させた場合の評価には,径方向の分. coarray が有利な通信サイズである 65536Byte 以下の通信. 割数は 2,粒子数の分割数を 4 とし,トロイダル方向の分割. が増加したために,MPI 実装と比較して性能が向上したと. 数を 2 から 64 へと増加させる,評価には,1 ノード 16MPI. 考える.XMP-hybridview(XMP-H)は,最大で径方向の. プロセス・1 プロセス 1 スレッドとして最大 32 ノードを. 分割数変動時には,64 プロセス時の約 5%,粒子数の分割数. 用いて計測を行う.加えて,XMP/MPI + OpenMP 実装. 変動時には,128 プロセス時の約 7%,MPI 実装と比較して. の評価には,1 ノード 1MPI プロセスとして 16 ノードを. 性能が低下している.GTC-P の MPI 実装では,隣接領域. 用い,スレッド数を 1 から 16 へと変動させる.分割方法. 同士の通信として,袖領域の一部分のみの更新を行う通信. は,トロイダル方向,径方向,粒子数の分割数をそれぞれ. が存在する.しかし,XMP が提供する reflect 指示文では. 2 × 4 × 2,2 × 2 × 4 として,各方向の分割数を増加させた. 部分的な更新を行うことが不可能なために,MPI 実装と比. ⓒ 2015 Information Processing Society of Japan. 60.

(19) HPCS2015 2015/5/19. 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. 較して通信量が増加している箇所がある.また,粒子数の. 2500 65537 (Byte). 分割数変動時では,MPI の通信が有利となる 65537Byte 以. 図 13 に,トロイダル方向,径方向,粒子数の分割数. 通信回数. 実装との性能差であると考える.. 65536 (Byte). 2000. 上の通信が一定数存在するため,以上の点が MPI と XMP. を変動させた場合の弱スケーリングによる評価を示す.. 1500. 1000. XMP-localview は,トロイダル方向,粒子数の分割数を変. 500. 動させた場合には,強スケーリング同様にほぼ同等の性能. 0 16. を得られたが,径方向分割数変動時のみ,512 プロセス時. 32. 64. 128 256 512. 16. 32. 64. 径方向分割. に最大で約 9%の性能差が生じた.XMP-hybridview では,. 128 256 512. 粒子数分割 プロセス数. トロイダル方向では 64 プロセス時に約 3%,径方向では 図 14. 512 プロセス時に約 20%,粒子数では 64 プロセス時に約. 強スケーリングにおける分割数変更時の通信回数.. 4%,MPI 実装と比較して性能が低下している.また,径 1800. 方向による分割数を変動させた弱スケーリングによる評価. 1400. て,全実装共に性能が悪いことがわかった.. 1200. 65536 (Byte). 1000 800 600. 行った.表 3 に各次元の分割数変動時の通信時間を除い. 400. たそれぞれのプロセスの最大と最小の演算時間を示す.ま. 200. トロイダル方向分割. 動させた場合には,各プロセスが演算する格子点数に差は. 512. 256. 128. 32. 径方向分割. 64. 16. 512. 256. 128. 32. 64. 16. 512. 256. 128. 16. 示す.結果として,トロイダル方向や粒子数の分割数を変. 32. 0. た,括弧内の値は,そのプロセスが演算を行う格子点数を. 64. 合に,全ての実装のおいて性能が低下する原因の調査を. 通信回数. が,他の二つの分割数をそれぞれ変動させた場合と比較し 弱スケーリング評価時の径方向の分割数を変動させた場. 65537 (Byte). 1600. 粒子数分割. プロセス数. なく,それぞれのプロセスの演算時間に大きな差はない.. 図 15. 弱スケーリングにおける分割数変更時の通信回数.. しかし,径方向の分割数変動時には,プロセス数の増加と 共に各プロセスが演算する格子点数に大きな差が生じる.. 9. 従って,各プロセスの演算量の違いによる負荷の不均等に. 8. ることがわかった. 図 15 に弱スケーリング時のトロイダル方向・径方向・ 粒子数の分割数を変動させた場合における,プロセス番号. 0 の他プロセスとの通信回数を示す.図 15 より,径方向 の分割数を増加した場合に 65537Byte 以上の通信が増加. XMP-localview. 7 実行時間 [sec]. より,図 13 の径方向分割数の変動させた場合の評価とな. MPI. XMP-hybridview. 6 5 4 3 2 1 0 1. 2. 8. 16. 1. 2. 4. 8. 16. 粒子数分割 スレッド数. 実装と比較して性能が低下している. 図 16 に,XMP/OMP + OpenMP 実装による評価を示. 4 径方向分割. するために,XMP-localview・XMP-hybridview 共に MPI. 図 16. XMP/MPI + OpenMP 実装の評価.. す.XMP と OpenMP を組合せて用いた実装は,各方向 の分割数を増加させた場合においても,XMP-localview・. 行数に大きな差は無い.XMP-hybridview は,MPI 実装. XMP-hybridview 共に性能が低下することはなく,MPI +. と比較して 200 行ほど行数削減をすることができた.こ. OpenMP 実装と同様にスケールしている.. の理由として,演算領域の分割を指示文のみで記述でき たことや,それによりグローバルビューモデルが提供す. 5.4 生産性. る reflect 指示文を用いて隣接プロセス間での通信を指示. XMP-localview は,MPI 実装と比較して一対一通信の記. 文一行で記述できたことが挙げられる.従って,XMP-. 述が通信相手と通信サイズを指定するのみの配列代入文形. hybridview は MPI 実装と比較して簡易な実装であるため. 式で記述できる coarray 記法を用いているために,直感的な. に生産性が高いといえる.また,逐次実装と比較すると,. 実装と言える.表 4 に GTC-P の逐次,MPI 実装,XMP-. XMP-hybridview は指示文以外に約 600 行コード行数が増. localview・hybridview の行数を示す.XMP-localview は,. 加している.XMP-hybridview において,粒子が分割され. 通信の記述以外は MPI 実装同様の方法で実装されており,. た演算領域を跨ぐ通信は,coarray を用いた実装方法をとっ. ⓒ 2015 Information Processing Society of Japan. 61.

(20) HPCS2015 2015/5/19. 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. 表 3. MPI 実装におけるトロイダル方向,径方向,粒子数の分割数. 法に含まれる各プロセスの演算量が動的に変化する粒子軌. を変動させた場合の計算量の調査.表の値は通信時間を除いた. 道演算のような,グローバルビューモデルのみで実装する. 各プロセスの最大と最小の演算時間である.. ことができない複雑なアルゴリズムに対しても,XMP の. トロイダル方向分割 最小. 最大. プログラミングモデルを組み合わせることで実装が可能に. 16. 8.408406 (19805). 8.548204 (19916). なり,さらに,一定の性能を保ちつつ,簡便かつスケーラ. 32. 8.440145 (19805). 8.541321 (19916). 64. 8.44846 (19805). 8.631631 (19916). ブルに記述できる事が示された.. 128. 8.511492 (19805). 8.718713 (19916). 256. 8.6418 (19805). 8.853517 (19916). ブラリ(MPI 3.0 の MPI Put/MPI Get や GPI-2[14] 等). 512. 8.865397 (19805). 9.109388 (19916). を用いることが挙げられる.また,ITER のような大規模. プロセス数. 径方向分割 プロセス数. 今後の課題として,coarray の実装に別の片方向通信ライ. な核融合装置に対応した問題サイズを解いた場合の評価. 最小. 最大. 16. 8.114932 (10967). 8.270015 (16164). や,現在,筑波大学と理化学研究所で仕様検討及びプロト. 32. 8.083982 (12104). 8.539186 (24200). タイプ実装が行われている XMP と OpenACC を統合した. 64. 8.075058 (14130). 9.487029 (33462). 128. 8.070919 (17422). 11.014277 (74745). XcalableACC による,GPU 実装が考えられる.. 256. 8.232447 (23198). 12.686402 (141700). 512. 8.491306 (34522). 15.797507 (270844). 粒子数分割 プロセス数. 謝辞. 本研究の一部は JST-CREST 研究領域「ポストペ. タスケール高性能計算に資するシステムソフトウェア技術 の創出」 ,研究課題「ポストペタスケール時代に向けた演算. 最小. 最大. 16. 8.408406 (19805). 8.548204 (19916). 32. 8.406107 (19805). 8.558563 (19916). 64. 8.394203 (19805). 8.565195 (19916). 成 26 年度学際共同利用プロジェクト「メニーコアおよび. 128. 8.394159 (19805). 8.562974 (19916). 演算加速機構を持つクラスタシステム向け並列プログラミ. 256. 8.393343 (19805). 8.591214 (19916). 512. 8.390172 (19805). 8.641762 (19916). 加速機構・通信機構統合環境の研究開発」による.また, 本研究の評価環境は,筑波大学計算科学研究センターの平. ング言語の開発と評価」 (代表者:中尾昌広)を利用して得 られたものである.. 表4. GTC-P の逐次,MPI 実装,XMP-localview・hybridview の. 参考文献. コード行数の内訳. Serial. MPI. XMP localview. hybridview. 総数. 4472. 5441. 5425. 5243. XMP 指示文. -. -. 132. 172. 粒子演算. -. 526. 510. 510. ている.そのため,粒子演算において通信記述以外(デー. [1] [2]. [3]. タの格納方法や通信時の pack,unpack 処理等)は MPI 実 装と同様の方法で記述されており,逐次実装と比較して. XMP-hybridview でも MPI 実装と同様に行数が増加して. [4]. いる.. 6. おわりに 本稿では,XMP の新しいプログラミングモデルとして ハイブリッドビューを提案し,それを用いて核融合シミュ. [5]. レーションコード GTC-P の実装を行った.ハイブリッド ビューモデルによる実装では,最大で約 20%の性能劣化と. [6]. なり,ローカルビューモデルによる実装では,一部を除き ほぼ同等の性能が得られた.生産性の観点からは,グロー バルビューモデルによる領域分割により,逐次実装に指示 文を追加するのみでの並列化や,隣接格子点間の通信を. reflect 指示文の一行で記述することができるために簡易な 実装と言える.また,ローカルビューモデルの coarray 記 法は配列代入文形式で通信を記述可能であることから,直 感的であり見通しが良いと言える.以上のことから,PIC. ⓒ 2015 Information Processing Society of Japan. [7] [8] [9] [10]. PGAS - Partitioned Global Address Space, http://www.pgas.org/ XcalableMP Specification Working Group. Xcalablemp specification version 1.2.1, 11 2014. http://www.xcalablemp.org/download/spec/xmpspec-1.2.1.pdf Jinpil L and Mitsuhisa S,Implementation and Performance Evaluation of XcalableMP : A Parallel Programming Language for Distributed Memory Systems,39th Annual International Conference on Parallel Processing (2010). Masahiro N,Jinpil L,Taisuke B,and Mitsuhisa S,Productivity and Performance of Global-view Programming with XcalableMP PGAS Language,CCGrid 2012 - The 12th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing,Ottawa,Canada,May, 2012. Numrich RW and Reid J,Co-array Fortran for Parallel Programming,SIGPLAN Fortran Forum,Vol. 17,No. 2,pp. 1-31 (1998). Ethier S,Adams M,Carter J,and Oliker L,Petascale Parallelization of the Gyrokinetic Toroidal Code, In Proceedings of VECPAR’ 10 9th International Meeting on High Performance Computing for Computational Science (2010). Omni Compiler Project,http://omni-compiler.org/ LBNL FTG and U.C. Berkeley : GASNet Specification Version 1.8,2006,http://gasnet.lbl.gov/ DoE SCiDAC,UC Irvine,etc.,Gyrokinetic Toroidal Code,http://phoenix.ps.uci.edu/GTC/index.php. Shimomura Y, Aymar R, Chuyanov V, Huguet M, Parker R, and ITER Joint Central Team, ITER Overview, Nu-. 62.

(21) 2015年ハイパフォーマンスコンピューティングと計算科学シンポジウム High Performance Computing Symposium 2015. [11]. [12]. [13]. [14]. HPCS2015 2015/5/19. clear Fusion, Vol. 39, No. 9Y, p. 1295 (1999). Hideo N and Atsushi F,Kinetic Modeling of the Heating Processes in Tokamak Plasmas,PhD Thesis,Kyoto Univ (2011). Ethier S,Tang WM,and Lin Z,Gyrokinetic Particle-incell Simulations of Plasma Microturbulence on Advanced Computing Platforms,Journal of Physics : Conference Series (2005). HA-PACS base cluster - Center for Computational Science, University of Tsukuba. http://www.ccs.tsukuba.ac.jp/CCS/eng/researchactivities/projects/ha-pacs/base-cluster GPI-2,http://www.gpi-site.com/gpi2/. ⓒ 2015 Information Processing Society of Japan. 63.

(22)

図 5 GTC-P における三次元トーラス空間の簡易図 [11]. 3.1 PIC 法 PIC 法によるシミュレーションは,場の計算を行う計算 格子と,空間を自由に動き回る格子によらない粒子軌道計 算によって構成される.以下は PIC 法のシミュレーショ ン手順である. ( 1 ) 各粒子が持つ電荷を近傍格子点に加算を行う. ( 2 ) ポアソン方程式により,近傍格子点上の電荷密度から 格子点上の静電ポテンシャルを求め,それを元にし電 場を求める. ( 3 ) 各粒子の近傍格子点から個々の粒子の現在位置での
図 8 coarray 記法による GTC-P の通信の実装
表 1 実験環境( HA-PACS ) CPU Intel Xeon E5-2670 × 2 (2.6GHz)
表 4 GTC-P の逐次, MPI 実装, XMP-localview ・ hybridview の コード行数の内訳 . Serial MPI XMP localview hybridview 総数 4472 5441 5425 5243 XMP 指示文 - - 132 172 粒子演算 - 526 510 510 ている.そのため,粒子演算において通信記述以外(デー タの格納方法や通信時の pack , unpack 処理等)は MPI 実 装と同様の方法で記述されており,逐次実装と比較して XMP-

参照

関連したドキュメント

interaction abstract machine token passing on fixed graph. call

Some of the other theorems, which follow from Beurling’s and L p − L q - Morgan’s (Hardy’s and Cowling-Price to be more specific) were proved inde- pendently on Heisenberg groups

Here is the “surprise”: the validity of assumption (2.14) on Claim 2.3 for some hyperbolic/Petrowski-type systems is verified (see Section 4) by precisely the same hard analysis

Here is the “surprise”: the validity of assumption (2.14) on Claim 2.3 for some hyperbolic/Petrowski-type systems is verified (see Section 4) by precisely the same hard analysis

Here is the “surprise”: the validity of assumption (2.14) on Claim 2.3 for some hyperbolic/Petrowski-type systems is verified (see Section 4) by precisely the same hard analysis

よう素による甲状腺等価線量評価結果 核種 よう素 対象 放出後の72時間積算値 避難 なし...

Family Justice Center Initiative: ’s. http://www.justice.gov/archive/ovw/docs/family_jus tice_center_overview_ (2_0 (.pdf#search=

②上記以外の言語からの翻訳 ⇒ 各言語 200 語当たり 3,500 円上限 (1 字当たり 17.5