annotate src/CUDAWorker.cbc @ 590:9146d6017f18 default tip

hg mv parallel_execution/* ..
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 16 Jan 2020 15:12:06 +0900
parents src/parallel_execution/CUDAWorker.cbc@d6983ce1015d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
302
8e7926f3e271 fix CUDAWorker
ikkun
parents: 275
diff changeset
1 #include "../context.h"
473
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 468
diff changeset
2 #interface "TaskManager.h"
468
ac244346c85d Change used interface syntax from #include to #interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 462
diff changeset
3 #interface "Worker.h"
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
4 #interface "Iterator.h"
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
5 #interface "Queue.h"
95
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
487
d6983ce1015d Fix extern cudainit parameter
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
7 extern void cudaInit(struct CUDAWorker *cudaWorker,int phase, int deviceNum);
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
8 extern void cudaShutdown(CUDAWorker *cudaWorker);
319
a15511b1a6e0 separate cuda.c, and USE_CUDA_MAIN_THREAD flag
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 317
diff changeset
9
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
10 static void startCUDAWorker(Worker* worker);
233
06133afb3b5b create worker start_code
mir3636
parents: 232
diff changeset
11
487
d6983ce1015d Fix extern cudainit parameter
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
12 Worker* createCUDAWorker(struct Context* context, int id, Queue* queue, int deviceNum) {
411
0eba9a04633f Work CUDAtwice
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 410
diff changeset
13 struct Worker* worker = new Worker();
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
14 struct CUDAWorker* cudaWorker = new CUDAWorker();
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
15 worker->worker = (union Data*)cudaWorker;
244
d1567718f12c Fix error
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 242
diff changeset
16 worker->tasks = queue;
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
17 cudaWorker->id = id;
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
18 cudaWorker->loopCounter = 0;
487
d6983ce1015d Fix extern cudainit parameter
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
19 cudaWorker->deviceNum = deviceNum;
411
0eba9a04633f Work CUDAtwice
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 410
diff changeset
20 worker->taskReceive = C_taskReceiveCUDAWorker;
313
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 312
diff changeset
21 worker->shutdown = C_shutdownCUDAWorker;
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
22 pthread_create(&worker->thread, NULL, (void*)&startCUDAWorker, worker);
313
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 312
diff changeset
23 return worker;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 312
diff changeset
24 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 312
diff changeset
25
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
26 static void startCUDAWorker(Worker* worker) {
411
0eba9a04633f Work CUDAtwice
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 410
diff changeset
27 struct CUDAWorker* cudaWorker = &worker->worker->CUDAWorker;
487
d6983ce1015d Fix extern cudainit parameter
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
28 cudaInit(cudaWorker, 0, cudaWorker->deviceNum);
436
08a93fc2f0d3 Fix CudaExecutor but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 414
diff changeset
29 cudaWorker->context = NEW(struct Context);
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
30 initContext(cudaWorker->context);
451
dcc42f3e7e97 Auto choice blockDim
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 440
diff changeset
31 cudaWorker->executor = createCUDAExecutor(cudaWorker->context, cudaWorker->device);
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
32 Gearef(cudaWorker->context, Worker)->worker = (union Data*)worker;
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
33 Gearef(cudaWorker->context, Worker)->tasks = worker->tasks;
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
34 goto meta(cudaWorker->context, worker->taskReceive);
233
06133afb3b5b create worker start_code
mir3636
parents: 232
diff changeset
35 }
06133afb3b5b create worker start_code
mir3636
parents: 232
diff changeset
36
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
37 __code taskReceiveCUDAWorker(struct Worker* worker, struct Queue* tasks) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
38 goto tasks->take(getTaskCUDAWorker);
222
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
39 }
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
40
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
41 __code getTaskCUDAWorker(struct CUDAWorker* cudaWorker, struct Context* task, struct Worker* worker) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
42 if (!task) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
43 goto worker->shutdown(); // end thread
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
44 }
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
45 task->worker = worker;
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
46 enum Code taskCg = task->next;
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
47 task->next = C_odgCommitCUDAWorker; // commit outputDG after task exec
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
48 goto meta(task, taskCg); // switch task context
169
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
49 }
109
059b26a250cc Change put_queue process
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 103
diff changeset
50
473
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 468
diff changeset
51 __code getTaskCUDAWorker_stub(struct Context* context) {
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
52 CUDAWorker* cudaWorker = (CUDAWorker*)GearImpl(context, Worker, worker);
247
ce262b2c1daf Fix createTask for main
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 244
diff changeset
53 Worker* worker = &Gearef(context,Worker)->worker->Worker;
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 257
diff changeset
54 struct Context* task = &Gearef(context, Queue)->data->Context;
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
55 goto getTaskCUDAWorker(context, cudaWorker, task, worker);
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
56 }
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
57
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
58 __code odgCommitCUDAWorker(struct CUDAWorker* worker, struct Context* task) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
59 if (task->iterate) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
60 struct Iterator* iterator = task->iterator;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
61 goto iterator->barrier(task, odgCommitCUDAWorker1, odgCommitCUDAWorker6);
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
62 } else {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
63 goto odgCommitCUDAWorker1();
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
64 }
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
65 }
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
66
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
67 __code odgCommitCUDAWorker_stub(struct Context* context) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
68 // switch worker context
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
69 struct Context* workerContext = context->worker->worker->CUDAWorker.context;
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
70 Gearef(workerContext, Worker)->worker = (union Data*)context->worker;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
71 Gearef(workerContext, Worker)->task = context;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
72 CUDAWorker* cudaWorker = (CUDAWorker*)GearImpl(workerContext, Worker, worker);
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
73 goto odgCommitCUDAWorker(workerContext,
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
74 cudaWorker,
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
75 context);
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
76 }
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
77
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
78 __code odgCommitCUDAWorker1(struct CUDAWorker* worker, struct Context* task) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
79 int i = worker->loopCounter;
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
80 if (task->odg+i < task->maxOdg) {
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
81 goto odgCommitCUDAWorker2();
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
82 }
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
83 worker->loopCounter = 0;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
84 struct TaskManager* taskManager = task->taskManager;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
85 goto taskManager->decrementTaskCount(odgCommitCUDAWorker6);
98
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
86 }
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
87
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
88 __code odgCommitCUDAWorker2(struct CUDAWorker* worker, struct Context* task) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
89 int i = worker->loopCounter;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
90 struct Queue* queue = GET_WAIT_LIST(task->data[task->odg+i]);
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
91 goto queue->isEmpty(odgCommitCUDAWorker3, odgCommitCUDAWorker5);
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
92 }
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
93
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
94 __code odgCommitCUDAWorker3(struct CUDAWorker* worker, struct Context* task) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
95 int i = worker->loopCounter;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
96 struct Queue* queue = GET_WAIT_LIST(task->data[task->odg+i]);
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
97 goto queue->take(odgCommitCUDAWorker4);
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
98 }
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
99
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
100 __code odgCommitCUDAWorker4(struct CUDAWorker* worker, struct Context* task, struct Context* waitTask) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
101 if (__sync_fetch_and_sub(&waitTask->idgCount, 1) == 1) { // atomic decrement idg counter(__sync_fetch_and_sub function return initial value of waitTask->idgCount point)
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
102 struct TaskManager* taskManager = waitTask->taskManager;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
103 goto taskManager->spawn(waitTask, odgCommitCUDAWorker2);
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
104 }
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
105 goto odgCommitCUDAWorker2();
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
106 }
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
107
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
108 __code odgCommitCUDAWorker4_stub(struct Context* context) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
109 CUDAWorker* cudaWorker = (CUDAWorker*)GearImpl(context, Worker, worker);
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
110 struct Context* task = Gearef(context, Worker)->task;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
111 struct Context* waitTask = &Gearef(context, Queue)->data->Context;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
112 goto odgCommitCUDAWorker4(context,
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
113 cudaWorker,
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
114 task,
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
115 waitTask);
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
116 }
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
117
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
118 __code odgCommitCUDAWorker5(struct CUDAWorker* worker, struct Context* task) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
119 worker->loopCounter++;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
120 goto odgCommitCUDAWorker1();
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
121 }
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
122
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
123 __code odgCommitCUDAWorker6(struct CUDAWorker* worker, struct Context* task) {
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
124 struct Worker* taskWorker = task->worker;
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
125 goto taskWorker->taskReceive(taskWorker->tasks);
410
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
126 }
85b0ddbf458e Fix CudaWorker
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 320
diff changeset
127
481
a517b11c37f7 Refactoring CUDAWorker.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 473
diff changeset
128 __code shutdownCUDAWorker(struct CUDAWorker* worker) {
411
0eba9a04633f Work CUDAtwice
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 410
diff changeset
129 cudaShutdown(worker);
440
55db2a339958 Add worker shutdown
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 436
diff changeset
130 goto meta(context, C_exit_code);
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
131 }