view 2017/2017_05_23/slide.md @ 31:b7908b2f86c0 default tip

Update slide 2018_01_30
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Tue, 30 Jan 2018 18:43:00 +0900
parents 678e6992c8ae
children
line wrap: on
line source

title: Gears OS
author: Tatsuki IHA
profile:
lang: Japanese
code-engine: coderay

## 研究目的
- 当研究室では  処理の単位を Code Gear、 データの単位を Data Gear を用いて 信頼性が高い並列処理を行う Gears OS を開発している
- Gears OS では Task を Code Gear と実行するときに必要な Input Data Gear と出力するための Output Data Gear の組で表現される。 Input Data Gear/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う.
- 信頼性の確保はモデルチェック、検証等を使用して行う。この信頼性のための計算は通常の計算とは別の階層のメタ計算として記述する。
- また、 メタ計算は信頼性の他に CPU, GPU などの実行環境の切り替え, データ拡張等の柔軟性を提供する。
- 本研究では、 Gears OS の並列処理機構の実装を行う。また、並列処理の実行を検証をメタ計算として記述することで、 並列処理の精度を保証する。

## 今週
- Task の interface

## Taskの interface
- par goto に変換するために, input, output の関係をinterface に押し込みたい


``` c
typedef struct Task<Impl>{
        union Data* task;
        enum Code code;
        int idgCount;
        int odgCount;
        __code setTaskInfo(Impl* task, enum Code code, __code next(...)); 
        __code next(...);
} Semaphore;


Task* createCPUTask(struct Context* context, int idgCount, int odgCount) {
    Task* task = new Task();
    task->task = (union Data*)NEW(struct Context);
    initContext(&task->task->Context);
    task->task->Context.idg = cpuTask->context->dataNum;
    task->task->Context.idgCount = idgCount;
    task->idgCount = idgCount;
    task->odgCount = odgCount;
    task->setTaskInfo = C_setTaskInfo;
    return task
}
```


## par goto からの変換

``` c
par goto code1(data1, data2, data3, _exit)
```


```c

```