diff TaskManager/Cell/SpeThreads.cc @ 1580:806b4658ced6 draft

add multi dimension
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Fri, 29 Mar 2013 19:32:58 +0900
parents 29355ae40e6c
children 046695c73cb0
line wrap: on
line diff
--- a/TaskManager/Cell/SpeThreads.cc	Mon Mar 25 23:27:04 2013 +0900
+++ b/TaskManager/Cell/SpeThreads.cc	Fri Mar 29 19:32:58 2013 +0900
@@ -103,6 +103,19 @@
     }
 }
 
+void
+SpeThreads::spawn_task(int cpu_num, TaskListPtr p) {
+    if (p->dim>0) {
+      int dim_count = (x+1)*(y+1)*(z+1);
+      if (cpu_num > dim_count)
+        p->tasks[0].self->dim_count = cpu_num;
+        for (int i = 0; i < cpu_num; i++) {
+	  send_mail(i+1,1,(memaddr)&p);
+	}
+    } else {
+        send_mail(cpu_num,1,(memaddr)&p);
+    }
+}
 
 /**
  * SPE からのメールを受信する。
@@ -149,7 +162,6 @@
  */
 void
 SpeThreads::send_mail(int speid, int num, memaddr *data)
-
 {
     spe_in_mbox_write(spe_ctx[speid], (unsigned int *)data, num*(sizeof(memaddr)/sizeof(int)), SPE_MBOX_ALL_BLOCKING);
 }