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