JP2000347879A - 並列プログラム生成方法 - Google Patents
並列プログラム生成方法Info
- Publication number
- JP2000347879A JP2000347879A JP11160973A JP16097399A JP2000347879A JP 2000347879 A JP2000347879 A JP 2000347879A JP 11160973 A JP11160973 A JP 11160973A JP 16097399 A JP16097399 A JP 16097399A JP 2000347879 A JP2000347879 A JP 2000347879A
- Authority
- JP
- Japan
- Prior art keywords
- division
- node
- graph
- parallel
- loop
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
データに対する分割がユーザによって既に指定されてい
る逐次プログラムに対して、それを満たしつつ残りのデ
ータの分割を自動的に決定することによって並列プログ
ラムを生成する並列プログラム生成方法、プログラム、
情報処理装置を提供する。 【解決手段】 自動的にデータ分割を行う際に、並列ル
ープ内の配列のアクセスパターンを元に生成された整列
関係を表すグラフから、そのループにおける分割候補を
生成する。次に、CALL文または予め定められた条件
を満たす多重ループに対応するノードと、ノード間の制
御の流れを表すエッジとからなる有向グラフであるコン
トロールフローグラフ上で優先順位の高いエッジに沿っ
て分割の決定と分割の衝突の解決を行う。更に、プロセ
ッサへの配列要素の配置の状態によって分割の衝突の有
無を判定する。
Description
成方法に関し、特に自動的にデータ分割を行う手段を備
えた並列プログラム生成方法に関する。
あるプロセッサが必要とするデータがローカルメモリに
存在しない場合、データ転送が必要となる。データ転送
は並列プログラムの性能低下の要因となるため、データ
転送を削減することが重要である。したがって、あるル
ープのイタレーションで、ある配列の要素がアクセスさ
れる場合、このイタレーションと配列要素が同一のプロ
セッサに割り当てられていることが求められる。
と分散という2段階の写像で考えられる。テンプレート
は仮想的なプロセッサである。一般に通常の配列もテン
プレートとなり得る。整列によって、データの各要素
は、テンプレートの特定の要素に対応づけられる。次
に、分散によって、テンプレートの各要素は、特定の物
理プロセッサに対応づけらる。これらの結果、テンプレ
ートを介して、データの要素と物理プロセッサの対応づ
けが決定される。実行時には、各データ要素は、対応づ
けられた物理プロセッサに割り当てられる。
の対応、配列の要素番号とテンプレートの要素番号との
対応を指定することによって決定される。配列の要素番
号とテンプレートの要素番号との対応は、通常、配列の
要素Iに対応するテンプレートの要素番号をIの線形式で
表現することで指定される。データ並列言語 High Perf
ormance Fortran (HPF) の表記法に従うと、配列Aの一
次元目の要素IがテンプレートTの二次元目の要素2*I
に、配列Aの二次元目の要素JがテンプレートTの一次元
目の要素J+1にそれぞれ対応するような整列は、次のよ
うに記述される。
法を指定することによって決定される。この切り分ける
方法には、テンプレートのある次元を連続した要素から
成るブロックに均一に切断し、それぞれのブロックを一
つの物理プロセッサに配置するブロック分散や、テンプ
レートのある次元を一要素ずつラウンドロビン式に物理
プロセッサに配置するサイクリック分散などがある。
ロック分散は、次のように記述される。
FではREDISTRIBUTEまたはREALIGN指示文によって記述す
る。
述する。
計算分割がある。計算分割によって、ループのイタレー
ションは各プロセッサに割り当てられ、各プロセッサが
割り当てられたイタレーションを実行することで並列実
行が達成される。計算分割も、データ分割と同様に、整
列と分散の2段階の写像で考えられる。すなわち、計算
分割は、あるループのイタレーションと対応づけるテン
プレートの次元と要素を指定することによって決定され
る。
は、例えばKen Kennedy, Ulrich Kremer 著の "Automat
ic Data Layout for High Performance Fortran", Proc
eedings of the 1995 ACM/IEEE Supercomputing Confer
ence, December 3-8, 1995, San Diego Convention Cen
ter, San Diego, CA, USA, ACM Press and IEEE Comput
er Society Pressに示されるように、ユーザが記述した
逐次プログラムから、分散メモリ型並列計算機で動作す
る並列プログラムを生成するために用いられている。
方法は、ユーザが記述した逐次Fortranプログラムに対
して自動的にデータ分割を行い、HPFで記述された等価
な並列プログラムを生成する方法である。図16を参照
して、自動データ分割方法の動作について説明する。
ranプログラムは、解析の単位であるフェーズに分割さ
れる(ステップ1501)。次に、各フェーズに対して、分割
の候補を求める(ステップ1502)。次に、ステップ1502で
求めた各々の分割の候補に対し、フェーズの実行時間を
予測する(ステップ1503)。最後に、0-1整数計画法によ
って、最適な分割を決定する(ステップ1504)。
プログラム生成方法では、次のような問題がある。
るため、コンパイル時に利用することが難しいことであ
る。その理由は、各分割の評価値として性能予測の結果
を用いていることと、最適な分割を決定するのに0-1整
数計画法を用いているためである。
割がユーザによって既に指定されている逐次プログラム
に対して、残りのデータの分割を自動的に決定すること
によって並列プログラムを生成することができないこと
である。その理由は、分散が指定されているデータが存
在する場合に、それを満たしつつ他のデータの分割の候
補を求めることができないためである。
とする課題は、高速に自動データ分割を行う並列プログ
ラム生成方法を提供することにある。
に対する分割がユーザによって既に指定されている逐次
プログラムに対して、それを満たしつつ残りのデータの
分割を自動的に決定することによって並列プログラムを
生成する並列プログラム生成方法を提供することにあ
る。
ため、本発明は以下のような並列プログラム生成方法、
並列プログラム生成コンパイラを記録した記録媒体、お
よび情報処理装置を提供する。
は、自動的にデータ分割を行う並列プログラム生成方法
において、ノードが配列のアクセスに対応し、エッジが
その両端のノードのアクセスの間に整列関係が定義でき
ることを示す非巡回有向グラフである整列グラフを参照
して、並列ループにおける分割の候補を求める段階と、
CALL文または予め定められた条件を満たす多重ルー
プに対応するノードと、ノード間の制御の流れを表すエ
ッジとからなる有向グラフであるコントロールフローグ
ラフを参照して、分割の衝突を解決するための再分割を
生成する段階とを含むことを特徴とする並列プログラム
生成方法である。
割の配列要素の配置の状態と、第2の分割の配列要素の
配置の状態とを比較し、互いに異なる場合、第1および
第2の分割の衝突があると判定することにしてもよい。
グラム生成方法は、自動的にデータ分割を行う並列プロ
グラム生成方法において、並列ループ内の配列のアクセ
スパターンを元に生成された整列関係を表すグラフか
ら、そのループにおける分割候補を生成する分割候補生
成段階と、CALL文または予め定められた条件を満た
す多重ループに対応するノードと、ノード間の制御の流
れを表すエッジとからなる有向グラフであるコントロー
ルフローグラフ上で優先順位の高いエッジに沿って分割
の決定と分割の衝突の解決を行う分割選択段階と、プロ
セッサへの配列要素の配置の状態によって分割の衝突の
有無を判定する分割衝突判定段階とを含むことを特徴と
する並列プログラム生成方法である。
ータ分割を行う並列プログラム生成プログラムを記録し
たコンピュータ読み取り可能な記録媒体である。この並
列プログラム生成プログラムは、ノードが配列のアクセ
スに対応し、エッジがその両端のノードのアクセスの間
に整列関係が定義できることを示す非巡回有向グラフで
ある整列グラフを生成する処理と、整列グラフを参照し
て、並列ループにおける分割の候補を求める処理と、C
ALL文または予め定められた条件を満たす多重ループ
に対応するノードと、ノード間の制御の流れを表すエッ
ジとからなる有向グラフであるコントロールフローグラ
フを生成する処理と、コントロールフローグラフを参照
して分割の衝突を解決するための再分割を生成する処理
とをコンピュータに実行させる。
1の分割の配列要素の配置の状態と、第2の分割の配列
要素の配置の状態とを比較し、互いに異なる場合、第1
および第2の分割の衝突があると判定する処理をコンピ
ュータに実行させることにしてもよい。
は、自動的にデータ分割を行う並列プログラム生成プロ
グラムを記録したコンピュータ読み取り可能な記録媒体
において、並列ループ内の配列のアクセスパターンを元
に生成された整列関係を表すグラフから、そのループに
おける分割候補を生成する分割候補生成処理と、CAL
L文または予め定められた条件を満たす多重ループに対
応するノードと、ノード間の制御の流れを表すエッジと
からなる有向グラフであるコントロールフローグラフ上
で優先順位の高いエッジに沿って分割の決定と分割の衝
突の解決を行う分割選択処理と、プロセッサへの配列要
素の配置の状態によって分割の衝突の有無を判定する分
割衝突判定処理とをコンピュータに実行させることを特
徴とする並列プログラム生成プログラムを記録した記録
媒体である。
ム生成プログラムを含むコンパイラを記録したコンピュ
ータ読み取り可能な記録媒体を提供する。更に、これら
の並列プログラム生成プログラムやコンパイラを記録し
た記録媒体を格納した情報処理装置を提供する。
成方法、プログラムを記録した記録媒体、情報処理装置
は、整列グラフを使って各ループを実行するのに最適な
分割を求め、次に、コントロールフローグラフを使っ
て、分割の衝突を解決するための再分割を生成する。よ
り具体的には、ユーザによる分割の指定が全くない、ま
たは一部の配列に分割の指定がないプログラムに対し
て、各ループ内での配列のアクセスのされ方を元に配列
の整列関係の可能性を表す整列グラフを生成し、整列グ
ラフを解析して得られた情報からそのループを実行する
のに最適な分割の候補を求める分割候補生成部(図1の
106)と、コントロールフローグラフ, コールフロー
グラフおよび分割候補生成部で求められた分割候補を元
に、プログラムの実行時に起きる、手続き内および手続
き間の再分割処理の回数が最小になるように各ループの
分割を選択し、必要な再分割を挿入する分割選択部(図
1の107)を有する。
方法、プログラムを記録した記録媒体、情報処理装置
は、プロセッサへの配列要素の配置の状態が異なる場合
に、分割の衝突があると判定する。より具体的には、プ
ロセッサへの配列要素の配置の状態を調べて分割の衝突
の有無を判定する分割衝突判定部1214を有する。
可能性を表す有向エッジと、オフセットのみが異なる複
数のアクセスを表すノードで構成され、一つのノードに
含まれる異なるアクセスの個数をそのノードの重みとす
るような整列グラフをループ毎に生成し、出次数が0
で、かつ接続するノードの重みの合計が最大になるよう
なノードに対応する配列を、ループおよび他の配列のテ
ンプレートとすることによって、そのループを実行する
際に必要なデータ転送を最小にする分割候補を生成す
る。
ローグラフ上の一つのエッジに注目し、そのエッジによ
って接続される2つのノードに対して分割候補生成段階
(処理)で生成された分割候補を比較して、必要な再分
割の個数が最小となるように各ループにおける分割を決
定する処理を、より実行回数の多いエッジから順に適用
することによって、0-1整数計画法を用いる従来法に比
べて少ない処理時間で、プログラムの実行時に必要な再
分割の回数を削減する。
への配列要素の配置の状態を調べることで、より厳密に
分割の衝突の有無を判定し、実行時に起こる再分割の回
数を削減する。
の形態は、逐次プログラム101を入力され、分散メモ
リ型並列計算機上で動作する並列プログラム110を出
力する。本発明では、逐次プログラムは、再帰呼び出し
のある手続きを含まないとする。
グラム101の構文解析を行う。
列化判定, コントロールフローグラフの生成およびコー
ルフローグラフの生成を行う。
部106と分割選択部107から成り、分割を指定され
ていないデータの分割を決定する。
3を生成し、各ループブロックに対する分割候補を求め
る。
6で生成された分割候補から分割を選択する。
分割と計算分割にしたがい、データ転送の生成などの並
列化のための各種処理を行う。並列化処理部108は、
隣接プロセッサから分割境界の要素を受け取ったり、隣
接プロセッサへ分散境界の要素を送ったりするシフト転
送を検出,生成できるものとする。一般に、シフト転送
は、分割を変更するために必要な転送に比べると、要す
る時間は短い。また、手続きの入口に、分割選択部10
7によって各手続きに対して決定された初期分割を実現
するコードを生成する。また、分割選択部107によっ
てコントロールフローグラフ111のエッジに再分割が
設定されている場合、エッジに対応する位置に再分割を
実行するコードを生成する。
0を出力する。
ついて説明する。コントロールフローグラフは手続き毎
に作られる。コントロールフローグラフのノードは、CA
LL文または次の条件を満たす多重ループに対応する。す
なわち、タイトな多重ループであり、かつ多重ループの
いずれかは並列化可能であり、かつ多重ループの外側に
並列化可能なループが存在しないことがその条件であ
る。コントロールフローグラフのエッジは、ノードの間
の制御の流れを表したものである。また、コントロール
フローグラフは、一つのダミーノードを含み、このダミ
ーノードから手続きの入口のノードへエッジを張り、出
口のノードからダミーノードへエッジを張る。ただし、
メインプログラムの出口のノードからダミーノードへ張
られたエッジはあらかじめ処理済みとしておき、分割選
択部において処理対象としない。また、各エッジの優先
順位とは、プログラムの実行時にそのエッジに沿って制
御が流れる回数である(ダミーノードに対して張られた
エッジの優先順位は1とする)。
る。整列グラフは非巡回有向グラフであり、一つの並列
化可能ループ(以下、並列ループ)中の配列のアクセスの
パターンにもとづいて生成される。
字式のことをいう。本発明では、添字式が、並列ループ
の制御変数の線形式である場合のみを考える。そのよう
な添字式において、並列ループの制御変数にかかる係数
をストライド、定数項をオフセットと呼ぶ。例えば、I
を並列ループの制御変数とすると、配列アクセスA(2*I+
1)のストライドは2、オフセットは1となる。
対応して生成される。このとき、ある配列に対する同一
のストライドのアクセスは、オフセットが異なっていて
も同一のノードで表現される。何故なら、同じストライ
ド, 異なるオフセットのアクセスに対して必要となるデ
ータ転送は、シフト転送を使うことによって、分割を変
更することなく実現できるためである。また、ノードが
含むアクセスの個数を、そのノードの重みとする。例え
ば、A(I), A(I+1), A(I-1)は、全て同一のノードで表現
され、そのノードの重みは3となる。以下では、配列Xの
ストライドaのアクセスに対する整列グラフのノード
を、X.aと表す。
ードのアクセスの間に整列関係が定義できることを示
す。すなわち、ノードX.aとノードY.bにおいて、a=b*h
(hは整数)が成り立つとき、ノードY.bからノードX.aへ
のエッジを生成する。ただし、同一の配列に対するノー
ドの間にはエッジは生成しない。また、エッジのソース
側のノードの重みをそのエッジの重みとする。
指定されている配列が存在する場合、その配列に対応す
るノードから出るエッジを生成しない。同様に、ユーザ
によって整列が指定されている配列Xが存在する場合、
その整列を !HPF$ ALIGN X(I) WITH T(a*I+b) とすると、ノードX.kに対して、ノードT.(k*a)が存在し
なければこれを生成し、ノードX.kからT.(k*a)へのエッ
ジを生成する。
いて詳細に説明する。
が残っているか否かを判定する。
プに対して整列グラフを生成する。
テンプレートを選択し、その分散方法を決定する。すな
わち、整列グラフにおいて出次数が0であるノードのう
ち、そのノードへ入るエッジの重みの合計にそのノード
の重みを加えた値(以下、ターゲット重みと呼ぶ)が最大
のものに含まれるオフセットのうち出現回数が最大のも
のをテンプレートに選択する。
る各データの整列方法を決定する。すなわち、ノードX.
aがテンプレートに選択され、このノードに含まれるオ
フセットのうち、出現回数が最大のものをbとすると
き、ノードY.c (a=c*h, hは整数とする)に対し、次のよ
うな整列に決定する(ノードY.cに含まれるオフセットの
うち、出現回数が最大のものをdとする)。
スされているために、その配列に対応するノードが複数
個存在すれば、そのうち最大の重みを持つノードに対す
る整列に決定する。
合、並列ループの制御変数が現れる次元以外は、分割候
補として、全プロセッサへの複製を選択する。
それぞれX(Lx:Ux:Sx),Y(Ly:Uy:Sy)としたとき、h*Ly-(d
-h*b) < Lx または Ux < h*Uy-(d-h*b) であれば、Y の
宣言範囲の全ての要素に対しては整列を定義することが
できない。このような場合には、以下のように複製を分
割候補に選択する。
にエッジが存在しないノードに対しても複製を分割候補
に選択する。
補選択部の動作について詳細に説明する。
手続きに対して分割選択サブルーチンを呼び出す。
作を示す。
グラフの各ノードに、分割候補生成部で生成された分割
候補を関連づける。
に未処理の手続きを呼ぶCALL文があるか否かを判定す
る。
る未処理の手続きに対して、再帰的に分割選択サブルー
チンを呼び出す。
ードに、そのCALL文で呼び出される手続きの初期分割を
関連づける。
持つ並列ループを含むノードの分割候補から、そのルー
プを実行するのにもっとも効率の良い分割を選択し、こ
のノードを処理済みとする。ここで、ループの優先順位
とは、ループ中に現れる配列のアクセスの個数とループ
の繰り返し回数の積のことをいう。
ードに接続された未処理のエッジのうち、優先順位が最
も大きいものを一つ選択する。ここで、選択されたエッ
ジをE, Eに接続する処理済みのノードをN1とする。
の、ノードN1の反対側に接続されたノード(N2とする)が
未処理か否かを判定する。
分割候補から、ノードN1の分割と衝突する個数が最小に
なるものを選択し、ノードN2を処理済みとする。また、
ノードN1に現れるがノードN2には現れない配列がある場
合、この配列に対してノードN1において決定された分割
をノードN2に伝搬させる(ノードN2の分割の中に含め
る)。ここで、分割が衝突するとは、分散または整列が
指定されている次元が異なるか、整列のテンプレートま
たはストライドが異なっていることをいう。
を比較し、衝突があれば、エッジEに衝突を解消する再
分割を設定し、エッジEを処理済みとする。
済みが否かを判定する。
グラフ生成時に導入したダミーノードに設定されている
分割を現在の手続きの初期分割に設定し、現在の手続き
を処理済みとする。
動作を説明する。
示す。次の二重ループを含むプログラムを考える。
存解析を行い、IループとJループがともに並列化可能で
あると判定する。
に対して、図6に示す整列グラフが生成される。
テンプレートが決定される。ここでは、出次数が0であ
るノードF.4とE.3のうち、F.4のターゲット重みは7、E.
3のターゲット重みは3であるため、F.4をテンプレート
に選択する。
候補が決定される。
グラフが生成される。 次に、ステップ203におい
て、ループのテンプレートが決定される。ここでは、出
次数が0であるノードはD.4だけなので、これをテンプレ
ートに選択する。
される。ここで、配列Cに対応するノードとして、C.2と
C.1の2つがあるので、重みの大きいC.2に対する整列を
生成する。生成される分割候補は、次のようになる。
存解析を行い、Iループが並列化可能であると判定す
る。
グラフを生成する。配列Aはユーザによって整列が指定
されているが、ノードA.2に対しノードD.4が整列グラフ
に含まれているため特別な処理は行わない。配列Bはユ
ーザによって整列が指定されており、そのテンプレート
Fはループ中でアクセスされない。したがって、ノード
B.1に対応して、ノードF.2を生成する。Fはテンプレー
トであるため、ノードF.2から出るエッジは生成しな
い。配列Cはユーザによってテンプレートとして分散を
指定されている。したがって、整列グラフ中でCに対応
するノードから出るエッジは生成しない。
テンプレートが決定される。ここでは、出次数が0であ
るノードC.2, D.4, F.2のうち、C.2のターゲット重みは
4、F.2のターゲット重みは3、D.4のターゲット重みは4
であるため、ノードC.2またはノードD.4をテンプレート
に決定する。ここでは、D.4を選択する。
分割を指定されていない配列B, Eに対して分割候補が生
成される。ここで、配列Eの宣言範囲E(1:300:1)に対し
てDに対する整列を定義することができないので、生成
される分割候補は次のようになる。
の例を示す。
示すコントロールフローグラフを生成する。各ノード
は、図9のプログラムの中で同じ番号をつけたループま
たはCALL文に対応する。ノードD1は、ダミーノードを示
す。エッジに付けられた数字は、そのエッジの優先順位
である。メインプログラムのダミーノードに入るエッジ
1006は処理済みにしておく。
は次の分割候補を生成する。この例では、テンプレート
の分割次元はブロック分散している。
ムに対して、分割選択サブルーチンが呼び出される。
呼び出すCALL文を含むため、ステップ403において、
手続きSUBに対して、分割選択サブルーチンが呼び出さ
れる。
最大の優先度を持つノード6に対して分割を選択する。
ここでは、繰り返し回数の多いIループに対する分割候
補(1)が選択されたとする。
7,1008の優先度は同じであるため、ステップ502にお
いてはそのいずれかが選択される。ここでは、エッジ10
07が選択されたとする。
5は未処理であるため、ステップ504では、先にノー
ド6に対して決定した分割候補(1)に対して、必要な再分
割が最小になる分割候補(1)をノード5の分割に決定す
る。
端のノード5, 6の分割を比較し、以下の再分割を生成す
る。
506からステップ502に処理が移る。
6に接続された未処理のエッジ1008,1009から、エッジ10
08が選択される。
は未処理であるため、ステップ503からステップ50
5へ処理が移る。
は存在しない。したがって、ステップ505では、ノー
ド6の分割を伝搬させて、ノードD2の分割を以下のよう
に決定する。
プ505では何もしない。
506からステップ502に処理が移る。
6,D2に接続された未処理のエッジ1009が選択される。
であるため、ステップ503からステップ505に処理
が移る。
ジ1009の両端のノード5,D2の分割を比較し、以下の再分
割を生成する。
からステップ507に処理が移る。
割を、手続きSUBの初期分割に設定し、手続きSUBを処理
済みとして、RETURNする。
のような分割が挿入される。
プ402に制御が戻り、未処理の手続きを呼ぶCALL
文はないので、ステップ404において、ノード3の分
割を次のように設定する。
る。
ム内で最大の優先度を持つノード4に対して、分割を選
択する。ここでは、繰り返し回数の多いIループに対す
る分割候補(1)が選択されたとする。
に接続されたエッジ1003,1005の中から、最も優先度の
大きいエッジ1005を選択する。
3は未処理であるため、ステップ503からステップ5
04に制御が移る。
ステップ504では何もしない。
ノード3, 4の分割を比較し、以下の再分割を生成する。
ップ506からステップ502に処理が移る。
4に接続された未処理のエッジ1003,1004から、エッジ10
04が選択される。
は未処理であるため、ステップ503からステップ50
4へ処理が移る。
して、必要な再分割が最小になる分割候補(1)をノード2
の分割に決定する。
ノード2, 3の分割を比較し、以下の再分割を生成する。
06からステップ502に処理が移る。
3,4に接続された未処理のエッジ1002,1003から、エッジ
1003が選択される。
処理済みであるため、ステップ503からステップ50
5に処理が移る。
ジ1003の両端のノード4,2の分割を比較し、以下の再分
割を生成する。
からステップ502に処理が移る。
3,4に接続された未処理のエッジ1002が選択される。
は未処理であるため、ステップ503からステップ50
4へ処理が移る。
して、必要な再分割が最小になる分割候補(2)をノード1
の分割に決定する。また、分割候補(2)には配列Aの分割
は含まれないのでノード2から伝搬させる。
ジ1002の両端のノード1,2の分割を比較し、以下の再分
割を生成する。
テップ502に処理が移る。
2,3,4に接続された未処理のエッジ1001が選択される。
は未処理であるため、ステップ503からステップ50
4へ処理が移る。
は存在しない。したがって、ステップ504では、ノー
ド1の分割を伝搬させて、ノードD2の分割は次のように
決定する。
プ505では何もしない。
テップ506からステップ507に処理が移る。
割を、メインプログラムの初期分割に設定し、メインプ
ログラムを処理済みとして、RETURNする。
図11のような分割指示が挿入される。
ぶCALL文はないので、処理を終了する。
説明する。
の形態は、分割選択部1207が、分割衝突判定部1214を有
する点で異なる。
に衝突しているか否かを判定する。第1の実施の形態で
は、分散または整列が指定されている次元が異なるか、
整列のテンプレートまたはストライドが異なっている場
合に分割の衝突が生じているとした。しかし、実際に
は、このような場合にも、プロセッサへの配列要素の配
置の状態は同じであることがある。例えば、次のような
宣言と分割: REAL A(100), B(100), C(100) !HPF$ DISTRIBUTE B(BLCOK) !HPF$ DISTRIBUTE C(BLOCK) を持つ配列A,B,Cに対して、配列Aに対する次の2つの整
列: !HPF$ ALIGN A(I) WITH B(I) !HPF$ ALIGN A(I) WITH C(I) が指定するAの要素の配置は同じである。このように、
分散または整列が指定されている次元が異なるか、整列
のテンプレートまたはストライドが異なっている場合で
も、配列要素の実際の配置の状態が同じであれば、分割
衝突判定部1214は分割の衝突はないと判定する。
め説明を省略する。分割選択部のステップ504および
505において分割の衝突を判定するとき、分割衝突判
定部1214に問い合わせを行い、その結果に従う。
プログラムを用いて説明する。
ロールフローグラフを生成する。各ノードは、上のプロ
グラムの中で同じ番号をつけたループに対応する。ノー
ドDは、ダミーノードを示す。エッジに付けられた数字
は、そのエッジの優先順位である。メインプログラムの
ダミーノードに入るエッジ1302は処理済みにしておく。
次の分割候補を生成する。
ムに対して、分割選択サブルーチンが呼び出される。
プ501へ処理が移る。
持つノード2に対して、分割を選択する。
に接続されたエッジ1301が選択される。
1は未処理であるため、ステップ504では、ノード1の
分割候補を選択する。
端のノード1, 2の分割の衝突の有無を分割衝突判定部12
14に問い合わせる。その結果、衝突はないことがわかる
ので、再分割は生成しない。
506からステップ502に処理が移る。
2に接続された未処理のエッジ1303が選択される。
は未処理であるため、ステップ503からステップ50
5へ処理が移る。
は存在しない。したがって、ステップ505では、ノー
ド1の分割を伝搬させて、ノードDの分割を以下のように
決定する。
505では何もしない。
テップ506からステップ507に処理が移る。
割を初期分割に設定し、メインプログラムを処理済みと
して、RETURNする。
次のような分割が挿入される。
いので、処理を終了する。
配列要素の配置の状態を調べることによって、配列の分
割の衝突の有無を判定する。これにより、より厳密に分
割の衝突を判定することが可能になり、生成される再分
割の数を削減することができる。
ンパイル時に利用することが可能なことである。
法を用いて分割の衝突の解決を行っていたのに対し、本
発明では、コントロールフローグラフを用いた簡便な方
法によって、生成されるプログラムの効率を大きく低下
させることなく、短い処理時間を達成できるからであ
る。また、従来手法では、分割候補の評価値として実行
時間予測の結果を用いていたのに対し、本発明では、整
列グラフ上での接続関係に基づく評価値を用いることに
よって、生成されるプログラムの効率を大きく低下させ
ることなく、短い処理時間を達成できるからである第2
の効果は、ユーザによって一部の配列にのみ分割が指定
されている場合に、その分割を満たしつつ効率のよい実
行が可能になるように、他の配列に対して分割を生成す
ることが可能なことである。
エッジとノードをあらかじめ整列グラフに加えておけ
ば、その分割を満たしつつ、その他の配列に対する最適
な分割を求めることができるからである。
判定できることにある。
置の状態によって、分割の衝突を判定するからである。
ク図である。
動作を示す流れ図である。
を示す流れ図である。
る分割選択サブルーチンの動作を示す流れ図の一部であ
る。
る分割選択サブルーチンの動作を示す流れ図の一部であ
る。
生成される整列グラフの例である。
生成される整列グラフの例である。
生成される整列グラフの例である。
すための逐次プログラムの例である。
されるコントロールフローグラフの例である。
示すための並列プログラムの例である。
示すための並列プログラムの例である。
ック図である。
されるコントロールフローグラフの例である。
Claims (8)
- 【請求項1】 自動的にデータ分割を行う並列プログラ
ム生成方法において、 ノードが配列のアクセスに対応し、エッジがその両端の
ノードのアクセスの間に整列関係が定義できることを示
す非巡回有向グラフである整列グラフを参照して、並列
ループにおける分割の候補を求める段階と、 CALL文または予め定められた条件を満たす多重ルー
プに対応するノードと、ノード間の制御の流れを表すエ
ッジとからなる有向グラフであるコントロールフローグ
ラフを参照して、分割の衝突を解決するための再分割を
生成する段階とを含むことを特徴とする並列プログラム
生成方法。 - 【請求項2】 請求項1に記載の並列プログラム生成方
法において、第1の分割の配列要素の配置の状態と、第
2の分割の配列要素の配置の状態とを比較し、互いに異
なる場合、第1および第2の分割の衝突があると判定す
ることを特徴とする並列プログラム生成方法。 - 【請求項3】 自動的にデータ分割を行う並列プログラ
ム生成方法において、 並列ループ内の配列のアクセスパターンを元に生成され
た整列関係を表すグラフから、そのループにおける分割
候補を生成する分割候補生成段階と、 CALL文または予め定められた条件を満たす多重ルー
プに対応するノードと、ノード間の制御の流れを表すエ
ッジとからなる有向グラフであるコントロールフローグ
ラフ上で優先順位の高いエッジに沿って分割の決定と分
割の衝突の解決を行う分割選択段階と、 プロセッサへの配列要素の配置の状態によって分割の衝
突の有無を判定する分割衝突判定段階とを含むことを特
徴とする並列プログラム生成方法。 - 【請求項4】 自動的にデータ分割を行う並列プログラ
ム生成プログラムを記録したコンピュータ読み取り可能
な記録媒体において、 ノードが配列のアクセスに対応し、エッジがその両端の
ノードのアクセスの間に整列関係が定義できることを示
す非巡回有向グラフである整列グラフを生成する処理
と、 前記整列グラフを参照して、並列ループにおける分割の
候補を求める処理と、CALL文または予め定められた
条件を満たす多重ループに対応するノードと、ノード間
の制御の流れを表すエッジとからなる有向グラフである
コントロールフローグラフを生成する処理と、 前記コントロールフローグラフを参照して分割の衝突を
解決するための再分割を生成する処理とをコンピュータ
に実行させることを特徴とする並列プログラム生成プロ
グラムを記録した記録媒体。 - 【請求項5】 請求項4に記載の記録媒体において、当
該記録媒体に記録された前記並列プログラム生成プログ
ラムは、第1の分割の配列要素の配置の状態と、第2の
分割の配列要素の配置の状態とを比較し、互いに異なる
場合、第1および第2の分割の衝突があると判定する処
理をコンピュータに実行させることを特徴とする記録媒
体。 - 【請求項6】 自動的にデータ分割を行う並列プログラ
ム生成プログラムを記録したコンピュータ読み取り可能
な記録媒体において、 並列ループ内の配列のアクセスパターンを元に生成され
た整列関係を表すグラフから、そのループにおける分割
候補を生成する分割候補生成処理と、 CALL文または予め定められた条件を満たす多重ルー
プに対応するノードと、ノード間の制御の流れを表すエ
ッジとからなる有向グラフであるコントロールフローグ
ラフ上で優先順位の高いエッジに沿って分割の決定と分
割の衝突の解決を行う分割選択処理と、 プロセッサへの配列要素の配置の状態によって分割の衝
突の有無を判定する分割衝突判定処理とをコンピュータ
に実行させることを特徴とする並列プログラム生成プロ
グラムを記録した記録媒体。 - 【請求項7】 請求項4ないし6のいずれかに記載の記
録媒体に記録された並列プログラム生成プログラムを含
むコンパイラを記録したコンピュータ読み取り可能な記
録媒体。 - 【請求項8】 請求項4ないし7のいずれかに記載の記
録媒体を格納した情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11160973A JP2000347879A (ja) | 1999-06-08 | 1999-06-08 | 並列プログラム生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11160973A JP2000347879A (ja) | 1999-06-08 | 1999-06-08 | 並列プログラム生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000347879A true JP2000347879A (ja) | 2000-12-15 |
Family
ID=15726166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11160973A Pending JP2000347879A (ja) | 1999-06-08 | 1999-06-08 | 並列プログラム生成方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2000347879A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9250880B2 (en) | 2013-11-25 | 2016-02-02 | International Business Machines Corporation | Method for obtaining execution frequency information on execution paths in control flow graph, and computer and computer program for obtaining the information |
US11226798B2 (en) | 2019-02-04 | 2022-01-18 | Fujitsu Limited | Information processing device and information processing method |
-
1999
- 1999-06-08 JP JP11160973A patent/JP2000347879A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9250880B2 (en) | 2013-11-25 | 2016-02-02 | International Business Machines Corporation | Method for obtaining execution frequency information on execution paths in control flow graph, and computer and computer program for obtaining the information |
US11226798B2 (en) | 2019-02-04 | 2022-01-18 | Fujitsu Limited | Information processing device and information processing method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5787284A (en) | Improving memory layout based on connectivity considerations | |
US5193190A (en) | Partitioning optimizations in an optimizing compiler | |
US5889999A (en) | Method and apparatus for sequencing computer instruction execution in a data processing system | |
US5852734A (en) | Method and compiler for parallel execution of a program | |
JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
US5790862A (en) | Resource assigning apparatus which assigns the variable in a program to resources | |
Hall et al. | Interprocedural transformations for parallel code generation | |
US20040003381A1 (en) | Compiler program and compilation processing method | |
US6550059B1 (en) | Method for generating optimized vector instructions from high level programming languages | |
JP2006509275A (ja) | シストリックソルバを作成するシステムおよび方法 | |
JPH09282179A (ja) | オーバーヘッド命令を最小限にする最適化コンパイラにおける命令スケジューリングの方法および装置 | |
US5797012A (en) | Connectivity based program partitioning | |
US20080082805A1 (en) | Automated synthesis apparatus and method | |
Carreras et al. | A co-design methodology based on formal specification and high-level estimation | |
JPH0738158B2 (ja) | コード最適化方法およびコンパイラ・システム | |
US20060010432A1 (en) | Program and apparatus for translating language, and program converting method | |
JP2000347879A (ja) | 並列プログラム生成方法 | |
Kolson et al. | Elimination of redundant memory traffic in high-level synthesis | |
Kessler | Pattern-driven automatic program transformation and parallelization | |
JP3196625B2 (ja) | 並列化コンパイル方式 | |
Zhuang et al. | A framework for parallelizing load/stores on embedded processors | |
Wu et al. | Copy propagation optimizations for VLIW DSP processors with distributed register files | |
JPH04307624A (ja) | ループ最適化方法及び装置 | |
JP2003256214A (ja) | 配列拡張によるループ変換方法 | |
JP3233467B2 (ja) | プログラム変換方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20050512 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060529 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060607 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060807 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061025 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061225 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070322 |