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});