view 2016/2016_05_03/slide.md @ 16:216de41a6219

Update
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Fri, 06 May 2016 01:53:06 +0900
parents
children
line wrap: on
line source

title: Gears OS の依存関係の解決
author: Tatsuki IHA
profile:
lang: Japanese
code-engine: coderay

# 研究目的
- 当研究室では  処理の単位を Code Segment、 データの単位を Data Segment を用いて 信頼性が高い並列処理を行う Gears OS を開発している
- Gears OS では Task を Code Segment と実行するときに必要な Input Data Segment と出力するための Output Data Segment の組で表現される。 Input Data Segment/Output Data Segment によって依存関係が決定し、それにそって並列実行を行う
- 現在のGears OS は 依存関係がある並列処理を行うことが出来ない。 この研究ではGears OS の依存関係の解決を目標とする

# 今週
- dependency を書いてます

# Cerium の wait_for
- Cerium は依存関係を解決するためにwait_me, wait_i という2つのQueueInfo<TaskQueue>をtaskが持っている
- task a を実行してから task bを実行する場合
- task a の wait_me に slave の task を add する
- task b の wait_i に  master の task を add する

# Cerium の spawn_task
- spawn_task 時にwait_i にtaskが入ってないかチェック
- empty の場合 activeTaskQueueにtaskを入れる
- empty ではない場合 waitTaskQueueにtaskを入れる

# Cerium の例
- つまり a -> b -> c という依存の場合
- b の wait_i には a がaddされる
- b wait_me には c がaddされる

# Gears で実装する場合
- wait_me, wait_i 的なものを用意する
- wait_me , wait_i に task を入れる
- しかし、Gears では ds も考慮しなければならない
    - ds は llrb にputされる
- 木のkeyでも入れる用のlistをTaskに持たせるか
- IDS の数を保持して wait_i に 終わった task の ODS のstruct を入れる
    - 展開して ods を取る
- schedulerがsingle thread で走らせ、 依存関係を監視する(wait task と active task)
    - task cs が終わったthread は scheduler に終了を伝える