1 / 22

Supercompilers for Parallel and Vector Computers

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.

kris
Download Presentation

Supercompilers for Parallel and Vector Computers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Supercompilers for Parallel and Vector Computers 2003/4/22 近山・田浦研究室 修士1年 早津 政和

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

  3. フロー(正)依存 逆依存 出力依存 Introduction(1) • 逐次プログラムの意味を保ちつつ順序制約を緩める⇒依存関係 • 依存関係の種類 ex) S1: A=1.0 S2: B=A+3.14 S3: A=(C-D)/3 S4: A=(B*3.8)/2.718

  4. Introduction(2) • 配列を用いたループの並列化 • 「配列のアクセス」だけでは不十分 • (ループの範囲内での)配列の添字の解析が必要 • diophantine equation • 依存関係テスト • 完全テスト(分離テスト) • 近似テスト(GCDテスト、Banerjeeテスト) • 一般的なテストアルゴリズム

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

  6. 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’)

  7. Execution order • maximum common loop maximum 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’より先に出てくる

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

  9. 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がある言語の場合は、 もっと複雑な解析が必要。

  10. 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) 正依存 逆依存 出力依存

  11. 概要 • イントロ • 前提知識 • 依存関係の定義 • 依存関係の定式化 • 依存関係テスト • 完全テスト(分離テスト) • 近似テスト(GCDテスト、Banerjeeテスト) • 一般的なテストアルゴリズム

  12. 問題設定 • (DEP-1)で≪を扱うのは難しいため、direction vector(後述) で抽象化して扱う • (DEP-3)でSIの存在を無視する 保守的に依存問題の解を求める、というアプローチ • 要するに、 f(i)=f’(i’) となる i, i’は存在するか という問題になる ※A[f(i)] ∈DEF(S), A[f’(i’)] ∈USE(S’) or DEF(S’)

  13. 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 計算量を減らす以外の こいつの存在意義 って何だろう? m

  14. 問題設定 • 問題設定 • 添字表現はループ変数の線形式に制限し、 • ループの境界で決まる解の範囲と、与えられたdirection vector Θ の下で依存関係式の解が存在するかを調べる • 線形条件 f(I)=a0+∑ajIj f’(I’)=b0+∑bjI’j

  15. Dependence system • Dependence systemは、dependence equation(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)を解くという問題に帰着

  16. Linear diophantine equation • DEQは線形ディオファンタス方程式※     ∑ajxj =c ...(☆) の形をしている ※方程式の係数が整数であるような不定方程式の、整数解だけを求めるものはディオファンタス方程式と呼ばれる • 解の存在の判断基準 • gcd(a1,… ,an) | c のとき、かつそのときに限り、☆は解を持つ • 左辺の係数の最大公約数が右辺の約数になっているか?

  17. Linear diophantine equation • 線形ディオファンタス方程式の一般解 線形ディオファンタス方程式: ax+by=c, g:=gcd(a,b)|c, g=au+bv (u, v は整数) とすると すべての解の集合(xt, yt) は以下のように与えられる xt = uc/g + tb/g yt = vc/g - ta/g 要するにこいつをループの 制限の下で求めればよいが、 実際の計算量はでかいので どうしよう、という流れ

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

  19. Dependence testing • 分離テスト • 依存関係の必要十分条件となっている • GCDテスト • DEQの解の存在を与える • 依存関係の必要条件となっている • Banerjeeテスト • DEQのREG内のCST下の実数解の存在を与える • 依存関係の必要条件となっている

  20. 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つだけにしか 用いれないのは何故? 頑張れば 高次もいけない?

  21. gcd test & Banerjee test • GCDテスト • DEQの解の存在を与える • 依存関係の必要条件となっている • 解が存在しない ⇒依存がない • 解が存在する ⇒解の範囲に収まっているかは分からない • Banerjeeテスト • DEQのREG内のCST下の実数解の存在を与える • 依存関係の必要条件となっている • 解が存在しない ⇒依存がない • 解が存在する ⇒整数解かは分からない

  22. A general algorithm for dependence testing • 別紙参照 • プログラム中に q 個の文があったとすると、 O(q ) の文の組についてアルゴリズムを適用せねばならず、最悪 p*3 (p:文の組の数)回の依存テストをしなければならない 2 m 一般的に、並列化の粒度を上げるため 一番外側から数段のループの並列化を考える。 その中の文の間の依存関係を見るため、 qは減る。それでも計算量多くなったら諦める。

More Related