Mercurial > hg > Papers > 2020 > soto-midterm
comparison src/sendTask.cbc @ 1:73127e0ab57c
(none)
author | soto@cr.ie.u-ryukyu.ac.jp |
---|---|
date | Tue, 08 Sep 2020 18:38:08 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:b919985837a3 | 1:73127e0ab57c |
---|---|
1 __code spawnTaskManagerImpl(struct TaskManagerImpl* taskManager, struct Context* task, __code next(...)) { | |
2 if (task->idgCount == 0) { | |
3 goto taskSend(); | |
4 } | |
5 goto next(...); | |
6 } | |
7 | |
8 __code taskSend(struct TaskManagerImpl* taskManager, struct Context* task, __code next(...)) { | |
9 if (task->gpu) { | |
10 goto taskSend1(); | |
11 } else { | |
12 goto taskSend2(); | |
13 } | |
14 } | |
15 | |
16 __code taskSend1(struct TaskManagerImpl* taskManager, struct Context* task, __code next(...)) { | |
17 int workerId = taskManager->sendGPUWorkerIndex; | |
18 if(++taskManager->sendGPUWorkerIndex >= taskManager->cpu) { | |
19 taskManager->sendGPUWorkerIndex = taskManager->gpu; | |
20 } | |
21 struct Queue* queue = taskManager->workers[workerId]->tasks; | |
22 goto queue->put(task, next(...)); | |
23 } | |
24 | |
25 __code taskSend2(struct TaskManagerImpl* taskManager, struct Context* task, __code next(...)) { | |
26 int workerId = taskManager->sendCPUWorkerIndex; | |
27 if(++taskManager->sendCPUWorkerIndex >= taskManager->maxCPU) { | |
28 taskManager->sendCPUWorkerIndex = taskManager->cpu; | |
29 } | |
30 struct Queue* queue = taskManager->workers[workerId]->tasks; | |
31 goto queue->put(task, next(...)); | |
32 } |