Top Banner
Supercompilers for Parallel and Vector Computers 2003/4/22 近近 近近近近近 近近 近近 近近
22

Supercompilers for Parallel and Vector Computers

Jan 21, 2016

Download

Documents

Kris

Supercompilers for Parallel and Vector Computers. 2003/4/22 近山・田浦研究室  修士1年 早津 政和. 概要. イントロ 前提知識 依存関係の定義 依存関係の定式化 依存関係テスト. フロー(正)依存. 逆依存. 出力依 存. Introduction(1). 逐次プログラムの意味を保ちつつ順序制約を緩める⇒依存関係 依存関係の種類 ex) S1: A=1.0 S2: B=A+3.14 S3: A=(C-D)/3 S4: A=(B*3.8)/2.718. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Supercompilers for Parallel and Vector Computers

Supercompilers for Parallel and Vector Computers

2003/4/22近山・田浦研究室 修士1年

早津 政和

Page 2: Supercompilers for Parallel and Vector Computers

概要 イントロ 前提知識 依存関係の定義 依存関係の定式化 依存関係テスト

Page 3: Supercompilers for Parallel and Vector Computers

Introduction(1)

逐次プログラムの意味を保ちつつ順序制約を緩める⇒依存関係

依存関係の種類ex) S1: A=1.0

S2: B=A+3.14 S3: A=(C-D)/3 S4: A=(B*3.8)/2.718

フロー(正)依存

逆依存

出力依存

Page 4: Supercompilers for Parallel and Vector Computers

Introduction(2) 配列を用いたループの並列化

「配列のアクセス」だけでは不十分 (ループの範囲内での)配列の添字の解析が必

要 diophantine equation

依存関係テスト 完全テスト(分離テスト) 近似テスト( GCD テスト、 Banerjee テスト) 一般的なテストアルゴリズム

Page 5: Supercompilers for Parallel and Vector Computers

概要 イントロ 前提知識 依存関係の定義 依存関係の定式化 依存関係テスト

Page 6: Supercompilers for Parallel and Vector Computers

Iteration vector

Iteration vectorループのインデックス (i, j, k) を iteration

vector i とする

辞書的順序(i, j, k) < (i’, j’, k’) ⇔ i<i’ or

(i=i’ and j<j’) or (i=i’ and j=j’ and

k<k’)

Page 7: Supercompilers for Parallel and Vector Computers

Execution order

maximum common loopmaximum common loop index: m\i := i(1:m)

実行順序S(i)≪S’(i’) ⇔ (\i<\i’) or

(\i=\i’ and S bef S’)※S bef S’: テキスト上で S が S’ より先に出て

くる

Page 8: Supercompilers for Parallel and Vector Computers

概要 イントロ 前提知識 依存関係の定義 依存関係の定式化 依存関係テスト

Page 9: Supercompilers for Parallel and Vector Computers

Data dependence

ループ中の文 S, S’ にデータ依存があるか⇔ S(i),S’(i’) が同じ変数にアクセス(少なくとも一方が書込み)している組 (i,i’) が存在するか

DEF, USE DEF(S):={v∈VARX: S は v を定義 } USE(S):={v∈VARX: S は v を使用 }※VARX はプログラム中の変数ここでは変数の名前と実態が

一意に決まるとしているが、C など変数の aliasing がある言語の場合は、

もっと複雑な解析が必要。

Page 10: Supercompilers for Parallel and Vector Computers

Definition of data dependence

S(i)δS’(i’) ⇔ (DEP1) S(i)≪S’(i’) (DEP2) ∃v∈VARX:

{v∈DEF(S(i)) and v∈USE(S’(I’))} or{v∈USE(S(i)) and v∈DEF(S’(I’))} or{v∈DEF(S(i)) and v∈DEF(S’(I’))}

(DEP3) 次のような SI がない : S(i)≪ SI ≪ S’(i’) and v∈DEF(SI)

正依存

逆依存

出力依存

Page 11: Supercompilers for Parallel and Vector Computers

概要 イントロ 前提知識 依存関係の定義 依存関係の定式化 依存関係テスト

完全テスト(分離テスト) 近似テスト( GCD テスト、 Banerjee テスト) 一般的なテストアルゴリズム

Page 12: Supercompilers for Parallel and Vector Computers

問題設定 (DEP-1) で≪を扱うのは難しいため、 direction vec

tor( 後述 ) で抽象化して扱う (DEP-3) で SI の存在を無視する

保守的に依存問題の解を求める、というアプローチ

要するに、   f(i)=f’(i’) となる i, i’ は存在するかという問題になる

※A[f(i)] ∈DEF(S), A[f’(i’)] ∈USE(S’) or DEF(S’)

Page 13: Supercompilers for Parallel and Vector Computers

Distance vector & Direction vector

Distance vectorμ = dist(i, i’):= \i’ - \i

Direction vectorΘ = dir(i, i’):= {‘<‘, ‘=‘, ‘>’, ‘*’}

‘<‘, if μj>0 Θj = ‘=‘, if μj=0

‘>’, if μj<0

計算量を減らす以外のこいつの存在意義って何だろう?

Page 14: Supercompilers for Parallel and Vector Computers

問題設定 問題設定

1. 添字表現はループ変数の線形式に制限し、2. ループの境界で決まる解の範囲と、与えられ

た direction vector Θ の下で依存関係式の解が存在するかを調べる

線形条件f(I)=a0+∑ajIj f’(I’)=b0+∑bjI’j

Page 15: Supercompilers for Parallel and Vector Computers

Dependence system Dependence system は、 dependence equa

tion(DEQ), region(REG), constraint(CST) から成る (DEQ) (a0+∑ajij )-(b0+∑bji’j)=0 (REG) ij∈[Tj:Uj]

i’j∈[T’j:U’j] (CST) ijΘji’j

解の範囲( REG) 内で、変数制限( CST) の下、方程式( DEQ) を解くという問題に帰着

Page 16: Supercompilers for Parallel and Vector Computers

Linear diophantine equation DEQ は線形ディオファンタス方程式※     ∑ ajxj =c ...(☆)

の形をしている※ 方程式の係数が整数であるような不定方程式の、整数解だ

けを求めるものはディオファンタス方程式と呼ばれる

解の存在の判断基準 gcd(a1,… ,an) | c のとき、かつそのときに限り、☆は解を

持つ 左辺の係数の最大公約数が右辺の約数になっているか?

Page 17: Supercompilers for Parallel and Vector Computers

Linear diophantine equation

線形ディオファンタス方程式の一般解線形ディオファンタス方程式 : ax+by=c,g:=gcd(a,b)|c, g=au+bv (u, v は整数 ) とするとすべての解の集合 (xt, yt) は以下のように与えられ

xt = uc/g + tb/gyt = vc/g - ta/g 要するにこいつをループの

制限の下で求めればよいが、実際の計算量はでかいので

どうしよう、という流れ

Page 18: Supercompilers for Parallel and Vector Computers

概要 イントロ 前提知識 依存関係の定義 依存関係の定式化 依存関係テスト

Page 19: Supercompilers for Parallel and Vector Computers

Dependence testing 分離テスト

依存関係の必要十分条件となっている

GCD テスト DEQ の解の存在を与える 依存関係の必要条件となっている

Banerjee テスト DEQ の REG 内の CST 下の実数解の存在を与

える 依存関係の必要条件となっている

Page 20: Supercompilers for Parallel and Vector Computers

separability test

Separability condition(SEP) ∃k∈[1:m]:∀j∈[1:n]:j≠k⇒aj=0 and

∀j∈[1:n’]:j≠k⇒bj=0※ 要するに同じ変数がたかだか 1 つしか現れない

完全テスト 解が存在しない ⇒依存なし 解が存在する ⇒依存あり

変数1つだけにしか用いれないのは何故?

頑張れば高次もいけない?

Page 21: Supercompilers for Parallel and Vector Computers

gcd test & Banerjee test GCD テスト

DEQ の解の存在を与える 依存関係の必要条件となっている

解が存在しない ⇒依存がない 解が存在する

⇒ 解の範囲に収まっているかは分からない

Banerjee テスト DEQ の REG 内の CST 下の実数解の存在を与える 依存関係の必要条件となっている

解が存在しない ⇒依存がない 解が存在する ⇒整数解かは分からない

Page 22: Supercompilers for Parallel and Vector Computers

A general algorithm for dependence testing

別紙参照

プログラム中に q 個の文があったとすると、O(q ) の文の組についてアルゴリズムを適用せねばならず、最悪 p*3 (p: 文の組の数 ) 回の依存テストをしなければならない

2

m

一般的に、並列化の粒度を上げるため一番外側から数段のループの並列化を考える。

その中の文の間の依存関係を見るため、q は減る。それでも計算量多くなったら諦める。