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