Mercurial > hg > Gears > Gears
changeset 880:5ce463171d86
...
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 24 Jan 2021 16:18:34 +0900 |
parents | 88cdab47903f |
children | fc0a39161d48 |
files | src/parallel_execution/CMakeLists.txt src/parallel_execution/MCTaskManagerImpl.cbc src/parallel_execution/MCTaskManagerImpl.h src/parallel_execution/generate_context.pl src/parallel_execution/lib/Gears/Context.pm |
diffstat | 5 files changed, 37 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/src/parallel_execution/CMakeLists.txt Sun Jan 24 15:53:29 2021 +0900 +++ b/src/parallel_execution/CMakeLists.txt Sun Jan 24 16:18:34 2021 +0900 @@ -151,6 +151,13 @@ GearsCommand( TARGET + DPPMC + SOURCES + TaskManagerImpl.cbc CPUWorker.cbc SynchronizedQueue.cbc examples/DPPMC/AtomicTImpl.cbc SingleLinkedStack.cbc examples/DPPMC/PhilsImpl.cbc examples/DPPMC/main.cbc examples/DPPMC/ForkImpl.cbc ModelChecking/crc32.c ModelChecking/memory.c ModelChecking/state_db.c AtomicReference.cbc ModelChecking/MCWorker.cbc MCTaskManagerImpl.cbc +) + +GearsCommand( + TARGET DPP2 SOURCES TaskManagerImpl.cbc CPUWorker.cbc SynchronizedQueue.cbc examples/DPP2/AtomicTImpl.cbc SingleLinkedStack.cbc examples/DPP2/PhilsImpl.cbc examples/DPP2/main.cbc examples/DPP2/ForkImpl.cbc ModelChecking/crc32.c ModelChecking/memory.c ModelChecking/state_db.c AtomicReference.cbc ModelChecking/MCWorker.cbc
--- a/src/parallel_execution/MCTaskManagerImpl.cbc Sun Jan 24 15:53:29 2021 +0900 +++ b/src/parallel_execution/MCTaskManagerImpl.cbc Sun Jan 24 16:18:34 2021 +0900 @@ -7,7 +7,7 @@ #include <stdio.h> #include <unistd.h> -void createWorkers(struct Context* context, TaskManagerImpl* taskManager); +void createWorkers(struct Context* context, MCTaskManagerImpl* taskManager); TaskManager* createMCTaskManagerImpl(struct Context* context, int numCPU, int numGPU, int numIO) { struct TaskManager* taskManager = new TaskManager(); @@ -17,7 +17,7 @@ taskManager->incrementTaskCount = C_incrementTaskCountTaskManagerImpl; taskManager->decrementTaskCount = C_decrementTaskCountTaskManagerImpl; taskManager->setWaitTask = C_setWaitTaskTaskManagerImpl; - struct MCTaskManagerImpl* taskManagerImpl = new TaskManagerImpl(); + struct MCTaskManagerImpl* taskManagerImpl = new MCTaskManagerImpl(); // 0...numIO-1 IOProcessor // numIO...numIO+numGPU-1 GPUProcessor // numIO+numGPU...numIO+numGPU+numCPU-1 CPUProcessor @@ -35,7 +35,7 @@ return taskManager; } -void createWorkers(struct Context* context, MCMCTaskManagerImpl* taskManager) { +void createWorkers(struct Context* context, MCTaskManagerImpl* taskManager) { int i = 0; taskManager->workers = (Worker**)ALLOCATE_PTR_ARRAY(context, Worker, taskManager->maxCPU); for (;i<taskManager->gpu;i++) { @@ -56,12 +56,12 @@ } } -__code spawnTasksMCTaskManagerImpl(struct TaskManagerImpl* taskManager, struct Element* taskList, __code next1(...)) { +__code spawnTasksMCTaskManagerImpl(struct MCTaskManagerImpl* taskManager, struct Element* taskList, __code next1(...)) { taskManager->taskList = taskList; goto spawnTasksMCTaskManagerImpl1(); } -__code spawnTasksMCTaskManagerImpl1(struct TaskManagerImpl* taskManagerImpl, struct TaskManager* taskManager) { +__code spawnTasksMCTaskManagerImpl1(struct MCTaskManagerImpl* taskManagerImpl, struct TaskManager* taskManager) { if (taskManagerImpl->taskList == NULL) { goto spawnTasksMCTaskManagerImpl2(); } @@ -71,17 +71,17 @@ } __code spawnTasksMCTaskManagerImpl1_stub(struct Context* context) { - MCTaskManagerImpl* taskManagerImpl = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager); - MCTaskManager* taskManager = &Gearef(context, TaskManager)->taskManager->TaskManager; + MCTaskManagerImpl* taskManagerImpl = (MCTaskManagerImpl*)GearImpl(context, TaskManager, taskManager); + TaskManager* taskManager = &Gearef(context, TaskManager)->taskManager->TaskManager; goto spawnTasksMCTaskManagerImpl1(context, taskManagerImpl, taskManager); } -__code spawnTasksMCTaskManagerImpl2(struct TaskManagerImpl* taskManager, struct Element* taskList, __code next1(...)) { +__code spawnTasksMCTaskManagerImpl2(struct MCTaskManagerImpl* taskManager, struct Element* taskList, __code next1(...)) { taskManager->taskList = taskList; goto spawnTasksMCTaskManagerImpl3(); } -__code spawnTasksMCTaskManagerImpl3(struct TaskManagerImpl* taskManagerImpl, __code next1(...), struct TaskManager* taskManager) { +__code spawnTasksMCTaskManagerImpl3(struct MCTaskManagerImpl* taskManagerImpl, __code next1(...), struct TaskManager* taskManager) { if (taskManagerImpl->taskList == NULL) { goto next1(...); } @@ -91,13 +91,13 @@ } __code spawnTasksMCTaskManagerImpl3_stub(struct Context* context) { - MCTaskManagerImpl* taskManagerImpl = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager); - enum Code next1 = Gearef(context, MCTaskManager)->next1; - MCTaskManager* taskManager = &Gearef(context, TaskManager)->taskManager->TaskManager; + MCTaskManagerImpl* taskManagerImpl = (MCTaskManagerImpl*)GearImpl(context, TaskManager, taskManager); + enum Code next1 = Gearef(context, TaskManager)->next1; + TaskManager* taskManager = &Gearef(context, TaskManager)->taskManager->TaskManager; goto spawnTasksMCTaskManagerImpl3(context, taskManagerImpl, next1, taskManager); } -__code setWaitTaskMCTaskManagerImpl(struct TaskManagerImpl* taskManager, struct Context* task, __code next(...)) { +__code setWaitTaskMCTaskManagerImpl(struct MCTaskManagerImpl* taskManager, struct Context* task, __code next(...)) { int i = taskManager->loopCounter; if (task->idg+i < task->maxIdg) { struct Queue* queue = GET_WAIT_LIST(task->data[task->idg + i]); @@ -108,17 +108,17 @@ goto incrementTaskCountMCTaskManagerImpl(); } -__code incrementTaskCountMCTaskManagerImpl(struct TaskManagerImpl* taskManager, __code next(...)) { +__code incrementTaskCountMCTaskManagerImpl(struct MCTaskManagerImpl* taskManager, __code next(...)) { __sync_fetch_and_add(&taskManager->taskCount, 1); goto next(...); } -__code decrementTaskCountMCTaskManagerImpl(struct TaskManagerImpl* taskManager, __code next(...)) { +__code decrementTaskCountMCTaskManagerImpl(struct MCTaskManagerImpl* taskManager, __code next(...)) { __sync_fetch_and_sub(&taskManager->taskCount, 1); goto next(...); } -__code spawnMCTaskManagerImpl(struct TaskManagerImpl* taskManagerImpl, struct Context* task, __code next(...), struct TaskManager* taskManager) { +__code spawnMCTaskManagerImpl(struct MCTaskManagerImpl* taskManagerImpl, struct Context* task, __code next(...), struct TaskManager* taskManager) { task->taskManager = taskManager; if (task->idgCount == 0) { // iterator task is normal task until spawned @@ -134,13 +134,13 @@ } __code spawnMCTaskManagerImpl_stub(struct Context* context) { - MCTaskManagerImpl* taskManagerImpl = (TaskManagerImpl*)GearImpl(context, TaskManager, taskManager); - struct Context* task = Gearef(context, MCTaskManager)->task; - MCTaskManager* taskManager = &Gearef(context, TaskManager)->taskManager->TaskManager; + MCTaskManagerImpl* taskManagerImpl = (MCTaskManagerImpl*)GearImpl(context, TaskManager, taskManager); + struct Context* task = Gearef(context, TaskManager)->task; + TaskManager* taskManager = &Gearef(context, TaskManager)->taskManager->TaskManager; goto spawnMCTaskManagerImpl(context, taskManagerImpl, task, - Gearef(context, MCTaskManager)->next, + Gearef(context, TaskManager)->next, taskManager); } @@ -174,7 +174,7 @@ goto queue->put(task, next(...)); } -__code shutdownMCTaskManagerImpl(struct TaskManagerImpl* taskManager, __code next(...)) { +__code shutdownMCTaskManagerImpl(struct MCTaskManagerImpl* taskManager, __code next(...)) { if (taskManager->taskCount != 0) { usleep(1000); goto shutdownMCTaskManagerImpl(); @@ -189,12 +189,12 @@ goto shutdownMCTaskManagerImpl2(); } -__code shutdownMCTaskManagerImpl1(struct TaskManagerImpl* taskManager, __code next(...)) { +__code shutdownMCTaskManagerImpl1(struct MCTaskManagerImpl* taskManager, __code next(...)) { taskManager->loopCounter++; goto shutdownMCTaskManagerImpl(); } -__code shutdownMCTaskManagerImpl2(struct TaskManagerImpl* taskManager, __code next(...)) { +__code shutdownMCTaskManagerImpl2(struct MCTaskManagerImpl* taskManager, __code next(...)) { int i = taskManager->loopCounter; if (i < taskManager->numWorker) { pthread_join(taskManager->workers[i]->thread, NULL);
--- a/src/parallel_execution/MCTaskManagerImpl.h Sun Jan 24 15:53:29 2021 +0900 +++ b/src/parallel_execution/MCTaskManagerImpl.h Sun Jan 24 16:18:34 2021 +0900 @@ -1,4 +1,4 @@ -typedef struct MCTaskManagerImpl <> impl MCTaskManager { +typedef struct MCTaskManagerImpl <> impl TaskManager { int numWorker; int sendCPUWorkerIndex; int sendGPUWorkerIndex;
--- a/src/parallel_execution/generate_context.pl Sun Jan 24 15:53:29 2021 +0900 +++ b/src/parallel_execution/generate_context.pl Sun Jan 24 16:18:34 2021 +0900 @@ -135,7 +135,6 @@ } } - #p @mod; $gears->tree2create_context_h($tree); }
--- a/src/parallel_execution/lib/Gears/Context.pm Sun Jan 24 15:53:29 2021 +0900 +++ b/src/parallel_execution/lib/Gears/Context.pm Sun Jan 24 16:18:34 2021 +0900 @@ -345,6 +345,9 @@ my $data_struct_str = ""; for my $interface (sort keys %$dg_str) { my $elem = $dg_str->{$interface}->{elem}; + unless ($elem) { + print STDERR "[ERROR] not found $interface\n"; + } $data_struct_str .= $self->h2context_str_w_macro($elem); for my $header (_find_include_header_each_cbc($elem)) { @@ -356,6 +359,9 @@ next unless ($root_impl); for my $impl_name (sort keys %{$root_impl}) { my $impl = $root_impl->{$impl_name}; + unless ($impl) { + print STDERR "[ERROR] not found $impl_name\n"; + } $data_struct_str .= $self->h2context_str_w_macro($impl); for my $header (_find_include_header_each_cbc($impl)) { push(@{$from_header_to_caller{$header}},$impl->{file_name});