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