annotate src/parallel_execution/Todo @ 269:5170539348ec

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