タスクスケジューリング    .

Slides:



Advertisements
Similar presentations
HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
Advertisements

©2008 Ikuo Tahara探索 状態空間と探索木 基本的な探索アルゴリズム 横形探索と縦形探索 評価関数を利用した探索アルゴリズム 分岐限定法 山登り法 最良優先探索 A ( A* )アルゴリズム.
三木 光範 (同志社大学工学部) 廣安 知之 (同志社大学工学部) 花田 良子 (同志社大学工学部学部 生) 水田 伯典 (同志社大学大学院) ジョブショップスケジューリング問 題への 分散遺伝的アルゴリズムの適用 Distributed Genetic Algorithm for Job-shop.
木探索によるCSPの解法 (Tree search algorithms for solving CSPs) 認知システム論 制約充足( 2 ) 制約をみたす組合せを探すエージェント バックトラック法 フォワードチェック 動的変数順序.
第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
メモリコンシステンシモデル memory consistency model
点対応の外れ値除去の最適化によるカメラの動的校正手法の精度向上
記 憶 管 理(1) オペレーティングシステム 第9回.
アルゴリズムイントロダクション第2章 主にソートに関して
4章 制御の流れ-3.
アルゴリズムとデータ構造1 2008年7月22日
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
PCクラスタにおける2個体分散遺伝的アルゴリズムの高速化
An Algorithm for Enumerating Maximal Matchings of a Graph
データ構造とプログラミング技法 (第8回) ーデータの探索ー.
神奈川大学大学院工学研究科 電気電子情報工学専攻
モード付き並列機械における オンラインスケジューリング
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
資源制約スケジューリング問題 ―メタヒューリスティクスによるアプローチ
IT入門B2 ー 連立一次方程式 ー.
センサノード 時刻同期と位置測定 浅川 和久 2008/11/16 センサノード 時刻同期と位置測定.
オペレーティングシステム 第12回 仮想記憶管理(3)
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
ネットワーク性能に合わせた 分散遺伝的アルゴリズムにおける 最適な移住についての検討
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
大域的データフロー解析 流れグラフ 開始ブロック 基本ブロックをnodeとし、 基本ブロック間の制御関係をedgeとするグラフを、
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
Occam言語による マルチプリエンプティブシステムの 実装と検証
ロジスティクス工学 第9章 スケジューリングモデル 補助資料:OptSeqによるスケジューリング入門 logopt
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
MPIを用いた並列処理 ~GAによるTSPの解法~
並列計算システム特論演習 SCS特別講義 平成13年10月15日.
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
独立大学法人・電気通信大学 大学院情報システム学研究科 情報ネットワーク学専攻・並列処理学講座
帰納変数 iが基本帰納変数 変数iに対して、 i := i±c という形の代入が一つのみ jがiに対する帰納変数
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
情報工学概論 (アルゴリズムとデータ構造)
Advanced Computer Architecture
第7回 条件による繰り返し.
情報とコンピュータ 静岡大学工学部 安藤和敏
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
Internet広域分散協調サーチロボット の研究開発
レジスタの割付け 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第12章5節.
進化的計算手法の並列計算機への実装 三木 光範
連続領域におけるファジィ制約充足問題の 反復改善アルゴリズムによる解法 Solving by heuristic repair Algorithm of the Fuzzy Constraint Satisfaction Problems with Continuous Domains 北海道大学.
ファジィ制約充足問題への 連続領域の導入 Introducing continuous domains to
プログラミング 4 整列アルゴリズム.
再帰的手続き.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
知識科学研究科 知識システム構築論講座 林研究室 佛明 智
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
ベイジアンネットワーク概説 Loopy Belief Propagation 茨城大学工学部 佐々木稔
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
マイグレーションを支援する分散集合オブジェクト
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
直並列グラフの連続多重彩色 西関研究室 吉田進太郎.
「マイグレーションを支援する分散集合オブジェクト」
ゲームのタスクシステム 導入編 レベル2くまー By keychan.
参考:大きい要素の処理.
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
アーキテクチャパラメータを利用した並列GCの性能予測
並列・分散ソフトウェア(2).
情報処理Ⅱ 2006年10月20日(金).
Presentation transcript:

タスクスケジューリング    

タスクスケジューリング タスクのプロセッサへのスケジューリング スケジューリングをいつ行うか: 各プロセッサで実行すべきタスクの決定 各プロセッサ上でのタスクの実行順序の決定 全タスク終了までの時間(実行時間)を短くする  ⇒負荷(計算・通信)の均一化 スケジューリングをいつ行うか: プログラム実行前に行うスタティックスケジューリング 実行すべきタスクと,その処理時間が実行前に得られる場合 →精度の良いスケジューリングが可能 プログラム実行時に行うダイナミックスケジューリング 実行すべきタスクがあらかじめ決まっていない,実行時間の変動が大きいなどの不確定性に対処できる

タスクスケジューリング(スタティック) 実行時間最小マルチプロセッサスケジューリング問題 次の前提で実行時間(スケジュール長)を最小にするようなスケジュールを求める問題 能力の等しいm台のプロセッサ 先行制約のあるn個のタスクからなるタスク集合T={T1,T2,...,Tn} 実行すべきタスクは既知 すべてのタスク(T={T1,T2,...,Tn})を実行する 各タスクの処理時間は既知 割込み無し(ノンプリエンプティブ) タスクの処理が開始されたら終了するまで中断されない

タスクスケジューリング(スタティック) タスクグラフ:タスク集合の性質を表現 入口ダミーノード 3 3 2 1 2 3 クリティカルパス 2 入口ダミーノード 3 3 2 1 2 3 クリティカルパス 2 1 6 4 先行制約 2 5 青数字:タスク処理時間 2 黒数字:タスク番号 1 8 7 出口ダミーノード 9

タスクスケジューリング(スタティック) タスクグラフ:タスク集合の性質を表現 入口ダミーノード 3 3 2 1 2 3 クリティカルパス 2 入口ダミーノード 3 3 2 1 2 3 クリティカルパス 2 1 6 4 先行制約 2 5 青数字:タスク処理時間 2 黒数字:タスク番号 1 8 7 出口ダミーノード 9

タスクスケジューリング(スタティック) クリティカルパス:tcr 3 3 1 2 2 3 2 1 4 6 2 5 2 8 1 7 9 各タスクから出口ノードへ至る最長パス 入口ノードのクリティカルパス 理想的な並列処理を行っても入口ノードのクリティカルパスより短い処理時間で並列処理を行うことはできない 3 3 1 2 2 3 2 1 4 6 2 5 2 8 1 7 9 タスクグラフ

タスクスケジューリング(スタティック) 実行時間最小マルチプロセッサスケジューリング問題 プロセッサ数 タスク処理時間 先行制約 複雑さ 1 最適解を求めることがきわめて難しい最適化問題 スケジューリング問題の複雑さ プロセッサ数 タスク処理時間 先行制約 複雑さ 1 任意 均一 ツリー O(n) 2 O(n2) 3 NP困難

タスクスケジューリング(スタティック) Huのアルゴリズム:問題1に対する最適解を与える 1.タスクにレベルを付加  1.タスクにレベルを付加  2.レベルの大きい順に 優先度リストを作成    3,4,5,1,2,7,6,8,9,10  3.先行タスクが終了し実行  可能となったタスク中で  優先度の高いものから  空プロセッサへ割当て  →リストスケジューリング 3 4 5 レベル3 1 2 7 レベル2 6 8 9 レベル1 レベル0 10 PE1 PE2 PE3 時刻

タスクスケジューリング(スタティック) Huのアルゴリズム:問題1に対する最適解を与える 1.タスクにレベルを付加  1.タスクにレベルを付加  2.レベルの大きい順に 優先度リストを作成    3,4,5,1,2,7,6,8,9,10  3.先行タスクが終了し実行  可能となったタスク中で  優先度の高いものから  空プロセッサへ割当て  →リストスケジューリング 3 4 5 レベル3 1 2 7 レベル2 6 8 9 レベル1 レベル0 10 PE1 3 PE2 4 PE3 5 時刻

タスクスケジューリング(スタティック) Huのアルゴリズム:問題1に対する最適解を与える 1.タスクにレベルを付加  1.タスクにレベルを付加  2.レベルの大きい順に 優先度リストを作成    3,4,5,1,2,7,6,8,9,10  3.先行タスクが終了し実行  可能となったタスク中で  優先度の高いものから  空プロセッサへ割当て  →リストスケジューリング 3 4 5 レベル3 1 2 7 レベル2 6 8 9 レベル1 レベル0 10 PE1 3 1 PE2 4 2 PE3 5 7 時刻

タスクスケジューリング(スタティック) Huのアルゴリズム:問題1に対する最適解を与える 1.タスクにレベルを付加  1.タスクにレベルを付加  2.レベルの大きい順に 優先度リストを作成    3,4,5,1,2,7,6,8,9,10  3.先行タスクが終了し実行  可能となったタスク中で  優先度の高いものから  空プロセッサへ割当て  →リストスケジューリング 3 4 5 レベル3 1 2 7 レベル2 6 8 9 レベル1 レベル0 10 PE1 3 1 6 PE2 4 2 8 PE3 5 7 9 時刻

タスクスケジューリング(スタティック) Huのアルゴリズム:問題1に対する最適解を与える 1.タスクにレベルを付加  1.タスクにレベルを付加  2.レベルの大きい順に 優先度リストを作成    3,4,5,1,2,7,6,8,9,10  3.先行タスクが終了し実行  可能となったタスク中で  優先度の高いものから  空プロセッサへ割当て  →リストスケジューリング 3 4 5 レベル3 1 2 7 レベル2 6 8 9 レベル1 レベル0 10 PE1 3 1 6 10 PE2 4 2 8 PE3 5 7 9 時刻

タスクスケジューリング(スタティック) 実行時間最小マルチプロセッサスケジューリング問題 プロセッサ数 タスク処理時間 先行制約 複雑さ 1 最適解を求めることがきわめて難しい最適化問題 スケジューリング問題の複雑さ プロセッサ数 タスク処理時間 先行制約 複雑さ 1 任意 均一 ツリー O(n) 2 O(n2) 3 NP困難

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム: 問題2に対する最適解を与える 1.タスクにレベルを付加 2.レベルの大きい順に 優先度リストを作成  同一レベルのタスクAとBで  Aの直接後続タスク集合が  Bの直接後続タスク集合を包  含する場合にはAの優先度を  Bより高くする 3,2,1,5,6,4,7,8,9 3.リストスケジューリング 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 PE1 PE2 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム: 問題2に対する最適解を与える 1.タスクにレベルを付加 2.レベルの大きい順に 優先度リストを作成  同一レベルのタスクAとBで  Aの直接後続タスク集合が  Bの直接後続タスク集合を包  含する場合にはAの優先度を  Bより高くする  3,2,1,5,6,4,7,8,9 3.リストスケジューリング 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 3 PE1 PE2 2 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム: 問題2に対する最適解を与える 1.タスクにレベルを付加 2.レベルの大きい順に 優先度リストを作成  同一レベルのタスクAとBで  Aの直接後続タスク集合が  Bの直接後続タスク集合を包  含する場合にはAの優先度を  Bより高くする  3,2,1,5,6,4,7,8,9 3.リストスケジューリング 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 3 1 PE1 PE2 2 5 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム: 問題2に対する最適解を与える 1.タスクにレベルを付加 2.レベルの大きい順に 優先度リストを作成  同一レベルのタスクAとBで  Aの直接後続タスク集合が  Bの直接後続タスク集合を包  含する場合にはAの優先度を  Bより高くする 3,2,1,5,6,4,7,8,9 3.リストスケジューリング 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 3 1 6 PE1 PE2 2 5 4 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム: 問題2に対する最適解を与える 1.タスクにレベルを付加 2.レベルの大きい順に 優先度リストを作成  同一レベルのタスクAとBで  Aの直接後続タスク集合が  Bの直接後続タスク集合を包  含する場合にはAの優先度を  Bより高くする 3,2,1,5,6,4,7,8,9 3.リストスケジューリング 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 3 1 6 7 PE1 PE2 2 5 4 8 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム: 問題2に対する最適解を与える 1.タスクにレベルを付加 2.レベルの大きい順に 優先度リストを作成  同一レベルのタスクAとBで  Aの直接後続タスク集合が  Bの直接後続タスク集合を包  含する場合にはAの優先度を  Bより高くする 3,2,1,5,6,4,7,8,9 3.リストスケジューリング 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 3 1 6 7 9 PE1 PE2 2 5 4 8 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム での優先度を採用しないと: 1, 2, 3, 4, 5, 6, 7, 8, 9 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 1 PE1 PE2 2 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム での優先度を採用しないと: 1, 2, 3, 4, 5, 6, 7, 8, 9 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 1 3 PE1 PE2 2 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム での優先度を採用しないと: 1, 2, 3, 4, 5, 6, 7, 8, 9 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 1 3 4 PE1 PE2 2 5 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム での優先度を採用しないと: 1, 2, 3, 4, 5, 6, 7, 8, 9 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 1 3 4 6 PE1 PE2 2 5 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム での優先度を採用しないと: 1, 2, 3, 4, 5, 6, 7, 8, 9 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 1 3 4 6 7 PE1 PE2 2 5 8 時刻

タスクスケジューリング(スタティック) Coffman & Grahamのアルゴリズム での優先度を採用しないと: 1, 2, 3, 4, 5, 6, 7, 8, 9 1 2 3 レベル3 4 5 6 レベル2 7 8 レベル1 レベル0 9 1 3 4 6 7 9 PE1 PE2 2 5 8 時刻

タスクスケジューリング(スタティック) 実行時間最小マルチプロセッサスケジューリング問題 プロセッサ数 タスク処理時間 先行制約 複雑さ 1 最適解を求めることがきわめて難しい最適化問題 スケジューリング問題の複雑さ プロセッサ数 タスク処理時間 先行制約 複雑さ 1 任意 均一 ツリー O(n) 2 O(n2) 3 NP困難

タスクスケジューリング(スタティック) クリティカルパス(CP)法: 問題3に対する近似解を与える 1.各タスクのCPを計算する 3.リストスケジューリング    3 3 1 2 2 3 1 2 3 4 5 6 7 8 9 2 1 4 6 2 5 2 8 1 7 PE1 9 PE2 時刻

タスクスケジューリング(スタティック) クリティカルパス(CP)法: 問題3に対する近似解を与える 1.各タスクのCPを計算する 2.CPの大きい順に  優先度リスト作成  1,2,3,6,4,5,8,7 3.リストスケジューリング    3 3 2 1 1 2 3 4 5 6 7 8 9 2 3 2 1 4 6 2 5 2 8 1 7 PE1 1 9 PE2 2 時刻

タスクスケジューリング(スタティック) クリティカルパス(CP)法: 問題3に対する近似解を与える 1.各タスクのCPを計算する 2.CPの大きい順に  優先度リスト作成  1,2,3,6,4,5,8,7 3.リストスケジューリング    3 3 2 1 1 2 3 4 5 6 7 8 9 2 3 2 1 4 6 2 5 2 8 1 7 PE1 1 3 9 PE2 2 6 時刻

タスクスケジューリング(スタティック) クリティカルパス(CP)法: 問題3に対する近似解を与える 1.各タスクのCPを計算する 2.CPの大きい順に  優先度リスト作成  1,2,3,6,4,5,8,7 3.リストスケジューリング    3 3 2 1 1 2 3 4 5 6 7 8 9 2 3 2 1 6 4 2 5 2 8 1 7 PE1 1 3 4 9 PE2 2 6 時刻

タスクスケジューリング(スタティック) クリティカルパス(CP)法: 問題3に対する近似解を与える 1.各タスクのCPを計算する 2.CPの大きい順に  優先度リスト作成  1,2,3,6,4,5,8,7 3.リストスケジューリング    3 3 2 1 1 2 3 4 5 6 7 8 9 2 3 2 1 6 4 2 5 2 8 1 7 PE1 1 3 4 5 9 PE2 2 6 時刻

タスクスケジューリング(スタティック) クリティカルパス(CP)法: 問題3に対する近似解を与える 1.各タスクのCPを計算する 2.CPの大きい順に  優先度リスト作成  1,2,3,6,4,5,8,7 3.リストスケジューリング   3 3 2 1 1 2 3 4 5 6 7 8 9 2 3 2 1 6 4 2 5 2 1 8 7 PE1 1 3 4 5 8 9 PE2 2 6 7 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 4 5 10 40 7 8 6 30 9 1 PE1 PE2 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 4 5 10 40 7 8 6 30 9 1 PE1 1 PE2 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 4 5 10 40 7 8 6 30 9 1 PE1 1 2 PE2 3 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 5 4 10 40 7 8 6 30 9 1 PE1 1 2 PE2 3 6 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 5 4 10 40 7 8 6 30 9 1 PE1 1 2 4 PE2 3 6 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 5 4 10 40 7 8 6 30 9 1 PE1 1 2 4 PE2 3 6 5 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 5 4 10 40 7 8 6 30 9 1 PE1 1 2 4 PE2 3 6 5 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 5 4 10 40 6 7 8 30 9 1 PE1 1 2 4 7 PE2 3 6 5 8 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 5 4 10 40 6 7 8 30 9 1 PE1 1 2 4 7 PE2 3 6 5 8 時刻

タスクスケジューリング(スタティック) CP法等のリストスケジューリングでは 最適解が得られない例 クリティカルパス 優先度 1,2,4,5,7,8,3,6,9 リストスケジューリングでは実行可 能なタスクと空いているプロセッサ があれば割り当てを行なってしまう 1 1 2 1 2 3 1 2 3 4 5 6 7 8 9 64 63 12 61 11 41 31 20 20 5 4 10 40 6 7 8 30 1 9 PE1 1 2 4 7 9 73 PE2 3 6 5 8 時刻

タスクスケジューリング(スタティック) 最適解は・・・ タスク3が終了しても6を割り当てない ところがミソ 最適解を得るためにはバックトラック をする全解探索が必要となる 1 1 2 1 2 3 20 20 4 5 10 40 7 8 6 30 9 1 PE1 PE2 時刻

タスクスケジューリング(スタティック) 最適解は・・・ タスク3が終了しても6を割り当てない ところがミソ 最適解を得るためにはバックトラック をする全解探索が必要となるーNP 1 1 2 1 2 3 20 20 5 4 10 40 6 7 8 30 1 9 PE1 1 PE2 時刻

タスクスケジューリング(スタティック) 最適解は・・・ タスク3が終了しても6を割り当てない ところがミソ 最適解を得るためにはバックトラック をする全解探索が必要となる 1 1 2 1 2 3 20 20 5 4 10 40 6 7 8 30 1 9 PE1 1 2 PE2 3 時刻

タスクスケジューリング(スタティック) 最適解は・・・ タスク3が終了しても6を割り当てない ところがミソ 最適解を得るためにはバックトラック をする全解探索が必要となるーNP 1 1 2 1 2 3 20 20 5 4 10 40 6 7 8 30 1 9 PE1 1 2 PE2 3 時刻

タスクスケジューリング(スタティック) 最適解は・・・ タスク3が終了しても6を割り当てない ところがミソ 最適解を得るためにはバックトラック をする全解探索が必要となるーNP 1 1 2 1 2 3 20 20 5 4 10 40 6 7 8 30 1 9 PE1 1 2 4 PE2 3 5 時刻

タスクスケジューリング(スタティック) 最適解は・・・ タスク3が終了しても6を割り当てない ところがミソ 最適解を得るためにはバックトラック をする全解探索が必要となるーNP 1 1 2 1 2 3 20 20 5 4 10 40 6 7 8 30 1 9 PE1 1 2 4 7 PE2 3 5 8 時刻

タスクスケジューリング(スタティック) 最適解は・・・ タスク3が終了しても6を割り当てない ところがミソ 最適解を得るためにはバックトラック をする全解探索が必要となるーNP 1 1 2 1 2 3 20 20 5 4 10 40 6 7 8 30 1 9 PE1 1 2 4 7 PE2 3 5 8 6 時刻

タスクスケジューリング(スタティック) 最適解は・・・ タスク3が終了しても6を割り当てない ところがミソ 最適解を得るためにはバックトラック をする全解探索が必要となるーNP 1 1 2 1 2 3 20 20 5 4 10 40 6 7 8 30 1 9 PE1 1 2 4 7 9 64 PE2 3 5 8 6 時刻

ループの並列実行方式

ループの並列実行方式-DOALL 定回ループ(ループ実行前に繰り返し回数が決まる)の並列実行方式 DOALL(forall): イタレーション間にまたがる依存関係(loop-carried dependencyデータ依存,制御依存)なし →イタレーション間での並列性を利用 各イタレーションのループボディ(一つもしくは複数)の処理をタスクとする 各イタレーションを異なるプロセッサに割当てて並列処理

ループの並列実行方式ーDOALL DOALL実行: do i=1,n a(i)= b(i)+c(i) d(i)= a(i)-3 enddo doall i=1,n a(i)= b(i)+c(i) d(i)= a(i)-3 enddoall PE1: a(1)= b(1)+c(1) d(1)= a(1)-3 PE3: a(3)= b(3)+c(3) d(3)= a(3)-3 PE2: a(2)= b(2)+c(2) d(2)= a(2)-3 PE4: a(4)= b(4)+c(4) d(4)= a(4)-3

ループの並列実行方式ーDOALL DOALL実行 各プロセッサの動作: 割当てられたイタレーションを独自実行 全イタレーション完了後,他のプロセッサとバリア同期し,ループの次の処理へ進む 各イタレーション開始時における変数の初期値は全てのイタレーションにおいてループ開始直前の値とする

DOALLのスケジューリング(スタティック) スタティックスケジューリング (1)各プロセッサにプロセッサ台数間隔のイタレー   ションを割当て(サイクリック割当て) do i= p, n, np ループボディ enddo p:プロセッサ番号(1~np) np:プロセッサ数 i,p,n,npはプロセッサのローカル(プライベート)変数 PE1: do i=1,n,8 PE2: do i=2,n,8 PE8: do i=8,n,8

DOALLのスケジューリング(スタティック) スタティックスケジューリング (2)各プロセッサに連続したイタレーションを割当て (ブロック割当て)    k = ceil(n/np) lb= k*(p-1)+1    ub= min(k*p,n)    do i=lb,ub    ループボディ     enddo 切り上げ PE1: do i=1,30 PE2: do i=31,60 PE3: do i=61,90

DOALLのスケジューリング(スタティック) スタティックスケジューリング(特にブロック割当て) →ループボディの処理量が一定でない場合,   負荷の不均衡が生じる ループボディにif文やループなどがある場合 例) i→ PE1 PE2 PE3 doall i=1,n do j = i,n a(i,j)=... enddo enddoall j ↓

DOALLのスケジューリング(スタティック) スタティックスケジューリング(特にブロック割当て) →ループボディの処理量が一定でない場合,負荷のアンバランスが生じる ループボディにif文やループなどがある場合 例) i→ PE1 PE2 PE3 doall i=1,n do j = i,n a(i,j)=... enddo enddoall j ↓

DOALLのスケジューリング(ダイナミック) ダイナミックスケジューリング (3)セルフスケジューリング ループ制御変数i(ローカル変数)を全プロセッサからアクセスできる共有変数 iglobalとする 各プロセッサは1イタレーションの処理を終了する毎にiglobalを更新し次のイタレーションを実行 lbl: (i=iglobal; iglobal=iglobal+1) if i>n exit ループボディ   goto lbl 不可分命令

DOALLのスケジューリング(ダイナミック) ダイナミックスケジューリング (3)セルフスケジューリング 共有変数iglobalへのアクセスが集中   →そこがボトルネックとなり並列処理効果が低減

DOALLのスケジューリング(ダイナミック) ダイナミックスケジューリング (4)チャンクスケジューリング 複数イタレーション単位で割当て →共有変数iglobalへのアクセス頻度を軽減 lbl: (j=iglobal; iglobal=iglobal+k) if j>n exit do i=j, min(j+k-1,n) ループボディ enddo   goto lbl

DOALLのスケジューリング(ダイナミック) ダイナミックスケジューリング (4)チャンクスケジューリング タスクの粒度を大きくしている チャンクサイズが大きすぎると負荷アンバランスが生じる

DOALLのスケジューリング(ダイナミック) ダイナミックスケジューリング (5)ガイデッドセルフスケジューリング 処理が進むにしたがってチャンクサイズを次第に小さくする →iglobalへのアクセス頻度を下げつつ負荷バランスを保つ タスク粒度を動的に変化させている

DOALLのスケジューリング(ダイナミック) ダイナミックスケジューリング (5)ガイデッドセルフスケジューリング チャンクサイズ k=ceil(nrem/np) 共有変数nremは未割り当てイタレーション数で初期値はn lbl: (k=ceil(nrem/np);nrem=nrem-k) if k=0 exit (j=iglobal; iglobal=iglobal+k) do i=j, j+k-1 ループボディ enddo goto lbl

ループの並列実行方式ーDOACROSS イタレーション間にデータ依存がある場合DOALL不可 イタレーション間で同期しながら並列実行 イタレーション間で同期しながら並列実行  do i=2,n a(i)= b(i)+c(i-1) c(i)= d(i)*a(i) e(i)= d(i)*5 enddo doacross i=2,n wait(sync, i-1) a(i)= b(i)+c(i-1) c(i)= d(i)*a(i) post(sync, i) e(i)= d(i)*5 enddoacross

ループの並列実行方式ーDOACROSS PE1 PE2 PE3 wait(sync, 1) a(2)= b(2)+c(1) c(2)= d(2)*a(2) post(sync, 2) e(2)= d(2)*5 PE2 wait(sync, 2) a(3)= b(3)+c(2) c(3)= d(3)*a(3) post(sync, 3) e(3)= d(3)*5 PE3 wait(sync, 3) a(4)= b(4)+c(3) c(4)= d(4)*a(4) post(sync, 4) e(4)= d(4)*5

ループリストラクチャリング

ループリストラクリャリング ループ構造を再構成する 技法 イタレーション間の先行制約を解消し並列ループとする 効率よい並列ループ実行を可能とする 技法 ループ交換 ループ分割 ネストを増やす   ストリップマイニング   サイクルシュリンキング ネストを減らす ループ融合 スカラ拡張

ループ交換 ループ交換(interchange) ネストループの外側と内側ループを入替え 例)DOALL可能なループを外側ループにする    →オーバーヘッドの削減 (a)は(b)のようにインデックス j でDOALL可能 do i=2,n do j=1,n a(i,j)= a(i-1,j)+b(i,j) enddo enddo (a) do i=2,n doall j=1,n a(i,j)= a(i-1,j)+b(i,j) enddoall enddo (b)

ループ交換 DOALLをセルフスケジューリングする場合 (b)では:jglobalへのアクセス回数:n*(n-1)       バリア同期の回数:     (n-1) (b)は(c)のようにループ交換可能 (c)では: jglobalへのアクセス回数:n       バリア同期の回数:    1 共有変数へのアクセスと同期回数を削減 do i=2,n doall j=1,n a(i,j)= a(i-1,j)+b(i,j) enddoall enddo (b) doall j=1,n do i=2,n a(i,j)= a(i-1,j)+b(i,j) enddo enddoall (c)

ループ分割 ループ分割(distribution) ひとつのループを複数ループに分割 (d)はイタレーション間データ依存によりDOALL不可 ループ分割すると(e)のようにDOALL可能となる do i=2,n a(i)= b(i)+c(i) d(i)=a(i-1)*4 enddo (d) doall i=2,n a(i)=b(i)+c(i) enddo d(i)=a(i-1)*4 (e)

ストリップマイニング ストリップマイニング(strip mining) 一重ループをネストループに変換 (f)はDOALL可能で プロセッサ4台にスタティックに連続割り当てるためにストリプマイニングし2重ループ化とすると(g)のように変換できる do i=1,128 a(i)= b(i)+2 enddo (f) doall i=1,4 do j=(i-1)*32+1,i*32   a(j)= b(j)+2 enddo enddoall (g)

ストリップマイニング さらに各プロセッサがベクトル処理できるとすると(h)のようになる doall i=1,4 do j=(i-1)*32+1,i*32   a(j)= b(j)+2 enddo enddoall (g) doall i=1,4 lb= (i-1)*32+1 ub=i*32 a(lb:ub)=b(lb:ub)+2 enddoall (h)

サイクルシュリンキング サイクルシュリンキング(cycle shrinking) 一重ループをネストループに変換 (i)はデータ依存のため全イタレーションでのDOALLは不可 (j)のように変換すると16イタレーション分のDOALLの繰り返しとすることが可能 do i=1,128 a(i+16)= a(i)+2 enddo (i) do i=1,128,16 doall j=i,i+16   a(j+16)= a(j)+2 enddoall enddo (j)

ループ融合 ループ融合(coalescing) ネストループを一重ループに変換 (k)はi,jどちらかでDOALL可能 (l)のように変換するとDOALLのイタレーション数を増やすことができる do i=1,4 do j=1,6 a(i,j)= b(i,j)+2 enddo (k) doall k=1,24 i=ceil(k/6) j=k-6*(i-1) a(i,j)= b(i,j)+2 enddoall (l)

スカラ拡張 スカラ拡張(expansion) イタレーション間のデータ依存を引き起こすスカラ変数を配列変数に変換しデータ依存を解消する (m)のスカラ変数Xを配列変数xx(1:n)に一時的に置き換えることにより(n)のようにDOALL可能とする 配列変数とせずに(o)のように各プロセッサのローカル変数とする(プライベート化)ことも可能  do i=1,n x=a(i)+b(i) c(i)= x+2 enddo (m) doall i=1,n xx(i)=a(i)+b(i) c(i)= xx(i)+2 enddoall x=xx(n) (n) doall i=1,n xlocal=a(i)+b(i) c(i)= xlocal+2 if (i=n) x=xlocal enddoall (o)