annotate src/parallel_execution/worker.c @ 222:77faa28128b4

Add taskSend for TaskManager
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Wed, 11 Jan 2017 16:52:27 +0900
parents c34e6aa10967
children 991f3d1ce072
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
183
mir3636
parents: 175
diff changeset
6 union Data* createWorker(struct Context* context) {
mir3636
parents: 175
diff changeset
7 struct Worker* worker = &ALLOCATE(context, Worker)->Worker;
222
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
8 worker->execute = C_executeWorker;
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
9 worker->taskSend = C_taskSendWorker;
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
10 worker->taskReceive = C_taskReceiveWorker;
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
11 worker->shutdown = C_shutdownWorker;
183
mir3636
parents: 175
diff changeset
12 return (union Data*)(worker);
mir3636
parents: 175
diff changeset
13 }
mir3636
parents: 175
diff changeset
14
222
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
15 __code taskSend(struct Context* context) {
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
16 }
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
17
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
18 __code exectureWorker(struct Context* context) {
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
19 worker->next = worker->taskReceive;
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
20 goto meta(context, task->code);
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
21 }
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
22
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
23 __code taskReceive(struct Context* context) {
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
24 queue->queue = (union Data*)worker->worker->Worker.tasks;
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
25 queue->next = worker->execute;
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
26 goto meta(context, queue->queue->Queue.take);
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
169
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
29 __code getTask1(struct Context* context, struct Queue* queue) {
173
8260b230dc2f fix RedBlackTree.c
ikkun
parents: 170
diff changeset
30 queue->next = C_getTask2;
169
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
31 goto meta(context, queue->take);
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) {
189
mir3636
parents: 185
diff changeset
35 goto getTask1(context,/* &context->data[D_ActiveQueue]->Queue*/ NULL);
95
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 }
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
169
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
38 __code getTask2(struct Context* context, struct Task* task, struct Node* node) {
173
8260b230dc2f fix RedBlackTree.c
ikkun
parents: 170
diff changeset
39 context->next = C_getTask1;
189
mir3636
parents: 185
diff changeset
40 goto meta(context, C_getTask2);
169
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
41 }
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
42
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
43 __code getTask2_stub(struct Context* context) {
217
c34e6aa10967 Fix DataGear access name
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 189
diff changeset
44 goto getTask2(context, /*&(context->data[D_ActiveQueue]->Queue.data->Task)*/ NULL, &context->data[D_Node]->Node);
95
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 }
101
8987cf13d5bb Add Allocate macro
innparusu
parents: 98
diff changeset
46
8987cf13d5bb Add Allocate macro
innparusu
parents: 98
diff changeset
47 #ifdef USE_CUDA
98
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
48 __code twiceGpu(struct Context* context) {
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
49 cuMemcpyHtoDAsync(context,context,context,context->stream);
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
50 cuLaunchkanel();
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
51 cuMemcpyDtoHAsync();
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
52 }
101
8987cf13d5bb Add Allocate macro
innparusu
parents: 98
diff changeset
53 #endif