comparison 2017/2017_10_31/slide.md @ 28:382cd93f2a60

Update slide
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Tue, 31 Oct 2017 18:16:16 +0900
parents
children
comparison
equal deleted inserted replaced
27:d005b4f353d3 28:382cd93f2a60
1 title: Gears OS
2 author: Tatsuki IHA
3 profile:
4 lang: Japanese
5 code-engine: coderay
6
7 ## 研究目的
8 - 当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて 信頼性が高い並列処理を行う Gears OS を開発している
9 - Gears OS では Task を Code Gear と実行するときに必要な Input Data Gear と出力するための Output Data Gear の組で表現される。 Input Data Gear/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う.
10 - 信頼性の確保はモデルチェック、検証等を使用して行う。この信頼性のための計算は通常の計算とは別の階層のメタ計算として記述する。
11 - また、 メタ計算は信頼性の他に CPU, GPU などの実行環境の切り替え, データ拡張等の柔軟性を提供する。
12 - 本研究では、 Gears OS の並列処理機構の実装を行う。また、並列処理の検証をメタ計算として記述することで、 並列処理の信頼性を保証する。
13
14 ## 今週
15 - cuda 関連のものを Interface にする(まだ途中)
16 - Jenkins の update
17
18 ## Executor interface
19 - 今は実装としてはCuda のみ, OpenCL とかも実装する
20 - 将来的にはパイプラインで乗っけられるようにするために methodは
21 - read
22 - exec
23 - write
24 - task, buffer は引数として取る
25
26 ```
27 typedef struct Executor<Impl>{
28 union Data* Executor;
29 struct Context* task;
30 struct Buffer* buffer;
31 __code read(Impl* executor, struct Context* task, struct Buffer* buffer, __code next(...));
32 __code exec(Impl* executor, struct Context* task, struct Buffer* buffer, __code next(...));
33 __code write(Impl* executor, struct Context* task, struct Buffer* buffer, __code next(...));
34 }
35 ```
36
37 ```
38 struct CudaExecutor {
39 void** kernelParams;
40 } CudaExecutor;
41 ```
42
43
44 ## CudaExecutor
45 - create は他のinterface の実装と基本同じ
46 - read, write, exec 辺りは前回の発表のコードを CG に書き換え
47 - 前回注意された for の中で calloc 等は修正
48 - 最終的には CuDevicePtr とかも ALLOCATE(context, CuDevicePtr) みたいに取れるようにしたい
49
50 ```
51 Executor* createCudaExecutor(struct Context* context) {
52 struct Executor* executor = new Executor();
53 struct CudaExecutor* cudaExecutor = new CudaExecutor();
54 executor->executor = (union Data*)cudaExecutor;
55 executor->read = C_readCudaExecutor;
56 executor->exec = C_execCudaExecutor;
57 executor->write = C_writeCudaExecutor;
58 return executor;
59 }
60 ```
61
62 ## まだできてない
63 - このinterface を呼び出す部分(基本的には関数呼び出しの場所をgoto にしてきちんと継続すればいいはず)
64 - このinteface のメソッド呼び出しは stub でやるべき?