annotate src/parallel_execution/CUDAWorker.cbc @ 316:54d203daf06b

CUDAtwice.cbc is called.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 15 Feb 2017 16:25:23 +0900
parents 1839586f5b41
children 51aa65676e37
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
303
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
1 #include <stdio.h>
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
2 #include <sys/time.h>
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
3 #include <string.h>
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
4 #include <stdlib.h>
304
9755206813cb helper_string.h for ANSI C
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 303
diff changeset
5 #include <libkern/OSAtomic.h>
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
6
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
7 // includes, project
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
8 #include <driver_types.h>
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
9 #include <cuda_runtime.h>
303
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
10 #include <cuda.h>
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
11 #include "helper_cuda.h"
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
12
302
8e7926f3e271 fix CUDAWorker
ikkun
parents: 275
diff changeset
13 #include "../context.h"
95
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
303
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
15 static void start_CUDAworker(Worker* worker);
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
16 static void cudaInit(struct CUDAWorker *cudaWorker,int phase) ;
233
06133afb3b5b create worker start_code
mir3636
parents: 232
diff changeset
17
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
18 volatile int cuda_initialized = 0;
313
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 312
diff changeset
19
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
20 Worker* createCUDAWorker(struct Context* context, int id, Queue* queue, TaskManagerImpl *im) {
233
06133afb3b5b create worker start_code
mir3636
parents: 232
diff changeset
21 struct Worker* worker = ALLOC(context, Worker);
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
22 struct CUDAWorker* cudaWorker = new CUDAWorker();
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
23
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
24 cudaInit(cudaWorker,0);
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
25
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
26 worker->worker = (union Data*)cudaWorker;
244
d1567718f12c Fix error
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 242
diff changeset
27 worker->tasks = queue;
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
28 printf("createCUDAWorker %p\n",queue);
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
29 cudaWorker->id = id;
313
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 312
diff changeset
30 worker->shutdown = C_shutdownCUDAWorker;
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
31 // pthread_create(&worker->worker->CUDAWorker.thread, NULL, (void*)&start_CUDAworker, worker);
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
32 if (im) {
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
33 printf("im->worker %p\n",im->workers);
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
34 im->workers[0] = worker;
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
35 }
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
36 cuda_initialized = 1;
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
37 start_CUDAworker(worker);
313
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 312
diff changeset
38 return worker;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 312
diff changeset
39 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 312
diff changeset
40
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
41 static void cudaInit(struct CUDAWorker *cudaWorker,int phase) {
312
7dd5a7d52a67 USE_CUDAWorker flag only for CUDAtwice
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 305
diff changeset
42 // initialize and load kernel
7dd5a7d52a67 USE_CUDAWorker flag only for CUDAtwice
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 305
diff changeset
43 cudaWorker->num_stream = 1; // number of stream
314
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
44 // cudaWorker->stream = NEWN(cudaWorker->num_stream, CUstream );
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
45 printf("cudaInit 1\n");
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
46 if (phase==0)
312
7dd5a7d52a67 USE_CUDAWorker flag only for CUDAtwice
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 305
diff changeset
47 checkCudaErrors(cuInit(0));
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
48 if (phase==0)
312
7dd5a7d52a67 USE_CUDAWorker flag only for CUDAtwice
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 305
diff changeset
49 checkCudaErrors(cuDeviceGet(&cudaWorker->device, 0));
314
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
50 printf("cudaInit 2\n");
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
51 if (phase==0)
312
7dd5a7d52a67 USE_CUDAWorker flag only for CUDAtwice
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 305
diff changeset
52 checkCudaErrors(cuCtxCreate(&cudaWorker->cuCtx, CU_CTX_SCHED_SPIN, cudaWorker->device));
314
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
53 printf("cudaInit 3\n");
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
54 // if (cudaWorker->num_stream) {
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
55 // for (int i=0;i<cudaWorker->num_stream;i++)
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
56 // checkCudaErrors(cuStreamCreate(&cudaWorker->stream[i],0));
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
57 // }
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
58 CUdeviceptr devA;
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
59 checkCudaErrors(cuMemAlloc(&devA, 16));
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
60
314
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
61 printf("cudaInit done\n");
183
mir3636
parents: 175
diff changeset
62 }
mir3636
parents: 175
diff changeset
63
303
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
64 static void start_CUDAworker(Worker* worker) {
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
65 CUDAWorker* cudaWorker = (CUDAWorker*)worker->worker;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
66 cudaWorker->context = NEW(struct Context);
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
67 initContext(cudaWorker->context);
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
68 Gearef(cudaWorker->context, Worker)->worker = (union Data*)worker;
303
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
69
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
70 goto meta(cudaWorker->context, C_taskReceiveCUDAWorker);
233
06133afb3b5b create worker start_code
mir3636
parents: 232
diff changeset
71 }
06133afb3b5b create worker start_code
mir3636
parents: 232
diff changeset
72
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
73 __code taskReceiveCUDAWorker(struct Worker* worker,struct Queue* queue) {
247
ce262b2c1daf Fix createTask for main
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 244
diff changeset
74 queue->queue = (union Data*)worker->tasks;
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
75 queue->next = C_getTaskCUDA;
248
1ede5390cda2 Fix segmentation fault but not multi thread running
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 247
diff changeset
76 goto meta(context, worker->tasks->take);
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
77 }
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
78
302
8e7926f3e271 fix CUDAWorker
ikkun
parents: 275
diff changeset
79 __code taskReceiveCUDAWorker_stub(struct Context* context) {
8e7926f3e271 fix CUDAWorker
ikkun
parents: 275
diff changeset
80 goto taskReceiveCUDAWorker(context, &Gearef(context, Worker)->worker->Worker, Gearef(context, Queue));
222
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
81 }
77faa28128b4 Add taskSend for TaskManager
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
82
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
83 __code getTaskCUDA(struct Worker* worker, struct Context* task) {
240
864bb372f37f Add spawnTask1
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 237
diff changeset
84 if (!task)
236
865179a0a56d fix taskManager
ikkun
parents: 235
diff changeset
85 return; // end thread
316
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
86 // if (cuda_initialized==0 || 1) {
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
87 // CUDAWorker* cudaWorker = (CUDAWorker*)worker->worker;
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
88 // cudaInit(cudaWorker,1);
54d203daf06b CUDAtwice.cbc is called.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 314
diff changeset
89 // }
314
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
90 worker->taskReceive = C_taskReceiveCUDAWorker;
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
91 task->worker = worker;
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
92 enum Code taskCg = task->next;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
93 task->next = C_odgCommitCUDA; // set CG after task exec
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
94 goto meta(task, taskCg);
169
ea7b11f3e717 Using Queue Interface
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
95 }
109
059b26a250cc Change put_queue process
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 103
diff changeset
96
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
97 __code getTaskCUDA_stub(struct Context* context) {
247
ce262b2c1daf Fix createTask for main
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 244
diff changeset
98 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
99 struct Context* task = &Gearef(context, Queue)->data->Context;
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
100 goto getTaskCUDA(context, worker, task);
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
101 }
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
102
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
103 __code odgCommitCUDA(struct LoopCounter* loopCounter, struct Queue* queue, struct Context* task) {
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
104 int i = loopCounter->i ;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
105 if(task->odg + i < task->maxOdg) {
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
106 queue->queue = (union Data*)GET_WAIT_LIST(task->data[task->odg+i]);
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
107 queue->next = C_odgCommitCUDA1;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
108 goto meta(context, queue->queue->Queue.take);
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
109 }
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
110 loopCounter->i = 0;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
111 goto meta(context, C_taskReceiveCUDAWorker);
95
3e28ee215c0e modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 }
101
8987cf13d5bb Add Allocate macro
innparusu
parents: 98
diff changeset
113
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
114 __code odgCommitCUDA_stub(struct Context* context) {
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
115 struct Context* workerContext = context->worker->worker->CUDAWorker.context;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
116 goto odgCommitCUDA(workerContext,
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
117 Gearef(workerContext, LoopCounter),
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
118 Gearef(workerContext, Queue),
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
119 context);
98
d400948dbbab add Cuda infomation to context
ikkun
parents: 95
diff changeset
120 }
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
121
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
122 __code odgCommitCUDA1(struct TaskManager* taskManager, struct Context* task) {
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
123 if(__sync_fetch_and_sub(&task->idgCount, 1)) {
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
124 if(task->idgCount == 0) {
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
125 taskManager->taskManager = (union Data*)task->taskManager;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
126 taskManager->context = task;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
127 taskManager->next = C_odgCommitCUDA;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
128 goto meta(context, task->taskManager->spawn);
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
129 }
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
130 } else {
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
131 goto meta(context, C_odgCommitCUDA1);
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
132 }
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
133 }
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
134
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
135 __code odgCommitCUDA1_stub(struct Context* context) {
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
136 struct Context* task = &Gearef(context, Queue)->data->Context;
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
137 goto odgCommitCUDA1(context,
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
138 Gearef(context, TaskManager),
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
139 task);
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
140
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
141 }
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
142
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
143
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
144 __code shutdownCUDAWorker(struct Context* context, CUDAWorker* worker) {
314
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
145 // for (int i=0;i<worker->num_stream;i++)
1839586f5b41 pthread CUDA test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 313
diff changeset
146 // checkCudaErrors(cuStreamDestroy(worker->stream[i]));
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
147 checkCudaErrors(cuCtxDestroy(worker->cuCtx));
230
a1fb3f2d1a36 fix worker
ikkun
parents: 227
diff changeset
148 }
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
149
303
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
150 __code shutdownCUDAWorker_stub(struct Context* context) {
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 304
diff changeset
151 CUDAWorker* worker = (CUDAWorker *)GearImpl(context, Worker, worker);
303
1dbaef86593b CUDAtwice.cbc
ikkun
parents: 302
diff changeset
152 goto shutdownCUDAWorker(context,worker);
227
991f3d1ce072 fix worker
ikkun
parents: 222
diff changeset
153 }