分散メモリ向け並列言語XcalableMPにおけるユーザ定義データ分散機能の検討
全文
(2) Vol.2009-HPC-122 No.1 2009/10/9. 情報処理学会研究報告 IPSJ SIG Technical Report. distribution の派生クラス(のインスタンス)として表される.したがって,ユーザは, データ. distribution の派生クラスを独自に定義することにより,任意の分散形式を定義できる7) .. 3. XcalableMP データ. 3.1 概. 要. テンプレート. 整列. XcalableMP は,次世代並列プログラミング言語検討委員会(以下,委員会と呼ぶ)にお. ノード集合. 分散. いて検討されている,分散メモリ向け並列プログラミング言語である.その主な特徴を以下 に挙げる.. データ. • 指示文ベース 図 1 XcalableMP におけるデータ分散のモデル. データ分散,通信,ループ並列化などは,ベース言語である C または Fortran の指示 文の形式で記述する.. • 明示的な並列化. 結果として,配列は,テンプレートを介してノード集合へ分散される?1 .. プログラムの実行は,SPMD モデルに従う.指示文により明示的に指定された場合に. テンプレートは,並列処理の対象である集合(e.g. 差分法における格子点の集合, 粒子法. のみ処理系はループの並列化や通信の生成を行うため,ユーザはプログラムの挙動や性. における粒子の集合)を表しており,XcalableMP における並列化の基準となる.ノード. 能を予測しやすい.. は,XcalableMP の計算機モデルにおいて,固有のメモリと CPU(複数のコアがあっても. • グローバルビュー並列化とローカルビュー並列化. よい)を持つ構成単位である.テンプレートを分散する先であるノード集合は,ノードを要. プログラムが扱う問題全体を各ノードに分配する方法を記述することにより並列化を行. 素とする配列として表現される.. うグローバルビュー並列化(e.g. HPF)と,各ノードが実行すべき処理を記述するこ. ここで,XcalableMP における整列および分散は,次元毎に独立して指示されることに注. とにより並列化を行うローカルビュー並列化(e.g. MPI)の両方が可能である.. 意されたい.すなわち,整列を配列のインデックス空間からテンプレートのインデックス空. • ハイブリッド並列化. 間への写像と考え,分散をテンプレートのインデックス空間からノード集合のインデックス. MPI または OpenMP との併用が可能である.また,ローカルビュー並列化において. 空間への写像と考えたとき,XcalableMP における整列および分散は,次元毎の写像の直積. は,Fortran 2008 の coarray 機能をベースとする片側通信を利用できる.. として表現できる.. 3.2 データ分散. 3.2.2 align 指示文. 3.2.1 モ デ ル. align 指示文は,配列をテンプレートに整列させる方法を指定する.具体的には,配列の. 図 1 に示すように,XcalableMP におけるデータ分散は,整列と分散という二段階の処. 各要素を,テンプレートのいずれかの要素に関連付ける.その構文は次の通りである.. 理によって実現される.. !$xmp align array-name(align-source [,align-source]...). まず,データ(ほとんどの場合,配列)は,テンプレートと呼ばれる仮想的な(メモリに. with template-name(align-subscript [, align-subscript]…). 割付けらない)配列に対して整列する.次に,テンプレートは,ノード集合へ分散される.. ?1 「分散」という用語は,2 つの異なる意味で用いられる.狭義の分散は,テンプレートに対する操作である.広 義の分散は,データに対する操作である.本稿では,特に区別を要する場合,後者を「データ分散」と呼ぶ.. 2. c 2009 Information Processing Society of Japan °.
(3) Vol.2009-HPC-122 No.1 2009/10/9. 情報処理学会研究報告 IPSJ SIG Technical Report. ! $xmp align a ( i ) with t (i -1). 1. 1. 図 2 align 指示文の例:配列 a の要素 i は,テンプレート t の要素 i-1 に整列する.. ! $xmp distribute t ( block ) onto p. 図3. ここで,align-source は次のいずれかである.. 1. • scalar-int-variable. 2. • *. 3. distribute 指示文の例:テンプレート t は,ノード集合 p へブロック形式で分散される.. ! $xmp shadow a (1:2) ... ! $xmp reflect a. align-subscript は次のいずれかである. 図 4 shadow 指示文と reflect 指示文の例:配列 a のローカル部分の下端側に幅 1,上端側に幅 2 のシャドウが 付加される.. • scalar-int-variable {+|-} int-expr • * HPF とは異なり,XcalableMP では,配列要素 a(i) をテンプレート要素 t(2*i) に整列. 渡しすることが必要になる.この「近傍通信」を効率よく行うために,配列を分散して各. させるような, 「ストライドのある」整列を指定できないことに注意されたい.ストライドの. ノードのローカルメモリに割付ける際に,通信用のバッファとして余分な領域をあらかじめ. ある整列を用いる必要がある場合には,後述するように,補助的なテンプレートを用いる.. 付加しておくことが一般的に行われる.この余分な領域をシャドウと呼ぶ.. align 指示文の例を,図 2 に示す.. XcalableMP の shadow 指示文は,指定した幅のシャドウを配列に付加することを指示す. 3.2.3 distribute 指示文. る.reflect 指示文は,shadow 指示文で付加されたシャドウに対する近傍通信を指示する.. distribute 指示文は,テンプレートをノード集合へ分散する方法を指定する.その構文. すなわち,XcalableMP におけるシャドウは,近傍通信のためのバッファであると同時に,. は次の通りである.. 近傍通信のスケジュールを指定する役割を持つと考えられる.. shadow 指示文の例を,図 4 に示す.. !$xmp distribute template-name(dist-format [, dist-format]...) onto nodes-name. 3.3 計算の分散. dist-format として,次のいずれかを指定できる.. XcalableMP における計算の分散は,次のいずれかの方法により指定される.. • *. • task 指示文. 当該次元は分散されない(「オンプロセッサ」分散). 続くブロック内の各文を実行すべきノードを指定する.. • block. • loop 指示文. ブロック分散. 続くループの各イタレーションを実行すべきノードを指定する.. • cyclic[(int-expr)]. • array 指示文. サイクリック分散またはブロック・サイクリック分散. 続く配列代入文の要素毎の処理を実行すべきノードを指定する.. • gblock(int-array). いずれの指示文も,データ分散と同様に,各々の文,イタレーションまたは要素毎の処理. 不均等ブロック分散. が整列するべきテンプレートの要素を指定することにより間接的にノードを指定する.計算. distribute 指示文の例を,図 3 に示す.. の分散を指定する各指示文の例を図 5 に示す.. 3.2.4 shadow 指示文. 前述のように XcalableMP における全ての通信は明示されなければならないことから,. 並列化された近傍計算コードでは,分散境界上のデータを,隣接するノードとの間で受け. task,loop,array の各指示文が修飾するブロック,ループ,配列代入文の内部の全ての. 3. c 2009 Information Processing Society of Japan °.
(4) Vol.2009-HPC-122 No.1 2009/10/9. 情報処理学会研究報告 IPSJ SIG Technical Report. 1 2 3. • グローバルインデックス関数:integer function L2G(j). ! $xmp task on t (1) a (1) = 0 ! a (1) へ の 代 入 は , t (1) の オ ー ナ に よ っ て 実 行 さ れ る . ! $xmp end task. ローカルインデックス関数の逆関数. 原理的には,owner のみを与えれば,処理系は分散を実現できる(G2L と L2G を,処理系. 4 5 6 7 8. が自動的に生成することが可能である).しかし,処理系による自動的な生成は一般には困. ! $xmp loop on t ( i ) do i = 1 , 100 a(i) = 0 ! a(i) へ の 代 入 は , t(i) の オ ー ナ に よ っ て 実 行 さ れ る . end do. 難である上,ユーザが書く最適なものに比べ性能的に劣る場合が多い.したがって,本研究 では,G2L と L2G をユーザが定義することを必須とする. 新しく定義した分散形式によりデータを分散するには,次のようにする.. 9 10 11. ! $xmp array on t a (:) = 0. ! aの各要素への代入は,対応するtの要素のオーナに ! よって実行される.. (1). 上記の関数群をモジュール手続きとして含むモジュール(分散定義モジュールと呼 ぶ)を作成し,dist_format 指示文によって新しい分散形式として宣言する.. (2). 図 5 計算の分散の例. ( 1 ) で宣言した分散形式(モジュール名)を,distribute 指示文の dist-format に 指定する.. データ参照はローカルである(通信を必要としない).言い換えれば,処理系が,それらの. 本方式は,オブジェクト指向の機能を利用する Chapel のユーザ定義分散機能に比べて,. データ参照がローカルでない場合の結果を保障する必要はない.. 拡張性や再利用性に劣るものの,実装が容易であるという利点を持つ. 図 6 に,ユーザ定義分散の例を示す.ここでは,標準のブロック形式と等価な分散形式. 4. ユーザ定義データ分散. を,ユーザ定義分散の機能によって定義している.ブロック分散のパラメータであるブロッ. 4.1 関数によるデータ分散の定義. クサイズ blk_size を,distribute 指示文に先立って定義しておく必要がある.. 4.2 ユーザ定義データ分散における近傍通信. 次元毎の分散は,テンプレートのある次元のインデックス集合から,対応するノード集 合の次元のインデックス集合への写像として定義される.このような写像は,1 個の整数値. 標準の分散形式とは異なり,配列要素の隣接関係が必ずしも自明ではないユーザ定義分散. (テンプレートのインデックス)を引数として受け取り,1 個の整数値(ノード集合のイン. では,通常の shadow 指示文によってシャドウを指定することができない.そこで,シャド. デックス)を返す関数(オーナ関数と呼ぶ)として表現できる.. ウの拡張であるハローを用いて,近傍通信を指定する.. ユーザ定義分散は,オーナ関数を含む次の 3 つの関数を与えることにより定義される.. ハローは,分散された配列に関し,各ノードにおける「近傍要素」=「近傍通信の対象」. • オーナ関数:integer function owner(i). をグローバルインデックスによって指定する機能である4),5) .通常のシャドウと同様に,ハ. テンプレートのインデックス i を配置するべきノードのインデックスを返す.. ローに対する近傍通信は reflect 指示文によって指示できる.. • ローカルインデックス関数:integer function G2L(i). 委員会において現在検討されている,ハローを宣言する方法を,図 7 を用いて説明する.. • 成分として一次元整数型ポインタ配列のみを持つ構造型の一次元配列であるハロー配列. ノード owner(i) における,i に対応するローカルなインデックスを返す.G2L は,同 一のノード内において狭義単調増加かつ全射でなければならない.すなわち,. を宣言する.ハロー配列のサイズはプロセッサ数 nnodes に一致させる(1∼5 行目).. owner(i) = owner(j) を満たす i, j において,i < j ⇒ G2L(i) < G2L(j). • ハロー配列の要素 i の成分 halo(i)%index には,プロセッサ i がハローとして保持す. かつ,. べき配列要素のグローバルインデックスを設定する(9∼11 行目).. ノード p 上の任意のローカルインデックス k に対し,p = owner(i) かつ. • shadow 指示文において,シャドウ幅の代わりにハロー配列を指定する(16 行目).. k = G2L(i) を満たす i が存在する.. 4.3 テンプレートの連携. が成り立つ.. 3.2.1 節で述べたように,テンプレートは,XcalableMP における並列化の基準である.. 4. c 2009 Information Processing Society of Japan °.
(5) Vol.2009-HPC-122 No.1 2009/10/9. 情報処理学会研究報告 IPSJ SIG Technical Report. 1 2 3. ! $xmp dist_format my_block ... ! $xmp distribute t ( my_block ) onto p. type halo_type integer , pointer :: index (:) end type halo_type. 1 2 3 4. type ( halo_type ) :: halo (nnodes). 5 1. module my_block. 6. 2 3 4. 8 10. contains. 11. 7 8 9 10 11. halo (1)% index = (/6 , 7/) halo (2)% index = (/2 , 3/) halo (3)% index = (/5 , 6/). 9. 5 6. .... 7. integer blk_size .... 12. integer function owner ( i ) integer , intent ( in ) :: i owner = i / blk_size end function owner. .... 13 14 15 16. ! $xmp distribute a ( my_block ) onto p ! $xmp shadow a ( halo ). 12 13 14 15 16. integer function G2L ( i ) integer , intent ( in ) :: i G2L = mod (i , blk_size ) end function G2L. 図7. 定義モジュールにおいて,他の分散定義モジュールを参照(use)すればよい.. 17 18 19 20. integer function L2G ( i ) integer , intent ( in ) :: i L2G = blk_size * (me - 1) + i. 図 8 は,有限要素法コードにおけるデータ分散の例を示す.節点上のデータを表す配列 n がテンプレート t に整列しており,t は my_block 形式で分散されている.疎行列である係. ! me は自ノードのインデックス. 21 22. ハローの宣言の例. 数行列 a は,通常,Compressed Row Storage (CRS) 形式で,一次元の配列の形で格納さ end module. れる.a を,行列の各行に相当する 8 個の区間(各区間の切れ目は,別の配列 row_ptr に よって示される)に分割し,それら各区間を t の各要素に整列させることが望ましいが,t. 図 6 ユーザ定義分散の例. に対する通常の整列では,このようなデータ分散を表現できない. したがって,解くべき問題に応じて一つのテンプレートを宣言し,プログラム中に現れる. そこで,図 9 に示すように,別のテンプレート aux_t を用いて a のデータ分散を指定す. データおよびループをそれに対して整列するのが,XcalableMP における並列化の基本的な. る.aux_t は,モジュール crs で定義される分散形式により分散される.モジュール crs. スタイルとなる.. の 3 行目において,テンプレート t の分散形式を参照するために,モジュール my_block が. しかし,分散したいデータが複雑な構造を持つなどの理由により,たとえテンプレートの. use されている(併せて,名前の衝突を避けるために,my_block 中の関数 owner に対して. 分散をユーザ定義データ分散機能によって記述したとしても,望むデータ分散を表現できな. 局所名が指定されている).. い場合がある.このような場合には,特定のデータの分散を記述するために,補助的なテン. 5. 実. プレートを用いることが考えられる.このとき,あるテンプレートの分散(owner,G2L お. 装. よび L2G)を定義する際に,他のテンプレートの分散を参照できれば,両者の間に任意の関. 典型的な XcalableMP コンパイラは,XcalableMP のソースプログラムを入力され,SPMD. 係を持たせる(連携させる)ことができる.他のテンプレートの分散を参照するには,分散. 化された C または Fortran のソースプログラムを出力するトランスレータとして実装され. 5. c 2009 Information Processing Society of Japan °.
(6) Vol.2009-HPC-122 No.1 2009/10/9. 情報処理学会研究報告 IPSJ SIG Technical Report. n. t 整列. a. 1. 1. 2. 2. 3. p(1). 4 3. ! $xmp dist_format my_block , crs ! $xmp template :: t (8) ! $xmp distribute t ( my_block ) onto p. 5. p(2) 4. 6. ! $xmp align n ( i ) with t ( i ). 7. 5. p(3). 8 6. 9. ! $xmp template :: aux_t (28) ! $xmp distribute aux_t ( crs ) onto p. 10. 7. p(4). 11. ! $xmp align a ( i ) with aux_t ( i ). 8. 図 8 有限要素法コードにおけるデータ分散 1. module crs. 2. る8) .ユーザ定義分散機能は,XcalableMP コンパイラが本来備える,標準のデータ分散機. 3. use my_block , only my_block_owner = > owner. 4. 能を拡張して実現する.. 5. 5.1 分散配列記述子. .... 6 7. 実行時に,XcalableMP ランタイムライブラリは,分散されたテンプレートまたは配列に. contains. 8. 関する記述子を管理する.この記述子には,当該テンプレートまたは配列の分散状態を含む. 9. 種々の情報が格納される.特に,テンプレートがユーザ定義分散によって分散されていると. 10. き,記述子には,モジュール中で定義された owner,G2L および L2G へのポインタが格納さ. 12. れている.. 13. 11. 14. 記述子に格納された関数ポインタは,次に挙げる 2 種類の方法で用いられる.. 15. integer function owner ( i ) integer , intent ( in ) :: i find j s.t. row_ptr ( j ) <= i < row_ptr ( j +1) owner = my_block_owner ( j ) end function owner ... end module. • 出力ソース中で分散配列の要素のオーナやローカルアドレスなどの情報を知る必要があ る場合,コンパイラは,記述子から関数ポインタを取得し,関数呼出しを行うコードを. 図 9 テンプレートの連携の例. 生成する.. • ランタイムライブラリ内で,分散配列の要素のオーナやローカルアドレスなどの情報を. ルインデックス関数より求めることができる.例えば, 「!$xmp align a(i) with t(i+b)」 という整列を指定されている配列 a のローカルインデックス関数 G2L_a は,テンプレート. 知る必要がある場合,記述子から関数ポインタを抽出し,関数呼出しを行う.. 5.2 分散配列のメモリレイアウト. t のローカルインデックス関数 G2L_t より次のように得られる.. 処理系が, (ユーザ定義分散により分散された配列を含む)分散配列を各ノードのローカルメ. G2L_a(i) = G2L_t(i+b). モリに割り付けるには,いくつかの方法が考えられる.本研究では,文献 9) で提案されている,. ここで,ローカルインデックス関数が狭義単調増加かつ全射であることから,分散前のテ. インデックスをローカル化して連続領域に割り付ける方法を想定する.このとき,分散された. ンプレートまたは配列において上限と下限の組で表される区間は,分散後のテンプレートま. 配列要素のローカルインデックスと,対応するテンプレート要素のローカルインデックスが一. たは配列においても(各ノード毎に)上限と下限の組で表せることが重要である. 図 10 は,分散配列のメモリレイアウトの様子を示す.テンプレート t(1:12) は,4 ノー. 致するような割り付けを行えば,配列のローカルインデックス関数をテンプレートのローカ. 6. c 2009 Information Processing Society of Japan °.
(7) Vol.2009-HPC-122 No.1 2009/10/9. 情報処理学会研究報告 IPSJ SIG Technical Report. 1. 定義分散機能により分散されているとする.owner と G2L は,それぞれ t および a のオー. ! $xmp dist_format my_cyclic. ナ関数とローカルインデックス関数である.nnodes は,t が分散されるノード集合のサイ. 2 3 4 5. ! $xmp nodes p (4) ! $xmp template t (1:12) ! $xmp distribute t ( my_cyclic ) onto p. ズを示す.. • task 指示文の変換 図 11 のコードは,t(i) のオーナノードが,a(k) に対する代入を実行することを指示. 6 7 8. real a (2:12) ! $xmp align a ( i ) with t ( i ). している.task 指示文自体が,t(i) のオーナノードが自ノードであるか否かを判定す る条件分岐へ変換されるとともに,a の添字式がローカル化される.ここで,me は自 ノードのインデックスである.. ローカル インデックス. 1. a(2:12). 2. 3. 1. 2. 3. 5. 9. 2. 6 10. 1. 2. 3. 3. 7 11. 1. 2. 4. 8 12. • loop 指示文の変換. 3. 図 12 のコードは,t(k) のオーナノードが,do ループの繰り返し k において,a(f(k)) (f(k) は任意の k の式)および a(k+c)(c は整定数式)に対する代入を実行すること を指示している.処理系は当該ループを並列化するために,ループの上下限をローカ. t(1:12). 1. 5. 9. 2. 6 10. 3. 7 11. 4. 8 12. 1. 2. 3. 1. 2. 1. 2. 1. 2. p(1) 図 10. 3. p(2). p(3). 3. ル化する(変換後のコードの 3 行目と 4 行目).ow_glb と ow_gub は,それぞれ,自. 3. ノードが保持する領域の上限と下限のグローバルインデックスである.. p(4). 一般に,a の添字式 f(k) は,G2L(f(L2G(i))) に置き換えられる(変換後のコードの 6. 分散配列のメモリレイアウト. 行目).ただし,実際には,a の添字式は k+c の形である場合が多いと考えられる.そ の場合には,より簡単な i+c に置き換えることができる(変換後のコードの 7 行目).. ドに my_cyclic 形式(標準のサイクリック形式と等価)で分散されている.配列 a(2:12). なお,変換されたソース中に現れる owner,G2L および L2G は,できる限りインライン. の要素 i は t の要素 i に整列する.その結果,例えば,ノード p(2) には,a(2),a(6),. 展開することが性能の観点からは望ましい.. a(10) が割り当てられ,それらのローカルメモリ上のインデックスは順に 1,2,3 となる.. 6. 今後の課題. a の下限は 2 であり,t(1) に整列すべき a(1) は存在しないため,p(1) においてローカル. 今後の課題として,以下のようなものが挙げられる.. インデックス 1 の位置のメモリは使用されない.. • 実装と評価. 5.3 ハ ロ ー ユーザ定義分散とハローは,互いに直交する機能である.したがって,ハローの設定や. XcalableMP 処理系にユーザ定義分散機能を実装する.有限要素法などの不規則問題を. reflect 指示文を実行するランタイムライブラリが必要に応じて owner や G2L を参照する. 扱うプログラムに本機能を適用して実行性能を評価することにより,本機能の有効性を. 限り,ユーザ定義分散のための特別な処理は不要である.. 実証する.. • 分散定義の詳細化. 5.4 コード変換 コンパイラは,文献 9) の方法に従って,ユーザ定義分散機能により分散された配列の出. 提案したユーザ定義分散機能では,分散を定義するのに owner,G2L および L2G の 3. 現やループを SPMD 化する.. つの関数を必須とした.しかし,これら 3 つ以外の関数(たとえば,ローカルサイズ. 図 11 および図 12 を用いて,コンパイラが行うコード変換を説明する.配列 a には. を返す関数)が定義されていれば,より効率の良い並列コードを生成できる可能性があ. 「!$xmp align a(i) with t(i)」という整列が指定されており,テンプレート t はユーザ. る.どのような関数が有用か,それらを処理系でどのように利用できるかを検討する.. 7. c 2009 Information Processing Society of Japan °.
(8) Vol.2009-HPC-122 No.1 2009/10/9. 情報処理学会研究報告 IPSJ SIG Technical Report. 1. real a ( n ). 2 3 4. 1. 様に採用されることを目指し,本機能を委員会に提案していきたい.. 2. ! $xmp task on t ( i ) a ( k ) = .... 3 4 5. ⇓ 1. クプログラムによる評価を行うことは今後の課題である.また,次の版の XcalableMP 仕. real a ( n ). 6. ! $xmp loop on t ( k ) do k = 1 , n a (f( k )) = ... a ( k + c ) = .... 謝辞 XcalableMP の仕様は,次世代並列プログラミング言語検討委員会による.. 参 考. 2 3 4 5 6. if ( owner ( i ) == me) then j = G2L ( k ) a ( j ) = ... end if. 1. 4 5 6. 図 11 task 指示文の変換. real a ( n /nnodes). 2 3. 7. lb = G2L ( max (1 , ow_glb )) ub = G2L ( min (n , ow_gub )) do i = lb , ub a ( G2L (f( L2G ( i )))) = ... a ( i + c ) = .... 図 12. 献. 1) High Performance Fortran Forum: High Performance Fortran Language Specification Version 2.0 (1997). 2) Kennedy, K., Koelbel, C. and Zima, H.: The Rise and Fall of High Performance Fortran: An Historical Object Lesson, Proc.3rd ACM SIGPLAN History of Programming Languages Conf. (HOPL-III), San Diego, California, pp.7–1–7–22 (2007). 3) 超並列プログラミング言語検討委員会:XcalableMP 仕様書 Version 0.5J,http: //www.xcalablemp.org/xmp-spec-0.5J.pdf. 4) Benkner, S.: Optimizing Irregular HPF Applications Using Halos, Concurrency – Practice and Experience, Vol.12, No.2–3, pp.137–155 (2000). 5) 村井 均,阿南統久,林 康晴,末広謙二,妹尾義樹,奥田洋司,横川三津夫:並列 化コンパイラ HPF/ES の不規則問題向け機能,情報処理学会研究報告, 2002-HPC-90, Vol.2002, No.51, pp.61–66 (2002). 6) Chapman, B., Mehrotra, P. and Zima, H.: User Defined Mappings in Vienna Fortran, ACM SIGPLAN Notices, Vol.28, No.1, pp.72–75 (1993). 7) Diaconescu, R.E. and Zima, H.P.: An Approach to Data Distributions in Chapel, Int’l. J. High Performance Computing Applications, Vol. 21, No. 3, pp. 313–335 (2007). 8) 李 珍泌,朴 泰祐,佐藤三久:分散メモリ向け並列言語 XcalableMP コンパイラの 試作と評価,情報処理学会研究報告, Vol.2009–HPC–121, No.6, pp.1–10 (2009). 9) 岩下英俊,青木正樹:HPF トランスレータ fhpf における分散種別を一般化したコー ド生成手法,情報処理学会論文誌:コンピューティングシステム, Vol.47, No.SIG12 (ACS15), pp.329–339 (2006). 10) Chavarr´ıa-Miranda, D. and Mellor-crummey, J.: Toward Compiler Support for Scalable Parallelism using Multipartitioning, Proc. 5th Workshop on Languages, Compilers, and Runtime Systems for Scalable Computers, Lecture Notes in Computer Science, Springer-Verlag, pp.272–284 (2000).. ⇓. real a ( n /nnodes). 文. loop 指示文の変換. • 複数の次元にまたがる分散 本稿で提案した機能で表現できるのは次元毎の分散に限られ,例えば Rice 大の dHPF コンパイラが備える multipartitioning10) のような,複数の次元にまたがる分散は表現 できない.実際には,複数の次元のインデックスを引数として受け取る owner,G2L お よび L2G を定義すれば,複数の次元にまたがる分散を定義すること自体は可能である. しかし,そのような分散を指定されたテンプレートに整列する多重ループを SPMD 化 する方法は一般に自明ではないため,コンパイラが自動的にそれを行うことは困難であ る.ループを抽象化して扱うための,Chapel のイタレータ(iterator)のような機能が あれば,ユーザが多重ループを SPMD 化する方法を指定できるため,複数の次元にま たがる分散を表現することも可能になると考えられる.. 7. お わ り に 本稿では,並列プログラミング言語 XcalableMP において,ユーザが独自のデータ分散 形式を定義できる機能の検討を行った.この機能により,より柔軟なデータ分散を指定する ことが可能になり,XcalableMP の適用範囲が広がることが期待される. 本機能の有効性を実証するために,XcalableMP 処理系への本機能の実装と,ベンチマー. 8. c 2009 Information Processing Society of Japan °.
(9)
関連したドキュメント
• Adjustable Soft−Start: Every time the controller starts to operate (power on), the switching frequency is pushed to the programmed maximum value and slowly moves down toward
An 8.5 mA internal current source flows through R_ILIM, creating a reference voltage, and the voltage drops on R DSON of both high- and low-side MOSFETs are used to compare with
b2) the second Mlower pulse with on−time longer than previous Mupper driver pulse period is placed in case that the ON−time comparator output is high in the end of regular
into burst−mode. In burst−mode, switching operation is halted when V COMP is lower than V BURL and resumed when V COMP is higher than V BURH. By skipping un-needed switching
The Rt pin OCP components are normally designed in such a way that the OCP system shifts and regulates the operating frequency of the LLC converter during overload or secondary
Additional features found in the NCP1562 include line feed-- forward, frequency synchronization up to 1.0 MHz, cycle--by--cycle current limit with leading edge blanking
To synchronize the receiver frequency to a carrier signal, the oscillator frequency could be tuned using the capacitor bank however, the recommended method to implement
11 V M PFC Current Amplifier Output A resistor to ground sets the maximum power level 12 LBO PFC Line Input Voltage Sensing Line feed forward and PFC brown-out3. 13 Fold PFC Fold