Mercurial > hg > GearsTemplate
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 |
rev | line source |
---|---|
302 | 1 #include "../context.h" |
473 | 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 | 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 | 14 struct CUDAWorker* cudaWorker = new CUDAWorker(); |
15 worker->worker = (union Data*)cudaWorker; | |
244 | 16 worker->tasks = queue; |
305 | 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 | 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 | 23 return worker; |
24 } | |
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 | 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 | 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 | 35 } |
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 | 45 task->worker = worker; |
305 | 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 | 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 | 56 } |
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 | 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 | 86 } |
305 | 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 | 92 } |
227 | 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 | 131 } |