• Tidak ada hasil yang ditemukan

jido heiretsuka konpaira ni okeru deta rokaraizeshon ni kansuru kenkyu

N/A
N/A
Protected

Academic year: 2021

Membagikan "jido heiretsuka konpaira ni okeru deta rokaraizeshon ni kansuru kenkyu"

Copied!
79
0
0

Teks penuh

(1)

?・稲田大学審査学位論文(溥七)

①二心

Kodak

Color

Control

Patches

Koclak

Gray

Sca一の

S ‘ r x ] ω 4 ひ 1 ( 7 )

M 8

-5 Kodak。2007 TM:K)dak O Kodak.2007 TM:Kodak − ; ' i ¥ f i l I S X a l

(2)

W - - 四

自動並列化コンパイラにおける

データローカライゼーションに関する研究

早稲田犬学犬学院理上学研究科 アドバンスト  電気工学専攻 コンピューテすング システム研究

古 田 明 正

1996年3月

(3)

目次

1 序論   1.1 本研究の背景と目的   12 本論文の概要 ‥ 2 マルチプロセッサシステム用の自動並列化コンパイラ 2、1 まえがき 2.2 マルチグレイン並列処理 2.21 マクロデータフロー処理(粗粒度並列処理)‥ 2.2.2 中粒度並列処理(ループ並列化)‥‥‥‥ 2.23 近細粒度並列処理‥‥‥ 2.3 対象マルチプロセッサシステム(OSCA剛のアーキテクチャ   2.3ユ OSCIARの全体構成‥・・・・・・・・・・・・・・・・ 2.3.2 PE.のハードウェア構成 ‥ 2.3.3 メモリ構成 ‥・・・・・・・ 2.3.4 マクロデータフロー処理のためのアーキテクナャサ 汗 ト   2.3.5 近紛粒度並列処理のためのアーキテクチャサポート . 2.4 第2章のまとめ・・・・・・・・・・・・・・・・・・・・・・・・・ 1 rxl Q 11 12 口 □ 2石 28 訓 31 37 3D 莉 42 に

(4)

11 3 データローカライゼーションのためのループ整合分割   3.1 まえがき・・・・・・・・・・・・・・・・・・・・・・・・・・・・   ;ロ データロー-カライゼ一ンョンの概要‥・・・・・・・・・・・   3.3 ループ整合分割・・・・・・・・・・・・・・・・・・・・・・・・     :j.よ]ルー一一プ整合分割のためのターゲットループグループの         生成 ‥・・・・・・・・・・・・・・・・・・・・・・・・     おロ ターゲ・ットルーブグループ内でのルー-プ聞データ依存 解析   3.3.:S ター一一ゲットルーブグループ内でのループ分割‥ 3.1 第3砥のまとめ・・・・・・・・・・・・・・・・・・・・・・ 4 マクロデータフロー処理におけるデータローカライゼーション 目 1.2 1 圭太がき Doanループ間データローカライゼーション ・・・・・・・. ↓.2.1 ループ整合分割・・・・・・・・・・・・・・・・・・・・ 劃2.2 マクロタスク融合‥・・・・・・・・・・・・・・・・・ 4.2.3 融合マクロタスク内でのローカルメモリ経由データ授 受コード生成 4.2.4 0S(/AR上での性能評価 3 Doal]/シーケンシャルループ聞データローカライゼーション ↓3.1 シーケンシャルループを考慮したループ整合分割 . 4.3.2 パーシャルスタティックタスク割当を用いたダイナミッ     クスケジューリングルーチンの生成・・・・・・・・・ 4.3.3 データローカライゼーショングループ内でのローカル     メモリ経由データ授受コード生成・・・・・・・・・・ 4.3.4()SCAR上での性能評価‥‥‥ 目次 45  田 豹 ら0 J ・ 頷 63 卵 69 川 72 72 一一IJ 巧 82 87 88 り3 % 98 目次 L。1 第一4章のまとめ‥‥‥ 5 マルチグレイン並列処理におけるデータローカライゼーション 1 まえがき 1n 川↓ 103 且□ − )2 マクロタスクの分割とPC・へのダイナミックスケジューリング1圓 5.2.11 ループ整合分割‥‥ 5J2 マクロタスク融合‥. 川C; 川り 5.3 中粒度タスクのPCI内PEへのスタティックスケジューリング11() 5.4 近細粒度タスクのPCI内PEへのスタティックスケジューリ ング . 5.4.1 近細粒度タスクの融合 1」2 目2   5.4.2 近細粒度タスクのスケジューリング・・・・・・・・・. 114 5.5 データローカライゼーションのためのデータ転送コード生.成 116   55.1 ローカルメモリ経由データ授受の有効な配夕│」変数の検出目G 5.5.2 PC内PE聞データ転送コード生成 ‥. 5.5.3 CISMとLM間データ転送コード生成‥ り − J 6 0SCAR。ヒでの性能評価‥‥ 弟5章のまとめ 6 結論   6,1 本研究により得られた成果. 6.2 今後の課題 参考文献 謝辞 著者研究業績 117 12(j 122 125 127 118 130 131 141 143

(5)

n ・ F - - ・ - ㎜ 目次

(6)

り 一

1.1 本研究の背景と目的

-弟7章序論  科学技術計算用のスーパコンビュー-タは、現在、流体力学、原子物理学、 気象]s測、構造解析、資源探査、原f炉のシミュレーション等の各種研究分 野で使用されている。このような研究分野において要求される計算能力は、 現状のスーパコンビュータよりはるかに高く、より高速なスーパコンビュー タの開発が切望されている。スー-パコンピュータのように最高性能を追い求 める計算機において、その処理速度をさらに向上させるためには、プロセッ サ自体の処理速度を速くするアブローチと、複数のプロセッサを接続した マルチプロセッサシステムを構成し、並列処理IKsl91.Mlua8G.Zi(lh91j をおこなうことによって高速化をはかろうとするアプローチがある。前者 の単一プロセッサの高速化によるアプローチは物理的な限界が指摘されて おり、近年、後者の並列処理方式によるアプローチに高い関心が寄せられ ている。  現在、並列処理はワークステーションからスーパコンピュータにいたる ほとんどのコンピュータの基本構築技術となっている。これらのコンピュー タでよく使用される並列処理方式としては、マイクロプロセッサ内で命令 レベルの細粒度並列処理を行うスーパスカラ方式及びVLIW方式、従来よ りスーパコンピュータで使用されている演算パイプライン(ベクリレプロ セッサ)方式、ミニスーパコンピュータやスーパコンピュータなどで使用さ れているマルチプロセッサ方式などがあげられる(T・)S11鯛。これらの処理 方式で共通している特徴は、ハードウェアのもつ高い処理性能を有効に引 き出すためには、ソフトウェアによる強力なサポートが必須であるという 点である。  特に、マルチプロセッサシステムにおいては、従来より、ハードウェアの 川.本研究の背景と目的 a もつピーク性能と実際のプログラムを実行したときの実行的な性能である 実効性能との間のギャップがきわめて人きいという問題点があった。このよ うな問題が生じる原因としては、並列処理ハードウェア技術に比較し、並 列処理のためのシステムソフトウェア技術が犬幅におくれていることなど があげられる。したがって、今後ピーク性能と実効性能との間のギャップを 埋め、並列処理に関する専門知識のないユーザでも並列処理システムを容 易に使用できるようにするためには、並列処理のためのシステムソフトウェ アを高度化させることが重要となる。  マルチプロセッサシステム上での自動並列化コンパイラを用いたFormm プログラムの並列処理では、従来より、D()aH、Doa巾)ss等のループ並列化 [PdW()86、Cytr86、Poly88バvolf891が広く用いられている。しかしながら、 イタレーション間にまたがる複雑なデータ依存(Lo()p(.m1シdD(ylldeu(ソ やループ外への条件分岐に起因し、ループ並列化か適用できないシーケン シャルループも依然存在する。また、ループ以外の部分の並列性、例えば 基本ブロック内部の並列性や、ループ、サブルーチン、及び、基本ブロック 間の並列性が、有効に利用されていないという問題点もあった。 このよう な問題点を考慮し、最近では、ループ、サブルーチン、基本ブロック等の 根粒度タスク間の並列性を利用するマクロデータフロー処理(粒粒度並列 処理八シーケンシャルループ内部あるいはループ外部の基本ブロックをス テートメントレペル(複数命令レベル)の粒度で並列処理する近根粒度並 列処理、及び、これらと従来のループ亀列化(中粒度並列処理)を階層的 に組み合わせたマルチグレイン並列処理が提案されている。  このマクロデータフロー処理やマルチグレイン並列処理のように、ダイ ナミックスケジューリングを用いて根粒度タスク(マクロタスク)を実行 時にプロセッサに割り当てる方式では、従来、マクロタスク間で共有され

(7)

↓ − 〃 y 〃 r ` ミ ・ 1 第バド乍論 るデータを集中共有メモリ上に配置し、マクロタスク聞のデータ転送は集 中共有メモリを介して行なう方法がとられていた。このため、集中共有メ モリを介した共有データのための転送オーバヘッドが大きくなってしまう という問題が生じた。  一方、マルチプロセッサシステムの構成としては、従来は、集中(グロー バル)共有メモリのみを持った主記憶共有型マルチプロセッサシステムや、 共有メモリを全く持たない分散メモリ型マルチプロセッサシステムが主流 であ-jた。しかしながら、主記憶共有型マルチプロセッサシステムに関して は、接続するプロセッサ数が32台程度に限られるといった問題点があり、 また、分散メモリーマルチプロセッサシステムに関しても、共有アドレス 空間がないためプログラミングが困難であり、実効性能(実際の性能)が 低いといった問題点。があった。最近では、このような問題点を解決するた めに、集中共有メモリと分散共有メモリとローカルメモリを持つマルチプ ロセッサシステム、あるいは、集中共有メモリとローカルメモリを持つマ ルチプロセッサシステムが普及している。  このようなローカルメモリを持つマルチプロセッサシステム上で、マク ロタスク間データ転送オーバヘッドを軽減し効峠良い並列処理を実現する ためには、ローカルメモリを有効利用できるようにデータを迫切に分割・配 置し、各プロセッサ上のローカルメモリを介したマクロタスク間データ授 受を可能とすることが重要となる。  以上のような背景を踏まえて、本研究では、 〔1〕集中共有メモリとローカルメモリをもつマルチプロセッサシステム上   でのマルチグレイン並列処理において、タスク間データ転送にプロセッ   サ上のローカルメモリを有効利用し、データ転送オーバヘッドの最小   化を実現するデータローカライゼーション手法、特に、ローカルメモ j.j.本研究の背景と目的 1 ) リ経由データ授受を実現するためのタスク及びデータの分割渋とタス クスケジューリング渋の考案、 四六いで開発された手法を用いたマルチグレイン並列処理の有効性を検   証するための、マルヂプロセッサシステム用自動並列化コンパイラの   開発 を目的とする。

(8)

{ 1.2

本論文の概要

本論文の第2瞰以降の販女を以 ! ’ ト ー 述べる。 弟丿章字論  第2章|マルチプロセッサシステム用の自動並列化コンパイラ|では、本 研究の基本となるマルチグレイン並列処理のための自動並列化コンパイラ について述べる。マルチグレイン並列処理は、マクロデータフロー一処理(粗 粒度並列処理)、中粒度並列処理(ループ並列化)、近細粒度並列処理を階 層的に組み合わせた自動並列処理手法である。まず、マクロデータフロー 処理では、ループやサブルーチン等の粗粒度タスクをマクロタスクと定義 し、マクロタスク間の並列性をコンパイラが自動抽出し、マクロタスクを 実行時に動的にプロセッサクラスタ(PCに割り当て並列処理を行う。次 に、マクロデータフロー処理によりPCに割り当てられたマクロタスクは、 PC内部のプロセッサにより、中粒度並列処理(ループのイタレーション間 での並列処理)手法、近細粒度並列処理(基本ブロック内のステートメン ト間での並列処理)手法、または、階層型マクロデータフロー処理手法を 用いて階層的に並列処理される。本章では本コンパイラの評価に用いたマ ルチプロセッサシステムOSCARのアーキテクチャについても述べる。  第3章Fデータローカライゼーションのためのループ整合分割│では、マ クロデータフロー処理及びマルチグレイン並列処理において、複数のルー プ(粒粒度タスク)間でローカルメモリ経由データ授受(データローカライ ゼーション)を実現するためのループ分割法について述べる。データロー カライゼーションを実現するには、桂粒度並列性が十分に得られ、かつ、粒 粒度タスク間でローカルメモリを介したデータ授受を行えるように、粗粒 度タスク(ループ)及び配列データを分割・配置する必要がある。そこで、 本章では、データ依存関係にある複数ループを、分割後に生成される部分 j.2 本論文の概要 ループ間でローカルメモリを介してデータ投受か行なえる(配列データの 使用範囲が等しくなる)ように分割するループ整存分割注全提案する。  第4章け7クロデータフロー処理におけるデータローカライゼーション」 では、マクロデータフロー処理において、各Doallループの並列性を利用し つつ、複数ループ間でのデータ転送にローカルメモリを有効に使用し集中 共有メモリを介したデータ転送オーバヘッドを軽減するデータローカライ ゼーション手法を提案する。具体的に本章では、Doa11ループ間を対象とし たタスク融合を用いたデータローカライゼーション手法と、D()a11ループと シーケンシャルループ間を対象としたパーシャルスタティックタスク割当を 用いたデータローカライゼーション手法を提案する。  D()a1ドレープ間を対象としたタスク融合を用いたデータローカライゼー ション手法では、まず、第3章で述べたループ整合分割法を用いて、Doall ループ間に存在する配列変数に関するデータ依存を局所化するように、各 D()a11ループを複数の部分D()aHループに分割する。次に、分割された部分 D()aHループ間即ちマクロタスク間で多量のデータ転送が生じる可能性のあ る場合、データ転送をローカルメモリ経由で行なうため、それらのマクロ タスク集合をコンパイル時に融合して融合マクロタスクとし、実行時には その融合マクロタスクをダイナミックスケジューリングにより1プロセッサ に割り当てる方式をとる。コンパイラは、マクロタスク融合後、融合マク ロタスク内の部分Doj1ループ間で、ローカルメモリを介したデータ授受 を行なうマシンコードを生成する。この際、本手法では、データローカラ イゼーション適用時のデータ転送時間が、集中共有メモリ経由転送の場合 より短縮される配列変数だけに、データローカライゼーションを適用する。 本手法はマルチプロセッサOSCAR上でインプリメントされており、実ア プリケーション(C右法等)プログラムを用いたOSCAR Lでの性能評価か

(9)

6 第丿章序論 ら、本手法により処理時間が14あぐべ?1.G‘メ(プロセッサが3ヽG台の場合) 短縮される等ご戸法の有効性が確認された。  L)oa]1ループとシー一一ケンンャルループ聞を対象としたバー-シャルスタティッ クタスク割当を用いたデータローカライゼーション手法では、まず、第3庫 で述べたループ整合分割法を拡張し、データ依存の存在するDoa11ループ とシーケンシャルループの間で配列変数に関するデータ依存を局所化する ようにい各ループを複数の部分D91いレープあるいは部分シーケンシャル ループに分割し、これらをマクロタスクとする。次に、多量のデータ転送 を必要とするマクロタスク集合(部分D()a11ループと部分シーケンシャル ループ)が実行時に同一のプロセッサに割り当てられるように、パーシャル スタティックタスク割当を用いたダイナミックスケジューリング方式を適用 する。パーシャルスタティックタスク割当方式は、コンパイル時に同一プロ セッサに割り当てるべきマクロタスク集合を決定し、実行時にはそれらの マクロタスク集合をダイナミックスケジューリング環境下で同一-プロセッサ に低オーバヘッドでスケジューリングする方式をとる。その後、コンパイラ は、実行時に同一プロセッサに割り当てられる部分DoaUループと部分シー ケンシャルループの聞で、ローカルメモリを介したデータ授受を行うマシ ンコードを生成する。スプライン補開法のプログラムを用いた(。)SCAR上 での性能評価の結果、本手法により処理時間が19.□∼23.9・X(プロセッサ が3∼6台の場合)短縮される等、その有効性が確かめられた。  第5章「マルチグレイン並列処理におけるデータローカライゼーション」 では、マルチグレイン並列処理において、ローカルメモリを有効に使用し データ転送オーバヘッドを軽減するデータローカライゼーション手法を提 案する。本手法では、まず、粗粒度タスクに対して第3章で述べたループ 整合分割法及び第4章で述べたマクロタスク融合法を適用する。次に、マ L?,本論文の概要 り クロタスク融合により生成された融分マクロタスク内のループをプロセン サクラスタヅO内の複数プロセッサ付生)トで並列処理するために、中 粒度タスク及び近細粒度タスクを生成し、それらのタスクをPL間データ 転送が小さくなるようにPC’内Pト:にスケジューリングレ融合マクロタス ク内部のループ問でPE上のローカルメモリを毎しかデータ授受コードを 生成する。マルチグレイン七月処理では、同一PCに割り当てられる融合 マクロタスク内の各ループは、PC内の複数PE士。で階層的に並列処理され るため、融合マクロタスク内のループ間では必ずしも同一PE上のローカ ルメモリを介してデータ授受を行えるとは限らない。そこで、本手法では、 必要に応じて融合マクロタスク内部のループ間にPC内PE間データ転送 コードを挿入する。 CGS法のプログラムを用いたOSCAR上での性能評価 の結果、本手法により処理時間が21.5ソ(PEが6台の場合)短縮されてお り、手法の有効性が確認された。  第6瞰「結論」では本研究で得られた成果と今後の研究課題を述べている。

(10)

ふ 5 y 一 10 第7章序論

第2章

マルチプロセッサシステム用の自動

並列化コンパイラ

1 ↓

(11)

一 一 12 第2章マルチプロセッサシステム用の自動並列化コンパイ

2.1 まえがき

− フ  マルチプロセッサシステムllでの自動並列化コンパイラを用いたFom all プログラムの並列処理ではU)oa11、D()a(・r(尚等のループ善則化貼爪 ̄()86. にぶ川」が従来より広く用いられている。最近のデータ依存解析匹り侶8ヽ 臨爪に灯).PMV()8G」とプログラムリストラクチャリング技術[P翁V(砺6.W(訂卵. Ball囲七W()lm6」の進歩により、多くのタイプのD()ループが並列化できる ようになっている。しかし、イタレーション間にまたがる複雑なデータ依存 臣ool)(フdrl`i(ヽdD(ヽげndぃn(・(ヽ)や、ループ外への条件分岐に起因し、ループ並 列化か適用できないシーケンシャルループも依然存在する。また、ループ よりヽ外の部分の並忖‰例えば基本ブロックトhsじ州内部の並列性やヽサブ ルーチン、ルーブ、及び基本ブロック聞の並列性が、有効に利用されていな いという問題点もあった。  マルチプロセッサ上での基本ブロックあるいはシーケンシャルループの

並列処理は、VLIWUFish8L CXOP詣8. E11ぶ八iFi84バい)泣lus八洲あ

るいはスーパスカラマシンレI()uP89」と異なりヽ命令レベルの細粘度並列処 理が困難であるため、従来実現されていなかった。また、粗粘度並列処理に 関しては、cnAYのマルチタスキングに見られるようにユーザがサブルー チン間の並行目ミを指定し、OSあるいはランタイムライブラリがそれらのタ スクをプロセッサに実行時に割り当てるという方式がとられている。しか しこの方式では、(B一部のエキスパートユーザーしかサブルーチン間の 並列性を抽出できないU2)条件分岐を考慮してループ間あるいはループと サブルーチン間の並列性を引き出すのはエキスパートユーザでも極めて難 しい、(3)OSコールはオーバヘッドが大きく大規模なサブルーチン間の並 列処理にしか有効でない等の問題点がある。 2j.・まえ がき  以上のような問題点を考慮レ最近では、ループやサブルーチン等の粗 粒度タスク問の並列性をコンパイラが自動的に袖出して並列処理を行うマ クロデータフロー処理平沙匹)HO[L KAYOつ]、HAOIぐ絹、及び、複数命 令あるいはステートメント程度の近細粒度タスクレペルで並列処理を行う 近細紋度並列処理手法匹1HXり庄HMKX側、さらにそれらを従来のループ 並列化(中紋度並列処理)手法と階層的に組み合わせたマルチグレイン並列 処理判帽KHMO句1八州X側か提案されている。  本章では、以下、2.2節で本研究の対象とするマルチグレイン並列処理に ついて述べ、2、3節でマルチグレイン並列処理の対象とするマルチプロセッ サシステム(OSCΛR)のアーキテクチャについて述べる。

(12)

、 − レ1 第2章マルチプロセッサシステム用の自動並列化コンパイラ

2.2 マルチグレイン並列処理

 マルチグレイン截夕 ̄1」処理医HMO刎〕1.1、aHX911は、マクロデータフロー 処理(粗粒度並ダ1)処理川H(・IKgnぶHlm〔〕AAYo191 HAOIJ21、中粒度 並ダI』処理(ループ並列化川PaWo86. W・11fS9. P(かぶ)、近細粒度並列処理 匹dIN9〔〕.HMKN9()]を階層的に組み合わせた並列処理手法である。以下にヽ マルチグレイン並列処理を実現するための各並々│』処理手法について述べる。 2.2.1 マクロデータフロー処理(粗粒度並列処理)  本節では、Fo1・nJnプログラムを根粒度タスク(ループやサブルーチン等) レベルで並列処理するためのマクロデータフロー処埋けI()IIO()、NHIH圓、 NAY(トリ2、HAOK92ドこついて述べる。 2.2.1.1 マクロタスク生成  本マクロデータフロー処理では、F( 「la、nプログラムをマクロタスクと呼 ぶ並列処理単位に分割する。この時、マクロタスクの粒度は、並列実行時の 各マクロタスクの処理時間、プロセッサ間データ転送オーバヘッド、同期オー バヘッド、スケジューリングオーバヘッドを考慮して適切に決定しなければ ならないISaH(ヽ861.ここではヽマルチプロセッサシステム()SCAR(2.3節参 照)でのト記オーバヘッドの大きさを考慮して、擬似代入文ブロック(Blo(・k

〔〕fPs凹do Ass㈲mlellt stat(='uヽnts: BPA)、繰り返しブロック(Rrp(ヽtition

BI・)(・k:RB)、サプルーチンブロック(Sub1・outine Blo・・k: SB)の3種類のマ

クロタスクを生成するIKAYO句2]。

 BPAは基本的には単一の基本ブロック(Basi(・BI()(・k : BBUAhSU88)であ

るが、分割された基本ブロック、あるいは、融合された基本ブロックもBPA

2.ジ.マルチグレイン並列処理

(b)Possible Parallelism obtained from  basic-block-decomposition

(a)An example of a baslcblock   having djsjointtaskgraphs

    図2.1:基本ブロック分割によるBPA生成

(13)

16 四 ■ - I F 第2章マルチプロセッサシステム用の自動並列化コンパイ フ− と定義する。例えば、基本ブロック内のステートメント間のデータ依存グ ラフが独とした部分グラフから構成されている場背、元の基本ブロックを それぞれの部分グラフからなる複数のブロックに分割し、それらのブロッ クを賢なったBPAとして定義するトXYO句2」。このような基本ブロック の分割により、マクロタスク間の並列性を高めることができる。図2、10) の例では基本ブロックBL32は、RB1の後処理の部分と、HB3とBlnの前 処理の部分に対応する2つの部分グラフを持っている。この2つの部分グ ラフは互いに依存関係がないので、BB2は図2.1(b)に示すようにHB2Aと BB2Uに分割することができる。このような分割により、RD1とBB2Aか らなるグループと、BB2BとRB3及びnB4からなるグループとの間の並 升目ミを引き出すことができる。  一方、条性分成文を合む基本ブロックの後続ブロックが、ダイナミック スケジューリングオーバヘッドと比較して小さい処理時間を持つ基本ブロッ クである場合、これらの基本ブロックを融合しBPハとする。例えば、図 2.2(削のように複数の基本ブロック(BB)があり、条件分岐文を合むBB2 の後続ブロックであるBB4とBBらが小ブロックである場合、条件分岐文と BB・4とBB、5を図2.2(h)に示すように1つのグループにまとめ、これを1ス テートメントであるかのように扱う。このようなステートメントを擬似文 (Ps凹do St4t(ヽm(ヽ10と呼び、融合によって生。成されたマクロタスクをBPA とする。図2、2(○の例では、BB8がBB4及びBBぶにデータ依存している ため、↓2.22節で述べるデータ転送を考慮したマクロタスク融合法により、 BB8がBB2とBB4とBB5からなるBPAに融合され1つのL3PAとなる。  HBはD()ループまたは後ろ向き条件分岐により生成される繰り返しブ ロック、即ち殼外側ナチュラルループLAhSし網である。但しこのような 定義では、Do証いレープが1つのマクロタスクとして1つのプロセッサク 2.2.マルチグレイン並列処理  「」」 ̄4 ̄ ̄〕    Dalaflow 、.、. 1 7'‘ 瓦2 ‘' J ……… ……… ̄¨・゛conlrolllow

(a)A fiow graph with several small basic blocks (BBs)

BPA BB  / ・ ・ - ゾピ] 、 J/〃〃jΦ     j・●・・-I≒へj`i゛-F4-. ●■■■■■■■・・■●■■・■■●       SBS RB9 BPA         BB3 ●■●■■■■●■■■■■■■●■●●■■■■●●・・         n   A pl●uda BB6 … … … Q 、 . BB11

BB7 ゛I“Id IIII i“II slalement

)

B12

    (blBpAs g●nel ・●dbyluslngsmlllBBs 図2.2:基本ブロック融合による】IPA生成

(14)

1j 第2章マルチプロセッサシステム用の自動.並列化コンパイ − フ ラスクに害」り当てられてしまうため、プロセッサクラスタ内のプロセッサ 数分の並列性しか利用できない。この問題を解決するために、D、mnループ は、分割後の各ループの処理時間がダイナミックスケジューリング時間よ り大きい場合に限り、複数(プロセッサクラスタ数の倍数・)の別々のD・111 ループに自動分割される。この分割によりマクロデータフロー処理におけ るDoan処理を、通常のループ並列化と同様、システム中の全プロセッサを 用いて行なうことができる。本コンパイラでは、Xイタレーションを持つ Doa11ループがある場合、このループを「.VかUX:イタレーション数川」:プ ロセッサクラスタ数の倍数)イタレーションからなる詞固のD。dDレープに 分割する方式をとっている。但し、本論文で提案するデータローカライゼー ション手法が適用される場合には、第3章で述べるループ整合分割法により ルーブ(マクロタスク)が分割される。分割により生成される部分ループ は、マクロタスクとして定義される。  また、サブルーチンに関しては、基本的に可能な限りインライン展開を 適用するが、コード長が長くなり過ぎ、効果的にインライン展開できない 場合には、そのサプルーチンをマクロタスク(SB)として定義する。SBと 他のマクロタスクとの間の並列性を十分に引き出すには強力なインタプロ シージャ解析旧uCy86、TtIF祗LiY・ヽ88. HMAL゛951 の技術が必要である。  なお、マルチグレイン並列処理ではマクロタスク内部で、中粒度並列処 理、近細粒度並列処理、あるいは、階層的にマクロデータフロー処理が行 われる。マクロタスク〔RBまたはSB〕内部で階層的にマクロデータフロー 処理【()AMH加41が適用される場合には、マクロタスク内部でサブマクロ タスクが生成される。 2.2 マルチグレイン並列処理 2.2.1.2 マクロフローグラフ(MFG)生成 1り  コンパイラは次に、BPA、RB、SBなどのマクロタスク間のコントロール フローとデータフローを解析する。解析されたマクロタスク聞のコントロー ルフローとデータフローは、図2言こ示すようなマクロフローグラフ(MFO で表現される。図2.3において、芥ノードはマクロタスクを表し、ノード中 の小円は、条件分岐を表している。また、ノード間の点線エッジ、実線エッ ジはそれぞれマクロタスク聞のコントロールフローおよびデータ依存を大 している。この図中で矢印は省略されているが、エッジの方向は全て下向き であることを仮定している。また、ループを構成する後方へのエッジ(バッ クエッジ)はnBの定義によりRB内部に含まれるため、MFcいよ一一般に無 サイクル有向グラフとなる。 2.2.1.3 マクロタスクグラフ(MTG)生成  マクロフローグラフ(MFG)はマクロタスク間のコントロールフローと データフロー関係を陽に表したものであったが、MFGはマクロタスク間の 並列性を表現していない。マクロタスク間にデータ依存関係が存在しない場 合には、コントロづレ依存グラフあるいはプログラム依存グラフ匿OW問 と坪ばれるグラフにより最大の並列性を表現できる[ABCけ881.しかし、 マクロタスク間には、普通、データ依存関係も存在する。従って、マクロフ ローグラフからマクロタスク間の並列性を効果的に抽出するためには、コ ントロール依存とデータ依存を同時に解析しなければならない。  そこで、本マクロデータフロー処理では、コントロール依存とデータ依 存を考慮したマクロタスク間の最大の並列性を表わすものとして、各マク ロタスクの最早実行可能条件田oIK90ぶnHX91]を用いる。マクロタスクノ・ (訂で)の最早実行可能条件とは、MT、が最も早い時点で実行可能となるか

(15)

拍 第]章マルチプロセッサシステム用の自動並列化コンパイラ Dalatlow ………Conlr()I張)g ○ BPA RB 七 ……… [石回……… ……j

ズ 圧亘]

言□

Cりnditionalbranch Block{}fPsucdo Assignment stalements Repelition Block 一一一を・をi一 ﹄ 7………       RB ………… ロ壷口

二三コ二王コ

1 □こ]

………… □毎回

一 図2.3:マクロフローグラフ(MFG) ど? − ・ − マルチグレイン並列処理 2 ] めの条件である。ただし、このマクロデータフロー処理における殼リ・実行 可能条件は、次のような実行条件を仮定して求められる。 田マクロタスクり汀,jがマクロタ。スク,バ汀/いにデータ依存するなら   ばヽ-U乃の実行が終了するまでは.U瓦・は実行を開始できない。  ロレU石の条件分岐先が確定すれば、訂乃の実行が終了しなくても、j/71    にコントロール依存する.U71は実行を開始することができる。  訂77、・の最早実行ロj'能条件の一般形旧(jIK9【】.KaHN911は次の通りである。    〔い77、がコントロール依存する訂石が1江に分岐する〕    。4XD    ㈲江がデータ依存する全てのマクロタスク訂71.の実行が終了    するμ]j?(訂石が実行されないことが確定するり)  例えば、訂7;iの最早実行可能条件は次のようになる。    【(い汀1が訂乃に分岐する)り刑訂乃がj仔1に分岐するn    。4×7)    ((訂T=lの実行が終了するりJ/?(MTIが訂乃に分岐する川  ANDの前の条件がコントロール依存に起因する実行確定条件である。 ΛNDの後の条件がデータ依存に起因するデータアクセス可能条件である、 即ち、このANDの後の条件は、M乃の実行が終了するか、または.U乃が 実行されないことが確定すれば、.U71を実行開始してよいということであ る。この条件において、訂7で、を実行するということは、が丁│が訂771にすで に分岐していることを意味し、同様に.U石を実行するということは、訂7'1 が.U7!、にすでに分岐していることを意味している。したがって、冗長な条 件を省略し、簡潔な形式になおすと、

(16)

り ー − − ・ 第2章マルチプロセッサシステム用の自動啓ダ│』化コンパイ

回汀頌実行がが汀するげ爪訂石が訂耶二分妓す列

− フ  となる。  本マクロデータフロー処理用コンパイラでは、冗長な条件を排除した最 早実行可能条件を自動的に得ることができる。図2.3のマクロフロークラフ トの各マクロタスクの最早実行可能条件を衣2.1に示す。最早実行可能条件 における冗長な条件を排除することは、ダイナミックスケジューリングに よるオーバヘッドを滅らすために重要である。 Girka1・とI九)1y(竹(出ol)o 「()s は、この最早実行可能条件の研究結果弗)IK剛を利用レ多少変更したァ ルゴリズムを提案しているIGiPoり1.GiPo92]。  表2ユに示される各XITの最早実行可能条件は、図2.1のようなマクロタ スクグラフ(MTC;)と坪ばれる無サイクル有向グラフで表すことができる。 MTGにおいて各ノードはマクロタスクを表す。点線のエッジは拡張された コントロール依存を示し、実線のエッジはデータ依存を表す。この拡張コ ントロール依存エッジは、通常のコントロール依存だけでなく、MT、のデー タ依存先行マクロタスクが実行されないための条件も表わしている。 MTG 中のノード内の小円を起点とするデータ依存エッジつまり実線のエッジは、 コントロール依存とデータ依存の2つを同時に表している(表2.1中のら に対応)。図中のエッジを束ねている実線のアークは、そのアークによって 東ねられたエッジが互いにANDの関係にあることを示す。点線のアーク は、そのアークで束ねられたエッジが互いにORの関係にあることを示す。 ノード内の小円は、MFGと同様条件分岐を表している。このMTGにおい てもエッジの向きは下向きと仮定しており、ほとんどの矢印は省略されて いる。矢印がついているエッジは、元のMFG上での分岐方向を表すエッジ である。 2 , つ ●− - 「 マルチグレイン並々i』処理 表2土最早実行可能条件の論理式表現       一一‥一一一一 いj マクロタスク番号 最早実行可能条件 刀貼 耳聡 対句 MT41 冠八 万八 MTマ 訂八 .リ八 万八〇 j7万同 MTyl が万口 月割4 Λ7TI5     ≒    (隔   24V巾3 (4ハ∧凰V巾:い   3V(2)│   らV□仙   に2)IV出3    (8)9    (8)10   脳V8田 111ハ(9V(8‰)  1113V1112  (8)9V(8)lo    2に : が77,-の実行が終了する : 万7;が訂石に分岐する : MTi-がj77S・に分岐し訂71・の実行が終了する j

(17)

24 第丿章マルチプロセッサシステム用の自動並列化コンパイラ

………Extended control dependence O Conditional branch .'゛`'・OR

ハAND

 >Original control now

図2よマクロタスクグラフ(MT(剥 2.j2,マルチグレイン並列処理 2.2.1.4 ダイナミックスケジューリングルーチン生成 匹  マクロデータフロー処理では、条件分岐やマクロタスクの実行時間の変 動のような、実行時不確定性の問題に対処するため、マクロタスクを実行 時にプロセッサクラスタ(P(コあるいはプロセッサ(P口に割り当てる方 式をとる。このダイナミックスケジューリングは、粗粒度タスクに対して適 用されるため、スケジューリングオーバヘッドは相対的に小さく抑えられ る。また、本手法では、()Sコールやランタイムライブラリを用いず、コン パイラにより生成されたダイナミックスケジューリングルーチンを使用す るため、オーバヘッドをさらに小さく抑えることができる。このスケジュー リングルーチンは任意のプロセッサ(PE)上で実行可能である。  ダイナミックスケジューリングアルゴリズムとしてはD、・lm.nli(・-CP法 旧AOK921を用いる。DyllamioCP法はスタティックスケジューリングア ルゴリズムであるCP法【Kasa91.Cofr761をダイナミックスケジューリング 用に拡張したものである。D、・11ami(・-CP法は、コンパイル時にマクロタス クグラフ上の各マクロタスクから出ロノードまでの最長パスが長い順にマ クロタスクの割り当てプライオリティを決定し、実行時にはレディタスク の中でプライオリティの高いマクロタスクを優先的に空きプロセッサクラ スタに割り当てるデータ駆動的な手法である。 2.2.2 中粒度並列処理(ループ並列化)  マルチグレイン並列処理では、マクロデータフロー処理により実行時に プロセッサクラスタ(P(ン)に割り当てられて処理される各マクロクスクに対 して、そのマクロタスク内部がループ並列化(D()j1処理あるいはD()a(・ross 処理)可能な場合には、PC内部の複数プロセッサ(PE)上でループ並列化 (中粒度並列処理)を行う。以下に、中粒度並列処理手法であるD()aH処理

(18)

¬ ・ I ・  ̄ ・ I ・ ㎜ ■ I ■ = -27 囲 第ク章マルチプロセッ升システム用の自動並列化コンパイラ とD,j;1,1oss処理について述べる。 2.2.2.1 Dnan処理  r)、Jill】処理IP、IWo86.Polv88.Wd`891はヽD(りレー'プの各イタレー-ション (繰り返し単位lにおけるループボディの処理を中粒度タスクとして、イタ レーション(中粒度タスク)間の並列性を利用する並列処理手法である詞列 えば、図2.5のループは、イタレーション間にはデータ依存は無いので、イ タレーションはどのような順番で実行してもよい。よって、それぞれのイ タレーションを別々のプロセッサに割り当てることによって並列処理する ことができる。  D()I=I.N    Λ(I)=B出十(TI川  ENDDO 図2.5: D(jaUレープの例  各プロセッサは割り当てられた複数のイタレーションの実行を終了した 後、他のプロセッサとバリア同期ドvolf881をとって次の処理に進む。各イ タレーションのプロセッサヘの割当て法にはいくつかの方法が提案されて いる。まず、コンパイル時に割当てを決定するスタティックな方式ではづ、 台のプロセッサのうちm番目のプロセッサに / j -一 (八'/がXO・−1)十1・・‥,mill爪V/川×・jにV〕 のイタレーションを割り当てる(各プロセッサに連続したイタレーション を割り当てる)方法と、 7 (/−1)jj+・・j≦y但し/=I‥.‥い`圧 2.2.マルチグレイン並列処理 のイタレーションを割り』1てる(各プロセッサにプロセッサ数間隔のイタ レーションを割り当てる)方法が・-一般的である。一方、実行時に割当てを 決定するダイナミックな方式では、セルフスケジューリング、チャンクス ケジューリング、ガイデッドセルフスケジューリング、トラペソイドセルフ スケジューリング、アフィニティスケジューリングなどといったいくつか のダイナミックスケジューリング手法が提案されているIPOKn87、P(ホ・88. TzNi93. Li)j94、Kasa911。  本自動並列化コンパイラでは、OS(・AR(2.3節参照1がイタレーションを ダイナミックスケジューリングするためのハードウェアをもっていないと しりことと、データのローカリティを高めるという理由で、スタティックス ケジューリングを用いて、同数のイタレーションを各プロセッサに割り当 てる方式を採用している。 2.2.2.2 Doacross処理  イタレーション間にデータ依存が存在するループの場合には、前述のD()a11 処理を適用することができない。しかし、イタレーション間で同期囲()H耽 MiPa絹を取ることによって、各イタレーションをある程度オーバラップし て並列処理できる可能性がある。例えば、図2.6のDoループでは、ステー トメントs1は、1回前のイタレーションのステートメントs2にデータ依 存しているので、Doa11処理を行うことはできない。しかし、前のイタレー ションでのステートメントs2が終了してから次のイタレーションのステー トメントslを実行するように、同期コードを挿入することによって、各イ タレーションを異なるプロセッサに割り当て並列処理することが可能であ る。このような処理をD()a(・ross処理[Cyは86、Cyt187]という。  本自動並列化コンパイラでは、プロセッサクラスタ(PC)に割り当てられ

(19)

28 第フ章マルチプロセッサシステム用の自動並列化コンパイラ ︱りIリリ ト h 5 DOTこ2.N   AiTI=lnl・}十(jl-11   印)けD山+Λ出/20   F出=D山十5 ENDDO 図2.6: Doa,・rosりレープの例 たマクロタスクがD(ja(・msりレープの場合、まず、コンパイラは同期オーバ ヘッドを短縮するリストラクチャリングIPaW(湖.W(jlf891を適用し、その 時のDo;l、・。s処理時間を推定する。次に、コンパイラはDoa.('1・oss処理を 適用した場合の推定処理時間と、ループボディ部に2.2、3節で述べる近細粒 度並列処理を適用した場合の推定処理時間を比較し、D、s・loss処理時間が 近細粒度並列処理時間より短い場合にD()a(・1・()ss処理用のマシンコードを生 成する。 2.2.3 近細粒度並列処理  マルチグレイン並列処理では、マクロデータフロー処理により実行時に プロセッサクラスタ(PC)に割り当てられて処理されるマクロタスクが、 ループ並列化(中粒度並列処理)を適用できないR司シーケンシャルルー プ)あるいはBPAである場合、PC内部の複数PE上で近細粒度並列処理 IHMKN901(ステートメント聞の並列処理)を行う。以下に、近細粒度並列処 理のコンパイレーション手法を述べる。 2.2.3.1 タスク生成とタスクグラフ生成  基本ブロック(BPA及びシーケンシャルループのボディ部の基本ブロッ ク)を効率よく並列処理するためには、並列性jゲ士分得られ、かつ、デー 2.2.マルチグレイン並列処理 2り タ転送や同期によるオーバヘッドをできるだけ少なくなるように、基本ブ ロックをタスクに分割することが必要である。本論文では、OSCAIU2、3節 参照)の処理能力やデータ転送能力を考慮して、近損料度タスクの粒度とし てステートメントレベルの粒度を用いている。  図2.7は基本ブロックの一例である。なお、この基本ブロックは、クラウト 渋によるスパース行列の求解を、シンボリックジエ水レーション渋[(:j1LXV701 を用いてループフリーコードに展開して行うプログラムである。この基本 ブロック内のステートメントをタスクと定義すると、タスク間にはデータ 依存LP爪LJ80.Paxvo86. mn(ヽ網が存在する。データ依存すなわちタスク 測の先行制約は図2.8に示すようなタスクグラフ[C研爪I妬心鯛と坪ばれ る無サイクル有内グラフで表される。図2、8において、各ノードはタスクに 対応しており、ノード内の数字はタスク番号、を表し、ノードの脇の数字は PE上でのタスク処理時間/、を表す。ノードyカヽらノードバこ向かって引か れたニッジはタスク石がタスクフうに先行するという部分的な順序制約を表 す。タスク間のデータ転送も考慮する場合には各々のエッジは通常、可変の 重みを持つ。この重み仁は、タスクフでとタスク万が異なるPHこ割り当て られた場合には、2つのタスク間のデータ転送時間となる。  また、一般のプロセッサ上でのタスク処理時間は、浮動小数点演算にか かる時間がオペランドの値によって変動することがあり、必ずしも一一-定の 値であるとは限らない。この問題に対しては、各演算に必要な実行時間の 平均値を用いることで解決することが、実際のフルチプロセッサシステム │こで確認されている胎べa側。しかし、oscΛnではヽ2.3節で述べるよう に各命令を1クロックで実行するRISCプロセッサを採用しているので、コ ンパイル時にタスクの処理時間を正確に求めることができる。

(20)

− W ¶ り ’ ● ・ r l 図2.8:タスクグラフ Task No. Task processmg time Data transfer time t ︰り 割 拍 弟ク章マルチプロセッサシステム用の自動普列代コンパイラ <(LU Decomposition.. 1) 2 3’ 4 56 U 12 2434544555 UUIUI 一一 一 一 一 一 一 一 a12 a24 // 111 122 a34 /133 =  a '152 aa 一一一一 45 55 / ㎜ * U24 144 154 * U 45 ((FOrward Substitution ..   y︲ N ln yyb jjj 789 10) ’lli 11 13)   c9 9 1a yyb y5 -一 一 一 一 -bl b2 一 一   一 一

咄咄咄

  55 bb  一一 一一 / / 一 //・/ 111 19つ ら*y2 !33III 44 54 55 * y4 <<Backward Substitution>>  14)x4=y4 − u45 *y5  15)x3ニy3 ' u34 *x4  16)x2=y2 ' u24 *x4  17)xl ° yl ‘ u12 *x2 図2.7:近細粒度タスクの例 2.2.マルチグレイン並列処理 19

(21)

− ・ 一 一 − 33 32 第:ご章マルヂプロセッサシステム用の自動笠利化コンパイラ 2.2.3.2 近細粒度タスクのスタティックスケジューリンク  タスク架台をマルチプロセッサ│で効率よ<処理するためには、タスクの PEへの最適な割当て、および回一プロセッサでのタスクの最適な実行順序の 決定を行わなければならない。タスクの最適な割当で、及び最適な実行順序 の決定問題は、実行時間最小マルチプロセッサスケジューリング問題戸)汀爪 に万引として扱うことができる。oscAnコンパイラでは、スケジューリ ングに要する時間と生成されるスケジュづレの質の双方を考えて、データ転 送時間を考慮したヒューリスティックアルゴリズムである(フP/DT/MISF法

(C雨i(帽Path / Dポa Trans副づMost llmnpdiate Su(・(・(yors Fi1・st)[I仙s訪L IらHX901あるいはDT/CP法(Dnut TrnnshづC雨i(帽Path)[FSSIぐ921を 採用している。なお、近根粒度タスクのスケジューリングの詳細について は、y4節で述べる。 2.2.3.3 マシンコード生成  実際のマルチプロセッサ上で近細粒度並列処理を効率良く行うためには、 スタティックスケジューリング結果を用いて最適な並列マシンコードを生成 する必要がある。本コンパイル手法では、スケジューリング結果より帽1) タスクの実行されるPE、(2)同一のPEで実行されるタスクの実行順序、 (3)タスク間で必要なデータ転送及び同期に関する情報を得る。  従って、PEに割り当てられたタスクの命令列を順番に並べ、データ転送 兪今や同期命令を必要な箇所に挿入することにより、各PEのマシンコード を生成することができる。 OSCAR コンパイラでは、タスク問で同期をとる ためにバージョンナンノ゛一法阪田x側を用い、またヽ各基本ブロックの最 後の部分で同期をとるために、OSCARのハードウェアでサポートしている バリア同期命令を各PEのプログラムに挿入する。 7.ニ?, −一 一 マルチグレイン並ダ│』処理  また、スタティックスケジューリングで得られた情報を短大限に利用して コード最適化をコンパイラが行うこともできる。例えば、あるタスクが同 一のPEに割り当てられた他のタスクにデータを受け渡す際に、そのPE内 のレジスタを利用することができる。このレジスタの最適利用により、実 行時間は著しく短縮できる。さらに、同期を必要とするタスクや、タスク割 当て、実行順序に関する情報を熟慮することで、コンパイラは匯]期のオー バヘッドを最小化することができる。

(22)

- − SM PE n ふ1 2.3 第2噂マルヂブロセッサシステム用の自動並列化コンバイ − フ

対象マルチプロセッサシステム(OSCAR)の

アーキテクチャ

マルチグレイン載列処珊.では、図2.9に示すよ引 プロセッサ上にロー カルメモリまたは分散共有メモリを持ち、各プロセッサがインタコネクショ ンネットワークを介して集中共有メモリに平等に接続されているマルチプ ロセッサシステムを対象とする。なお、分散共有メモリを持つシステムで は、集中共有メモリがない場合にも、マルチグレイン並列処理を実現する ことが可能である。また、インタコネクションネットワークに関しては、ソ フ?ヽウェア的にプロセッサのクラスタリングfグループ化1を容易に実現で きるバス結合やクロスバ結合が望ましい。  以下の節では、マルチグレイン並列処理をインプリメントし、性能評価 に使暦したマルチプロセッサシステムOS(T'ARのアーキテクチ列IGHN9(1. KnNH881(図2.10)について述べる。 2.3.1 0SCARの全体構成  OSCARは、図2.10に示すように、以下の構成要素からなる。 ・最大16台のプロセッサエレメント(PEj ・3個の集中共有メモリ(CSM) ・Jントロール&1/Oプロセッサ(CP) ・3本のシステムバス  OSCARは3本のシステムバスを持っているため、バスの総合転送能力が 高く、各バスにはバリア同期を効率よく実現するための制御ハードウェア 2.3.対象マルチプロセッサシステム巾朕yA川のアーキテクチャ

Centralized Shared Memory(CSM)

lnterconnection Network PE ● I ● IE SM LM PE DSM 一 一 LM PE 図2.9:対象アーキテクチャ PE 1………PC………1………PC………  1………PC………1        DSM:Distribulad Shar自dM白mory        LM : Local Memory        PC :ProcessorCluster

(23)

36 第2章マルチプロセッサシステム用の自動並列化コンパイ ラ

HOST COMPUTER

CONTROL&│/O PROCESSOR CentralizedShared Memoryl (Simultaneous Readable)

CSM2

CSM3

RISC Processor │/O Processorl

Bankl Bank2 Bank3

¬ ̄ ̄ |

Addr.n Addr.n Addr.n

Data Memory Pro9・ Memory Distributed Shared Memory | Read&Write Requests Arbitrator

Bus lnterface

PE5 (CP) PE6 PE8 (CP) PE9 PE10 (CP) PE11 PE15 (CP) PE16 Distributed Shared Memory  (DualPort)      (CP) -5MFLOPS 32bit RISC  Processor

 (64 Registers) -2 Banks of Local  Pro9ram Memory

・Local Data Memory ・Stack Memory -DMA Controller       PEI -5PE CLUSTER(SPCI)←SPC2→-SPC3一 ← )-→ 図2.1():()SCARのアーキテクチャ 匹 2.3.対象マルチプロセッサシステム(OSC・,4刑のアーキテクチャ 37 が備えられている。また、oscAnはcPを介して外部のホストコンピュー タに接続されている。 2.3.2 PEのハードウェア構成  図2.11にOSCARのPEのハードウェア構成を示す。各PEは以下の構 成要素よりなる。 ・32ビットメイン演算ユニット(MP□ .32ビット整数演算ユニット(IPU) ・32ビット浮動小数点演算ユニット(FPU) .ローカルプログラムメモリ(LPM) ・ローカルデータメモリ(LDXI) ・スタックメモリ(SM) ・分散共有メモリ(DSM) ・DMAコントローラ(DMA) ・ローカルバス(2本) ・インストラクションバス ・バスインタフェイス  PEは最大5MFLOPSの処理能力を持つ1ワード(32ビット)固定命令長 のカスタムメイドのRISCプロセッサを持っている。このように、全ての 命令を1クロックで実行できるRISCプロセッサを採用することによって、

(24)

4ド 弟フ争マルナプロセッサシステム用の自動並列化コンパイラ SYSTEM BUS INSTRUCTION BUS DMA LPM INSC DSM  SM LDM MPU IPU FPU REG MPU DMA CONTROLLER LOCAL PROGRAM MEMORYぐ128KIV*2BANK) INSTRUCTION CONTROL UNIT DISTRIBU’1モDSHARED MEMORY(2KW) STACK MEMORY(4KW) L.0CAL DATA MEMORY (256KW) MAIN PROCESSING UNIT INTEGER PROCESSING UNIT FLOWTING PROCESSING UNIT REGISTER FILE(M REGIS゛nERs) 図2.11:(.)SCARのPEのハードウェア構成 W jj 対象マルチプロセッサシステムげ班CA拓のアーキテクチャ 3り コンパイル時の実行計画と実行時の処理タイミングのずれを排除し、コン パイル時の最適化の効果を最大限に引き出すことができる。

2.3.3 メモリ構成

 OSCIARは、図2.10及び図2七に不すように、集中共有メモリ(CSM八 分散共有メモリ(DSM)、ローカルメモリ(LDM)を持っている。CSXIおよ び他のPE内のDSMに対するアクセスには、3本あるシステムバスのうち の1本を介して行ない、4クロックを要する。 LDM とそのPE内のDSMに 対するアクセスには、ローカルバスを介して行ない、1クロックを要する。 DSMは内外同時アクセス可能で、内部バスとの競合は起こらない。なお、 本論文では、以後、ローカルメモリ(LDM)及び分散共有メモリ(DSM)を 単にローカルメモリ(LM)と呼ぶことにする。  次に、OSCARのメモリ空間を図2.12に示す。 OSCAR は、ローカルメ モリ空間とシステム(グローバル)メモリ空間が図2.12のように対応してお り、それぞれ32ビットアドレスで表される領域を持っている。ローカルメモ リ空間は、内部メモリ領域とシステムアクセス領域に分けられる。各MPU は、システムアクセス領域を通してシステムメモリ空間をアクセスするこ とができる。したがってMPUは、ロード・ストア命令を用いてシステムメ モリ空間を内部メモリ空間と同じように扱うことができる。システムメモ リ空間には、CPおよびPEの内部メモリ空間に相当する領域、CSMの領 域、およびブロードキャスト領域が割り当てられている。 MPUは、ブロー ドキャスト領域に書き込むことにより、全てのDSMに一斉に書き込むこと ができる。OSCARは上記のようなメモリ空間を持つため、以下のような データ転送が可能である。

(25)

抽 第丿章マルチプロセッサシステム用の自動並列化コンパイラ

 SYSTEM MEMORY SPACE IMXXXXSxl r・・…・・‥‥‥‥‥‥‥‥‥‥1      1 UNDEFINED i HXXXX) 2(XXXX) 1(XXXXX) ll(XXμ) 2(MXXX) 21(XXXX) 22(XXXX) 2F(XXXxj 3 ( X X ) 0 0 0 M(X)000 FFFFFFFF LOCAL MEMORY SPACE {XX賤jx幻 8(X) 1(Xが) 300(X) 4CXXX) 80(Mj R)o(X) CONTROL SYSTEM P E I 6 CSM],2.3 NOTUSE ACCESS】NG AREA 図2.12:()SCARのメモリ空間 l(X)()(X) FFFFFFFF W 2.3,対象マルチプロセッサシステム田S(I.J?J のアーキテクチャ ・DSMを使用した1PE対1PEの直接データ転送 ・DSMを使用した1PE対全PEのブロードキャスト転送 ・CSMを使用した1PE対複数PEのデータ転送 11

2.3.4 マクロデータフロー処理のためのアーキテクチャサポ

    ート

 OSCARは、PEを集中共有メモリに平等結合したアーキテクチャとなっ ているが、複数のPEをグループ化することにより、3クラスタまでのマル チプロセッサクラスタシステムとして使用することができる。osc’Λnで は各プログラムの粒粒度タスク間の並列性に応じ、全プロセッサを2また は3プロセッサクラスタに分け、マクロデータフロー処理を行うことがで きる。その際、各プロセッサクラスタでは、内部のPEを用いて、各マク ロタスクを中粒度レベル(ループのイタレーションレペル)、近根粒度レベ ル(ステートメントレベル八または根粒度レベル(マクロタスク内のサ ブRB、サブBP貼サブSBレペル)で階層的に並列処理することができる [I包HX91、OAMH個41。  本マシン上でのマクロデータフロー処理のインプリメント[HA()K剛で は、現在のところ、各プロセッサクラスタに同一のプログラムコード(全 マクロタスクのコード)を持たせ、マクロタスク間の共有データはCSMに 配置し、複数マクロタスク間での共有データの授受には、通常、CSMを介 した間接データ転送を用いる。但し、本論文で提案するデータローカライ ゼーションを適用する場合には、マクロタスク間でのデータ授受をプロセッ サ上のローカルメモリを介して行っている。  また、ダイナミックスケジューリングコードは メLにより実行され、そ 一     E       E     E  M  G  M  G  M  3  E  0R 1 1 1 6 1 S  肌   E  宍 ﹁ J E E 一 闘   m  N      N 一⋮⋮⋮⋮⋮

二]

(26)

-↓2 第]胆マルヂプロセッサシスナム用の目指並列化コンパイ − フ のPEが実行時に各プロセッサクラスタヘのマクロタスクの割当てを決定 し、その通知信号をプロセッサクラスタヘ送る。そして、その通知信号を 受け取ったプロセッサクラスタは、通知信号に対応するマクロタスクを実 行する。この際、DSMを使用した メド対1PEの直接データ転送やブロー ドキャスト転送が用いられる。 2.3.5 近細粒度並列処理のためのアーキテクチャサポート  OS( ̄`Aロ士。での近細粒度並列処理では、データ転送オーバヘッドの最小化 のために、DSMを介した1PE対IPEの直接データ転送と、ブロードキャ スト転送が用いられる。CSMを使用した間接データ転送では、CSMへの ‥書き込み`'とCSMから一説み込み‥の2回のデータ転送が必要となるのに 対して、IPE対1PEの直接データ転送では、PLからもう1つのPEへの ヽヽ書き込み"の1回のデータ転送のみを要する。ブロードキャスト転送も、 CSMによる間接データ転送と比較して転送時間を大幅に削減することがで きる。すなわち、スタティックスケジューリングを用いて、3種類のデータ 転送モードを最適に使い分けることにより、データ転送によるオーバヘッド を大幅に削減することが可能である。さらに、DSMを使用した同期では、 各PEがDSM上に書き込まれた同期フラグをPE内部でチェックするので、 同期フラグがCSM上にある場合のビジーウェイトのために生じるバスのバ ンド幅の低下を防ぐことができ、同期のオーバヘッドを軽減できる。 W 2.4.第2章のまとめ

2.4 第2章のまとめ

詣  本命では、F()rtrallプログラムをマルチプロセッサシステム士。で、粗粒度 タスク(ループやサブルーチン等)レベル、中粒度タスク(ループのイタ レーション)レベル、近細粒度タスク(ステートメント)レベルで階層的に 並列処理するマルチグレイン並列処理のための自動並列化コンパイラにつ いて述べた。また、本章では、マルチグレイン並列処理の対象アーキテク チヤについても述べた。

(27)

第丿章マルチプロセッサシステム用の自動並列化コンパイラ − 一 一

第3章

データローカライゼーションのため

のループ整合分割

(28)

-↓ 6 第,j章データローカライゼーションのためのループ巻物分割

3.1 まえがき

 2コ節で述べかマルナグレイン並列処理及びマクロデー-タフロー処理では、 粒粒度クスク(マクロタスクバよ、ダイナミックスケジューリングにより、 実行特にプロセッサあるいはプロセッサクラスタに割り当てられて処理さ れる。このようなダイナミックスケジューリングを用いる方式では、マク ロタスク間の共有データを集中共有メモリ上に配置し、マクロタスク間の データ転送を集中共有メモリを介して行なうのが一般的であるが、集中共 有メモリを介したデータ転送オーバヘッドが大きくなってしまうという問 題が生じる。そこで、マクロタスク問データ転送オーバヘッドを軽減し効 率良い首列処理を実現するためには、データ分割・配置を適切に行い各プ ロセッサ上のローカルメモリを介したマクロタスク間データ授受を実現す ることが重要となる。  例えば、ローカルメモリの有効利用をはかり単一ループの処理の高速化を 行なう基礎的な研究として、TnとPa(hla[TuPa93j、LilLi921、Ei即nmmパEi問93] が、ΛΓ即づ)riv出z肘i()11法とその自動化手法を提案している。このÅ1Tay P出・川z川on法では、単一リレープ内で使用される作業配列変数を各プロセッ サ上のローカルメモリに割り当てることにより、ループのイタレーション 間並奸詐を向上させ、かつ、集中共有メモリアクセスによるオーバヘッド を軽減する方法である。しかし、このAITav Priv川z川()n法は、複数ルー プ問でのローカルメモリを介したデータ授受に適用することはできない。  分散メモリ型マルチプロセッサシステム上でのデータ分割・配置に関して は、Hi油Pe汀()rnmnc(ヽFortran(HPF)IHPFF9刈ChMZ95]やFo出・anDtHKKIに011 等のFouran拡張言語を用いて、ユーザがデータの分割・配置を指定する 方法が一般的である。しかし一般ユーザが最大の並列性と最小のプロセッ 匹 3.J.まえがき -4 サ間通信を満たすデータ分割・配置を決定することは才知こ困難である。  また、最近では、データ分割・配置を自動的に行う方法がいくつか提案 されている.LiとChヅL回h問は、単一ループ内での配列データの参照パ ターンからデータ分割・配置を決定し、適切な通信ライブラリを用いた並列 コードを生成する方法を提案している。 RamanuDm とSaday仲I)aO{ah911 は、ネストされたDoa11ループを、プロセッサ間通信なしで実行できるよう に分割する方法を提案している。 ChellとSh川Chsh問は、ネストされた ループをプロセッサ間通信なしで実行できるように分割する方法、即ち、プ ロセッサ間通信なしで実行するために同じプロセッサに割り当てるべきイ タレーション集合の解析方法を提案している。しかしながら、これらのア プローチは、単一のネストされたループに対してしか適用することができ ないという問題点がある。一方、GuptaとBan雨(ヽ(リGuB 「)2ドよ、プログラ ム中の各ループで望まれるデータ分割・配置に関する制約とその制約が実 行時間に与える影響を求め、プログラム全体で実行時間を最小化するよう に制約を調整して、データ分割・配置を決定する方法を提案している。ま た、AndelヽsonとLnバAnLa931は、コンパイラがデータと処理を線形変換 行列に基づいてプロセッサに割り当てできる場合に、データと処理を分割 する方法を提案している。しかしながら、これらのデータ分割・配置法は、 コンパイラが静的にデータ割当てを行える場合にしか適用できないという 制約があり、マルチグレイン並列処理及びマクロデータフロー処理のよう に実行時にデータと処理を動的に配置する方式には適用できない。  そこで、本章では、マルチグレイン並列処理及びマクロデータフロー処理 において、複数ループ開でのローカルメモリを介したデータ授受(データロー カライゼーション)を可能とするためにづレープ間に存在する配列変数に関 するデータ依存を局所化するように、複数ループ(データと処理)を整合して

(29)

18 第3嘸データローカライゼーションのためのループ整合分割 分割するループ整合分割法IYMOK9=kYM()()'93. YMFK91・・.YMFK95b] を提案する。  本命では、以ド、3.2節でマルチグレイン並列処理及びマクロデータフロー 処理におけるデータローカライゼーションの概要を述べ、3.3節でデータロー カライゼーションのためのループ整合分割法について述べる。 匹 j.2.データローカライゼーションの概要

3.2 データローカライゼーションの概要

49  本節では、集中共有メモリを介したデータ転送オーバヘッドを軽減する ためのデー-タローカライゼーション手法の概要を述べる。デ≒-タローカラ イゼーションとは、マクロタスク間で必要なデータ授受を、集中共有メモ リを介さず、ローカルメモリを介して行なう手法である。本手法のコンパ イル手順を以下に示す。 け)D() 「ドレープの並列性を利用し、かつ、複数ループ間でローカルメモ   リ経由データ授受を行うために、3.3節で述べるループ整合分割法を用   いてループを分割する。ループ整合分割法は、分割後に生成される部   分ループ聞で、配列データの定義・参照範囲が等しくなる、即ち、部   分ループ間でローカルメモリを介してデータ授受が行えるように、複   数ループ(データ及び処理)を整合して分割する方法である。 (2)多量のデータ転送を必要とするマクロタスク(ループ)聞で、PE士。の   ローカルメモリを介してデータ授受を行うためには、それらのマクロ   タスク集合を実行時に同一のプロセッサ(あるいはプロセッサクラス   帽に割り当てなければならない。そこで、本手法では、第1章及び第   ら章で述べるマクロタスク融合法、あるいは、パーシャルスタティック   クスク割当を用いたダイナミックスケジューリング法により実現する。 (3)実行時に回一のプロセッサ(あるいはプロセッサクラスタ)に割り当   てられるマクロタスク間で、プロセッサ七のローカルメモリを介して   データ授受を行なうためのマシンコードを生成する。本手法では、第   4章及び第5章で述べるデータ転送コー-ド生成法により実現する。

Referensi

Dokumen terkait

Maimoen Zubair merupakan satu-satunya pimpinan atau Kiai di Pondok Pesantren Sarang yang mempunyai ide pengembangan lembaga pendidikan formal dengan kurikulum nasional dan

Pasal 14 Ayat (3): “Dalam menentukan tindak pidana yang dituduhkan padanya, setiap orang berhak atas jaminan-jaminan minimal berikut ini, dalam persamaan yang penuh: (i)

• RLE-E ini tidak dianggap sebagai fitur utama resort namun sangat penting keberadaannya untuk menciptakan atmosfer yang tepat pada resort, serta menyediakan ragam aktivitas untuk

bahwa untuk melaksanakan ketentuan Pasal 9 huruf a, Undang-Undang Nomor 1 Tahun 2015 tentang Penetapan Peraturan Pemerintah Pengganti Undang-Undang Nomor 1 Tahun

Penentuan subjek penelitian ini menggunakan sampel bertujuan (purposive sampling). Observasi yang dilakukan dalam penelitian ini adalah observasi guru mengajar dan

Dalam Peraturan Presiden Nomor 12 Tahun 2013 tentang Jaminan Kesehatan terdapat 2 pasal mengenai Penilaian Teknologi Kesehatan (Health Technology Assessment) yakni tentang

Untuk menjamin kualitas pendidikan di Program Studi Teknik Industri Universitas PGRI Adi Buana surabaya, diperlukan sebuah rancangan sistem pengukuran kinerja (SPK)

Pada soal nomor 4 dan nomor 5 subjek mampu menyatakan hal-hal yang diketahui dan yang ditanyakan dalam soal, namun subjek kurang mampu membuat model matematika