annotate src/parallel_execution/worker.c @ 230:a1fb3f2d1a36

fix worker
author ikkun
date Sat, 21 Jan 2017 20:21:00 +0900
parents 991f3d1ce072
children 123b0d277b84
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
95
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <libkern/OSAtomic.h>
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include "context.h"
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include "origin_cs.h"
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
6 union Data* createWorker(struct Context* context, int id, Queue* queue) {
183
mir3636
parents: 175
diff changeset
7 struct Worker* worker = &ALLOCATE(context, Worker)->Worker;
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
8 worker->tasks = queue;
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
9 worker->id = id;
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
10 worker->runFlag = 1;
222
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
11 worker->taskReceive = C_taskReceiveWorker;
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
12 worker->shutdown = C_shutdownWorker;
183
mir3636
parents: 175
diff changeset
13 return (union Data*)(worker);
mir3636
parents: 175
diff changeset
14 }
mir3636
parents: 175
diff changeset
15
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
16 __code taskReceiveWorker(struct Context* context, Worker* worker) {
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
17 if (! worker->runFlag)
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
18 goto meta(context, worker->next);
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
19 Queue* queue = worker->tasks;
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
20 queue->next = C_getTask1;
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
21 goto meta(context, queue->take);
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
22 }
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
23
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
24 __code taskReceiveWorker_stub(struct Context* context) {
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
25 Worker* worker = Gearef(context,Worker);
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
26 goto taskReceiveWorker(context,worker);
222
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
27 }
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
28
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
29 __code getTask1(struct Context* context, Worker* worker, struct Context* task) {
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
30 task->worker = worker;
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
31 goto meta(task, task->next);
169
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
32 }
109
059b26a250cc Change put_queue process
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 103
diff changeset
33
169
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
34 __code getTask1_stub(struct Context* context) {
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
35 Worker* worker = Gearef(context,Worker);
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
36 Context* task = &worker->tasks->data->context;
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
37 goto getTask1(context,worker,task);
95
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 }
101
8987cf13d5bb Add Allocate macro
innparusu
parents: 98
diff changeset
39
8987cf13d5bb Add Allocate macro
innparusu
parents: 98
diff changeset
40 #ifdef USE_CUDA
98
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
41 __code twiceGpu(struct Context* context) {
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
42 cuMemcpyHtoDAsync(context,context,context,context->stream);
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
43 cuLaunchkanel();
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
44 cuMemcpyDtoHAsync();
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
45 }
101
8987cf13d5bb Add Allocate macro
innparusu
parents: 98
diff changeset
46 #endif
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
47
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
48 __code shutdownWorker(struct Context* context, Worker* worker) {
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
49 worker->runFlag = 0;
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
50 }
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
51
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
52 __code shutdownWorker_stub(struct Context* context) {
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
53 Worker* worker = Gearef(context,Worker);
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
54 goto shutdownWorker(context,worker);
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
55 }