独立大学法人・電気通信大学 大学院情報システム学研究科 情報ネットワーク学専攻・並列処理学講座

Slides:



Advertisements
Similar presentations
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
Advertisements

連続系アルゴリズム演習 第2回 OpenMPによる課題.
第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
クラスタの構成技術と クラスタによる並列処理
4章 制御の流れ-3.
LMNtalからC言語への変換の設計と実装
全体ミーティング (4/25) 村田雅之.
研究集会 「超大規模行列の数理的諸問題とその高速解法」 2007 年 3 月 7 日 完全パイプライン化シフト QR 法による 実対称三重対角行列の 固有値並列計算 宮田 考史  山本 有作  張 紹良   名古屋大学 大学院工学研究科 計算理工学専攻.
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
オペレーティングシステムJ/K 2004年10月7日
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
福盛 秀雄, 浜中 征志郎, 菅原 健一, 吉川 潤, 中山 周平 早稲田大学 村岡研究室
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
CONCURRENT PROGRAMMING
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
変更文の移動を可能にした 静的単一代入形式上の部分冗長性除去
過負荷時のWebアプリケーションの 性能劣化を改善する Page-level Queue Scheduling
Occam言語による マルチプリエンプティブシステムの 実装と検証
型付きアセンブリ言語を用いた安全なカーネル拡張
OpenMPハードウェア動作合成システムの検証(Ⅰ)
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
言語プロセッサ2007 平成19年9月26日(水) (Ver.2 平成19年10月3日変更)
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オペレーティングシステム 第4回 プロセス生成とスレッド
マルチスレッド処理 マルチプロセス処理について
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
通信機構合わせた最適化をおこなう並列化ンパイラ
動的データ依存関係解析を用いた Javaプログラムスライス手法
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
バイトコードを単位とするJavaスライスシステムの試作
GW space-timeコードの大規模な有機-金属界面への適用に向けた高効率化
目的:高速QR分解ルーチンのGPUクラスタ実装
C言語を用いたマシン非依存な JITコンパイラ作成フレームワーク
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
ウェブアプリケーションサーバの Degradation Schemeの 制御に向けて
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
JAVAバイトコードにおける データ依存解析手法の提案と実装
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
コンパイラ 2012年10月1日
同期処理のモジュール化を 可能にする アスペクト指向言語
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
社会の情報インフラストラクチャとして、高性能コンピュータおよびネットワークの重要性はますます増大しています。本研究室では、コンピュータおよびネットワークの高速化を狙いとする並列・分散情報処理の科学と技術に関する研究に取り組んでいます。効率のよいシステムの実現を目指して、下記の項目を追求しています。 ◇コンピュータアーキテクチャ.
静的単一代入形式に基づく最適化に関する研究
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
ネットワーク・プログラミング デバイスドライバと環境変数.
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
第6回放送授業.
SMP/マルチコアに対応した 型付きアセンブリ言語
プログラミング基礎演習 第4回.
コンパイラ 2012年10月11日
分散メモリ型並列計算機上での行列演算の並列化
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
並列・分散ソフトウェア.
並列・分散ソフトウェア(2).
情報処理Ⅱ 第3回 2004年10月19日(火).
C言語講座 四則演算  if ,  switch 制御文.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

独立大学法人・電気通信大学 大学院情報システム学研究科 情報ネットワーク学専攻・並列処理学講座 粗粒度並列化コンパイラCoCo 独立大学法人・電気通信大学 大学院情報システム学研究科 情報ネットワーク学専攻・並列処理学講座

背景と目的 SMP型並列計算機を対象とした 粗粒度並列化コンパイラCoCo の開発 粗粒度タスク水準の並列処理による高速化の要請 SMP型並列計算機を対象とした 粗粒度並列化コンパイラCoCo の開発 CoCo: Coins-based Coarse-grain Parallelizing Compiler ★注:粗粒度タスク=マクロタスク、粗粒度並列化=マクロタスク水準の並列化

粗粒度タスク水準の並列処理 ■粗粒度並列処理の流れ 1.プログラム全体を粗粒度タスク(マクロタスク)に分割 2.粗粒度タスク間の制御フローおよびデータ依存を粗粒度タスクグラフとして表現 3.同タスクグラフ上で、粗粒度タスク間の並列性を実行開始条件として表現 4.実行時に実行開始条件を検査し、条件が揃ったタスクをプロセッサに割当て並列実行

粗粒度並列化コンパイラCoCo ■設計方針 C言語の逐次プログラムを入力とし、粗粒度並列処理を行う並列プログラムを自動作成 コンパイラ開発基盤Coinsを使用 並列プログラミングインタフェースOpenMPによる並列化 高水準中間表現HIR上でのデータフロー解析 SMP型並列計算機を対象 ★注: HIR:High-level Intermediate Representation

CoCoの位置付け 高水準中間表現(HIR) 低水準中間表現(LIR) ソースプログラム 機械語プログラム フロー解析・最適化 粗粒度並列処理 低水準中間表現(LIR) 機械語プログラム

CoCoにおける処理の流れ 逐次プログラム(C) B. 並列スレッドプログラムへの変換 OpenMP指示文を挿入 Switch文への変換 動的スケジューラを追加 CoinsによるHIRへの変換 高水準中間表現(HIR) OpenMPを含むHIR A. 粗粒度タスクグラフの生成 タスク分割 依存解析 実行開始条件 OpenMP+Cへ逆変換(Hir2C) OpenMPプログラム OmniOpenMP-1.4 HIR+粗粒度タスクグラフ 並列プログラム(C)

粗粒度タスクの制御依存とデータ依存を解析 A. 粗粒度タスクグラフの生成 Coinsのフロー解析結果を利用して 粗粒度タスクの制御依存とデータ依存を解析 Coinsの機能を用いて、ソースプログラムをHIRに変換 HIR上でプログラム全体をマクロタスクに分割 分割したマクロタスクの情報から制御依存関係を算出 分割したマクロタスクのデータ依存解析関係を算出 求めたデータ依存解析結果を用いて、各マクロタスクの実行開始条件を算出 ★注:Coinsで分割された基本ブロックの切れ目を調整し、マクロタスクの切れ目を形成する。このとき、マクロタスクは必ず1つ以上の基本ブロックから構成される。

粗粒度タスクの実行開始条件 MT1 MT2 MT4 MT3 MT5 ■実行開始条件を求めるに必要な情報 支配と逆支配関係 実行確定条件 非実行確定条件 データアクセス可能条件 MT2 MT4 MT3 マクロタスク 実行開始条件  MT1   TRUE  MT2 1(1,2)  MT3 1(1,3) ∨(1(1,2) ∧(2,3))  MT4 2(2,4) MT5 4 ∨(1,3) ∨(2,3) MT5 条件分岐 データ依存 制御依存

B. 並列スレッドプログラムへの変換 ■OpenMP指示文をHIRに挿入 並列領域を示すOpenMP指示文をコメント文として挿入 実行するマクロタスク番号を選択する文(switch、case)を挿入 スケジューラのためのOpenMPのロック関数、プライベート変数の登録

OpenMP指示文の挿入 int main(void){ omp_set_num_threads(n); // スレッド数の指定 while(1){ taskNum=getTask(); //スケジューラへのアクセス switch(taskNum){ case1: ---MT1--- case2: ---MT2--- case3: ---MT3---  }}} return(0); } omp_set_num_threads(n); // スレッド数の指定 #pragma omp parallel // 並列リージョンの開始 { omp_set_lock (&lock); // ロックの獲得 omp_unset_lock (&lock); // ロックの解放

選択文の挿入 int main(void){ int i,j; int a1[100],a[200]; /** MT1 ** /  for(i=0;i<100;i++){   a1[i]=…;  } /** MT2 ** /   a2[i]=…; /** MT3 ** /  printf(“%d%d”,a1[1],a2[2]);  return(0); } while(1){ if (処理が完了) break; taskNum=getTask(); //スケジューラにアクセス   switch(taskNum){ /** MT1 **/ case1:{ for(i=0;i<100;i++){ a1[i]=...; } (実行開始条件の更新)    break; ★注:福岡岳穂,本多弘樹,弓場敏嗣: OpenMPによる粗粒度タスク並列実行方式, 情報処理学会ハイパフォーマンスコンピューティング研究会, Vol.2000,No.73,pp.65-70 (2000).

2004年度の研究:CoCoの改良 旧版CoCoの問題点 MT1 MT4-1 MT2 MT3 MT4-2 MT4-3 MT4-4 MT4-5 MT4 MT4-6 MT5 :制御フロー :データ依存 ●問題点:左図でMT4の処理時間が長い場合、並列処理による実行時間の短縮は不可能 ●解決法:右図のようにMT4を更にマクロタスク分割することにより、実行時間の短縮が可能 ⇒マルチスケジューラ方式の導入

階層的マクロタスクの並列処理 ■階層的マクロタスクのスケジューリング ●マルチスケジューラ方式 スケジューラを各サブルーチンごとに配置(各サブルーチンを構成するマクロタスク群は、各サブルーチンごとに配置されたスケジューラによって管理) 長所:複数回呼び出しの関数を動作させることが可能 短所:各サブルーチンにおけるスレッド数をあらかじめ設定 ●スレッド数の設定方式 環境変数により、最大スレッド数を指定 各サブルーチンごとにスレッド数を指定 現状はベストエフォート・スケジューリング

omp_set_num_threads (n) omp_set_num_threads (m) マルチスケジューラ方式の例 int main(void){ } void sub( ) { } omp_set_num_threads (n) omp_set_num_threads (m) スケジューラ1 スケジューラ2 MT1 MT2-1 MT2 (sub) MT2-2 MT3 MT2-3

omp_set_num_threads,pragma omp parallelを用いて指定数のスレッドを起動 スケジューラの実行時動作 Start omp_set_num_threads,pragma omp parallelを用いて指定数のスレッドを起動 マクロタスク有 End No Yes No レディマクロタスク有 Yes ●実行開始条件 マクロタスクの終了条件 レディキューへの登録済フラグ 実行開始条件を満たしたマクロタスクを入れるキュー 排他ロック獲得 マクロタスク終了通知 実行開始条件の評価 レディマクロタスクの番号を獲得 排他ロック開放 スレッドにマクロタスクを割り当て

CoCoの評価 使用したベンチマークプログラム 1.単純なプログラム 2.行列積 3.SPEC tomcatv FortranをCに書き換えたもの 計算部分を4並列で動かせるようにブロック化

CoCoの評価環境 SMP型並列計算機 OS Solaris 8 プロセッサ SUN UltraSPARC II (450MHz) × 4 メモリ 1GB Javaコンパイラ JDK 1.4.2 逐次コンパイラ gcc 2.95.3 OpenMPコンパイラ Omni-1.4

評価1:単純なプログラム ●単純なプログラムのマクロフローグラフ MT2-1 MT1 MT2 MT2-2 MT2-3 MT2-4 MT2-5  :制御フロー  :データ依存

評価1:単純なプログラム 測定結果 ★注:計算部分MT2-2~2-5のそれぞれ実行時間は 3.81[sec] 実行時間 [sec] 速度向上比 逐次実行 15.19 1 旧CoCo 15.21 0.99 新CoCo 3.85 3.95 ★注:計算部分MT2-2~2-5のそれぞれ実行時間は 3.81[sec]

評価1:単純なプログラム 台数効果 :旧CoCo :新CoCo

評価2:行列積 ●行列積プログラムのマクロフローグラフ MT1 MT2 MT3 MT4-1 MT4 MT4-2 MT4-3 MT4-4  :制御フロー  :データ依存

評価2:行列積 測定結果 ★注:計算部分MT4-2~4-5のそれぞれ実行時間は 8.17[sec] 実行時間 [sec] 速度向上比 逐次実行 37.7 1 旧CoCo 34.1 1.11 新CoCo 16.7 2.25 ★注:計算部分MT4-2~4-5のそれぞれ実行時間は 8.17[sec]

評価2:行列積 台数効果 :旧CoCo :新CoCo

評価3:SPEC tomcatv 測定結果 実行時間 [sec] 速度向上比 逐次実行 202.40 1 旧CoCo 272.56 0.74 113.57 1.78

評価3:SPEC tomcatv 台数効果 :旧CoCo :新CoCo

CoCoの評価(まとめ) 単純なプログラムでは、ほぼリニアな速度向上 4プロセッサSMPマシンでの速度向上 行列積: 約2.2倍 SPEC tomcatv: 約1.8倍 リニアな速度向上にならない原因は、並列計算部分の限界と並列化によるオーバヘッド

今後の課題 スレッドの自動割り当て プログラムの特性を解析し,各サブルーチンに適切なスレッド数を自動的に割り当てる機能を実装 ループ、サブルーチンの並列処理 並列可能なループ、サブルーチンを適切な粒度に自動的に分解して粗粒度並列処理を行う機能を実装 中間表現HIRから、直接、機械語プログラムの生成 OpenMPコンパイラに依存しないコード生成機能の実装