_
HQTZZ:5+<'Z HQT[[;5+<'[
WW=Z[?=[?W=Z?=[?
図 .3? 現時点における '!( の実行制約条件
を用いたワークフローおよび実行例
この章では, '!( を用いたワークフローおよび実行例を示す.
を用いたワークフロー
'!( の実行中の画面表示を図.8に示し ,現時点での '!( を用いた 場合の,上の '!( 環境,ユーザ,および '!( の支援ライブラリ のワークフローを下記に示す.
ユーザ
9.: プログラムのどの部分が実行時間を多く消費しているかを知るために,実行時 間解析機能を呼び出し実行時間を計測する.
9/: 実行時間解析機能から提示された実行時間を基に,並列化したいプログラム部 分を選択し, '!( へ並列性解析の要求を行なう.
90: '!( からの解析結果をもとに下記の作業を行なう
9&: メッセージ解析関数を使用し ,支援機能が表示している情報が指し示し ているプログラム行を表示させる.
9 : サブウインド ウ上の支援メッセージをもとに,並列化のための! ( ディレクティブ挿入,または並列性阻害要因解消のためにデ ィレクティ ブを用いるかディレクティブ挿入によってプログラムリストラクチャリ ングの指示を行なうもしくは手動でプログラムを変更する.
&2$/上の 環境
9.: 支援開始時:支援機能実行関数は,支援ライブラリ内の支援関数を管理する シェルスクリプトを実行し,実行によって標準出力より得られた情報をサブウ インド ウ上に表示する.
9/: 支援終了後:メッセージ解析関数は,ユーザの要求に従ってサブウインド ウ上 のメッセージから情報を解析し ,メインウインド ウ上のプログラム行を指し 示す.
を用いたワークフローおよび実行例 1/
支援ライブラリ
. 並列性解析時
9.: 支援開始時:支援ライブラリは,メインウインド ウ上のソースプログラ ムを,-コンパイラでプリプロセッサ処理まで行ない,その後-$を 用いて;K -に変換する.
9/: 支援関数は9.:の;K-を解析し,下記のような解析結果を標準 出力へ表示する.
9&: 並列化可能な場合:! ( ディレクティブ作成機能を用いて適切 なデ ィレクティブを作成し表示する.
9 : 並列化不可能な場合:並列化阻害要因として依存解析の結果を表示 する.もし ,ユーザが並列性阻害要因を解消し うるプログラム特性 をデ ィレクティブで提示してきた場合にはその知識を加味しながら 並列性解析を行なう.
/ 実行時間解析時
9.: 支援開始時:支援ライブラリは,メインウインド ウ上のソースプログラ ムを,-コンパイラでプリプロセッサ処理まで行ない,その後-$を 用いて;K -に変換する.
9/: 支援関数は9.:の;K -を解析し,下記のような事を行なう.
9&: プログラム中から関数を見つけ出しその関数に実行時間取得関数を 埋め込む,
9 : プログラム中からループを見つけ出しそのループに実行時間取得 関数を埋め込む,
90: 支援関数は9/:の;K-を逆コンパイルし-のソースコード へ変 換させる,
91: 支援関数は90:のコード をユーザがコンパイルして実行した後出力された 実行時間計測結果のファイルを用いて集計し時間の掛かっているプログ ラム部分を提示する.
0 プログラムリストラクチャリング時
9.: 支援開始時:支援ライブラリは,メインウインド ウ上のソースプログラ ムを,-コンパイラでプリプロセッサ処理まで行ない,その後-$を 用いて;K -に変換する.
9/: 支援関数は9.:の;K -を解析し,下記のような事を行なう.
9&: プログラム中からリストラクチャリングの指示を見つけ出しその指 示通りプログラムをリストラクチャリングする,
9 : リストラクチャしたプログラムを標準出力へ表示する,
図 .8? '!( の実行時画面例
を用いたワークフローおよび実行例 11
の実行例
'!( の実行例として図.4$図/3を示す.
まず,,を起動させ9図.4:,
図 .4? '!( の実行の一例9,起動時:
'!( を起動させる9図.5:.
図 .5? '!( の実行の一例9 '!( 起動指示:
を用いたワークフローおよび実行例 18
するとウインド ウが上下/つに別れ,下部を '!( のサブウインド ウとする
9図.6:.
図 .6? '!( の実行の一例9 '!( 起動時:
次に実行時間解析機能を呼び出し9図/7:,
図 /7? '!( の実行の一例9実行時間計測結果の表示の指示:
を用いたワークフローおよび実行例 15
実行時間解析機能を用いて解析した結果を提示させる9図/.:.その結果16行目 のループがこのプログラムの中で一番実行時間が掛かっているループであるこ とがわかる.
図 /.? '!( の実行の一例9実行時間計測結果の提示:
次に並列性解析を行い,この行に対する並列性解析結果を得る9図//:.すると,
16行目のループにはフロー依存もしくは逆依存と呼ばれるデータ参照の依存関 係が存在することがわかった.ユーザはこの並列性阻害要因を取り除くための情報 を持っていないのでこの行でのループ並列化を行なうことを断念する.
図 //? '!( の実行の一例9依存発見:
を用いたワークフローおよび実行例 37
一方,図/0の場合では,16行目のループの内側ループに当たり,且つ実行時間を多 く消費している33行目のループでは並列性を阻害する要因がなかったため,! ( ディレクティブ作成機能がそのループ部分に対する適切な! ( ディレクティブ を提示している.
図 /0? '!( の実行の一例9適切な! ( デ ィレクティブの提示:
ユーザはその結果を見て並列化することを決定し ,E の! ( デ ィレ クティブ挿入機能を使用して! ( デ ィレクティブを挿入する9図/1/3:.
図 /1? '!( の実行の一例9挿入の確認:
図 /3? '!( の実行の一例9! ( デ ィレクティブ挿入:
を用いたワークフローおよび実行例 3/
'!( の別の実行例として図/8$図/5を示す.
図.6のように '!( を呼び出し,プログラムリストラクチャリング機能を 呼び出す9図/8:.
図 /8? '!( の実行の一例9リストラクチャの指示:
すると図/4のようにメッセージ中に変換後のプログラム部分が提示される.
図 /4? '!( の実行の一例9リストラクチャされたコード の提示:
を用いたワークフローおよび実行例 31
現時点ではユーザはこの変換されたコード をコピー アンド ペーストし,元の プログラム部分をコメントアウトすることでリストラクチャされたコード を挿入す ることができる9図/5:.
図 /5? '!( の実行の一例9リストラクチャされたコード の挿入と元の文のコ メントアウト:
'!( のもうひとつの実行例として図/6$図0.を示す.
図/6では,並列性解析によって,.8行目の配列 の番地参照に配列が使われて いることが提示されている.
図 /6? '!( の実行の一例9配列の間接参照の発見:
を用いたワークフローおよび実行例 38
もし,ユーザがこの配列 の番地参照に使用されている配列-が重複順列ではな いということがわかっているならば図07のように '!( にその旨をデ ィレク ティブを使用して伝える.
図 07? '!( の実行の一例9ユーザのデ ィレクティブの挿入による知識提供:
そしてもう一度並列性解析を行なう.すると '!( はそれを解釈してほかに 並列化阻害要因がなかったのでこの部分を並列化可能と判断しユーザに提示した9図
0.:.
図 0.? '!( の実行の一例9並列性の抽出:
動作検証および評価 35
動作検証および評価
提案した枠組みが '!( で実現されているか検証する.
動作検証については実装環境9表3:を用いて行なう.
検証に用いたプログラムを表4に示す.
表 4? 検証プログラム
出典 プログラム名 ファイル数 行数
2 ,- !( ( /77. 0/7 . .874
2 ,- !( ( /77. 007 . .637
2 ,- !( ( /77. 00/ /8 ./10/
! ! ( - . 4/
! ! ( - . //1
2 ,- -B 63 . 0/7
2 ,-<10 =はベンチマークの標準化促進を目指す非営利団体9 2 $
,- :であり,2 ,-が提供するベンチマークテストは
2 ,-ベンチマークと呼ばれている.2 ,-ベンチマークには様々な種類が存在す るが,今回は2 ,- !( /77.<11=を使用する.
2 ,- !( /77.は,科学技術計算アプリケーションプログラムであり,並列化 指示が! ( で記述されている.このベンチマークは,アプリケーションの性質 に熟知したユーザが,並列性を最大限に抽出した実例である.2 ,- !( (は,そ のなかでも.7- +程度の並列実行に向いているアプ リケーションプログラムであ り,-言語で記述されたアプリケーション0本と,Bで記述されているアプリ ケーション5本で構成されている.
今回動作検証に使用した2 ,- !( (内のアプリケーションは-言語で記述さ れている.0/7 は地震モデル,007 はニューラルネットの.手法である
& > をプログラムしたもの,00/ は分子力学 分子動 力学のシミュレーションのプログラムである.
は,! ! ( コンパイラに添付されている 方程式の差分解法 のプログラムである.このプログラムにはあらかじめ! ( ディレクティブが挿 入されている.
は,!! ( コンパイラに添付されている共役勾配法による連立一次 方程式の解法プログラムであり,! ( ディレクティブがあらかじめ挿入されて いる.
は,2 ,- -B 63ベンチマークで提供されている2"(9計算流体動力学 の中の2"方程式ソルバ:Bプログラム:アプリケーションを-言 語へ変換したプログラムであり,ループは1重もしくは/重ループである.また,
プログラム中に! ( デ ィレクティブは挿入されていない.