Mercurial > hg > Members > Moririn
annotate src/parallel_execution/Todo @ 430:35b37fe8d3a7
Add size member in struct Meta
author | Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 09 Oct 2017 17:46:42 +0900 |
parents | 0c113f8e5a3f |
children |
rev | line source |
---|---|
394 | 1 Tue Aug 1 19:32:55 JST 2017 |
2 | |
3 DataGear の待ち合わせ | |
4 DataGear の Commit | |
5 | |
6 これらは、stubとgoto meta の部分で行う | |
7 | |
8 どれに対して行うかを実行時あるいはコンパイル時に指定する必要がある | |
9 | |
10 一つの解決策は、 typedefのときにannotution してあげる | |
11 もう一つの解決策は, Data Gear の allocation 時に指定する | |
12 Code Gearのプロトタイプのなかで指定する事も考えられる | |
13 | |
14 par goto時に渡す continuation で同期をとっても良い, このときにはこのcontinuation を作成するinterfaceを作る必要がある | |
15 | |
16 実行時に指定してしまうと、毎回フラグのチェックが必要になる。 | |
17 これを abstract model checking を事前に行うことで, static なコードに置き換える事はできる | |
18 | |
19 例題としては, chat、dining philosophers, map reduce | |
20 | |
324 | 21 Fri Apr 14 18:44:09 JST 2017 |
22 struct B { | |
23 A a; | |
24 ..... | |
25 } | |
26 struct A { | |
27 __code init(..., __code next(A a, ...)); | |
28 } | |
29 par goto A->init(a); | |
30 // meta level | |
31 task->code = C_init_A; | |
32 task->data[idg] = ...; | |
33 task->data[idg + 1] = ...; | |
34 task->data[odg] = ...; | |
35 task->next = C_writeToa; | |
36 goto meta(context, context->TaskManager->spawn) | |
37 | |
38 // lambda version? | |
39 par goto A->init(\A -> a = A) | |
40 | |
41 // meta level | |
42 par goto A->init(next = \A -> a = A) | |
43 | |
321 | 44 Wed Mar 1 18:25:36 JST 2017 |
45 | |
322
366baa247572
Use generate_stub for queue_test
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
321
diff
changeset
|
46 parallel_executtion/test/ を .cbc に書き直す |
321 | 47 rb_tree の stub をできるだけ取り外す |
48 synchornizedQueue の meta部分を分離する | |
49 synchronizedQueue のバグをとる | |
50 GPU のバグとり | |
51 cbc++...? | |
52 | |
263 | 53 Sat Jan 28 16:10:28 JST 2017 |
54 | |
55 stackからpopした後、呼び出される continuation は出力を受けとる。 | |
56 出力を受けとる stub を生成する必要がある。 | |
57 なので、CodeGear が、そのような interface で定義されたものかどうかを調べる必要がある。 | |
58 Stackのnext(やisEmpty)に代入された時点でわかる。なので、あまり自明な見つける方法がない。 | |
59 引数の異なるnextは異なる名前を持つべきか? 持たなくてもできるが... | |
60 | |
264 | 61 goto next(data, ...); 引数で渡された continuation に移動 |
62 goto nodeStack->push(newNode, replaceNode1); Interface の呼び出し。(ここで replaceNode1 が stack の戻り値を受けることがわかる。 | |
63 goto replaceNode(traverse, traverse->current, newNode); 普通のgoto | |
64 goto rotateTree->next(...); DataGearに格納された continuation | |
65 | |
66 などをチェックする必要がある。これらの型チェックは CbC level では行われない。(CbCはmeta levelだから) | |
67 | |
265 | 68 戻り値の部分は interface に記述させるという手もあるな。 |
69 | |
264 | 70 |
234 | 71 Sun Jan 22 20:11:28 JST 2017 |
263 | 72 |
234 | 73 TaskManagerから必要なCPUWorkerを生成する |
74 WorkerはcreateWorker時に新しくthreadを作る | |
75 | |
76 TaskManager->createTaskで新しいContextを生成する | |
77 この時点でWorkerを番号で指定する | |
78 このContextにGearefで値を設定していく | |
79 待ち合わせ用のDSを設定する | |
80 taskManager->spawnでWorkerにcontextを送る | |
263 | 81 |
224 | 82 Fri Jan 13 17:47:40 JST 2017 |
263 | 83 |
224 | 84 Task は contextを直接使うことにする |
85 DS には, まっているcontextをListを作る | |
86 context に実行中断中のCS の番号をいれるフィールドを用意する | |
87 待っているDS のcount | |
88 createTaskの手順 | |
89 新しくcontextを作る | |
90 allocate 用のheap も用意 | |
91 もとのcontextを全部copyする or 必要なものだけcopyする | |
92 待ち合わせのDS群を指定する | |
93 終わったあとの行き先を指定する(default は task_exit) | |
94 exception の行き先も必要な指定する | |
95 待っているDSが全部揃っていたら active Queueに入れる | |
96 task の実行 | |
97 taskの実行後、 goto meta する直前で code gear commit を呼んで, Reader list を消化する | |
98 複数から参照されるDSは一旦localに書き出して, その後atomic に書き出す | |
99 複数から参照されるDSは何かしら宣言が必要 | |
100 つまり DS には 一つ一つ owner がいる | |
101 | |
175 | 102 Mon Nov 28 17:39:39 JST 2016 |
103 | |
104 Task,TaskManager,Workerのインターフェースの実装を作成する | |
105 Taskを一旦Treeに入れずに直接Queueに入れる | |
106 | |
107 Task | |
108 CodeGen | |
223 | 109 IDataSeg |
110 IDataSeg | |
111 ... | |
175 | 112 idsCount |
223 | 113 nextTask(can be C_exit) |
114 ODataSeg? | |
175 | 115 |
116 TaskManager | |
117 createWorker | |
118 spawn (any,cpu,GPU) | |
119 taskSend | |
120 activeQueue | |
121 shutdown | |
122 deadlockDetectid | |
123 | |
124 SynchronizedQueue * Workerの数だけ | |
125 | |
126 Worker | |
127 execute | |
128 taskRecive | |
129 shutdown |