Mercurial > hg > Gears > GearsAgda
diff src/parallel_execution/taskManager.c @ 247:ce262b2c1daf
Fix createTask for main
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 25 Jan 2017 04:14:50 +0900 |
parents | d1567718f12c |
children | 1ede5390cda2 |
line wrap: on
line diff
--- a/src/parallel_execution/taskManager.c Wed Jan 25 03:07:59 2017 +0900 +++ b/src/parallel_execution/taskManager.c Wed Jan 25 04:14:50 2017 +0900 @@ -5,7 +5,7 @@ #include "origin_cs.h" #include <stdio.h> -void createWorkers(Context* context, TaskManager * taskManeger); +void createWorkers(Context* context, TaskManager* taskManeger, TaskManagerImpl* taskManagerImpl); union Data* createTaskManager(struct Context* context, int numCPU, int numGPU, int numIO) { struct TaskManager* taskManager = &ALLOCATE(context, TaskManager)->TaskManager; @@ -19,18 +19,17 @@ taskManager->createTask = C_createTask; taskManager->spawn = C_spawnTaskManager; taskManager->shutdown = C_shutdownTaskManager; - createWorkers(context, taskManager); struct TaskManagerImpl* taskManagerImpl = &ALLOCATE(context, TaskManagerImpl)->TaskManagerImpl; taskManager->taskManager = (union Data*)taskManagerImpl; taskManagerImpl -> activeQueue = &createSingleLinkedQueue(context)->Queue; taskManagerImpl -> taskQueue = &createSingleLinkedQueue(context)->Queue; taskManagerImpl -> numWorker = taskManager->maxCPU; + createWorkers(context, taskManager, taskManagerImpl); return (union Data*)(taskManager); } -void createWorkers(Context* context, TaskManager* taskManager) { +void createWorkers(Context* context, TaskManager* taskManager, TaskManagerImpl* taskManagerImpl) { int i = 0; - TaskManagerImpl* taskManagerImpl = (TaskManagerImpl*)GearImpl(context,TaskManager,taskManager); taskManagerImpl->workers = (Worker**)ALLOC_ARRAY(context, Worker, taskManager->maxCPU); for (;i<taskManager->gpu;i++) { Queue* queue = &createSynchronizedQueue(context)->Queue; @@ -52,14 +51,14 @@ __code createTask(struct Context* context, TaskManager* taskManager) { taskManager->context = NEW(struct Context); initContext(taskManager->context); - goto meta(context, C_setRunWorker); + goto meta(context, C_setWorker); } __code createTask_stub(struct Context* context) { - goto createTask(context,Gearef(context,TaskManager)); + goto createTask(context, Gearef(context,TaskManager)); } -__code setRunWorker(struct Context* context, TaskManagerImpl* taskManager, Context* task, enum Code next) { +__code setWorker(struct Context* context, TaskManagerImpl* taskManager, Context* task, enum Code next) { task->workerId = taskManager->sendWorkerIndex; if(++taskManager->sendWorkerIndex >= taskManager->numWorker) { taskManager->sendWorkerIndex = 0; @@ -67,9 +66,9 @@ goto meta(context, next); } -__code setRunWorker_stub(struct Context* context) { +__code setWorker_stub(struct Context* context) { TaskManagerImpl* taskManager = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager); - goto setRunWorker(context, taskManager, Gearef(context, TaskManager)->context, Gearef(context, TaskManager)->next); + goto setWorker(context, taskManager, Gearef(context, TaskManager)->context, Gearef(context, TaskManager)->next); } __code spawnTaskManager(struct Context* context, struct TaskManagerImpl* taskManager, struct Queue* queue, struct Context* task, enum Code next) { @@ -96,16 +95,15 @@ } -__code spawnTaskManager1(struct Context* context, struct TaskManagerImpl* taskManager, enum Code next) { +__code spawnTaskManager1(struct Context* context, struct TaskManagerImpl* taskManager) { pthread_mutex_unlock(&taskManager->mutex); - goto meta(context, next); + goto meta(context, C_taskSend); } __code spawnTaskManager1_stub(struct Context* context) { TaskManagerImpl* taskManager = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager); goto spawnTaskManager1(context, - taskManager, - Gearef(context, TaskManager)->next); + taskManager); } __code taskSend(struct Context* context, TaskManagerImpl* taskManager, Queue* queue) {