changeset 675:45ddb28c592d

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 06 Dec 2009 01:20:41 +0900
parents bde5f13adf10
children a06eef665c45
files TaskManager/Cell/spe/CellDmaManager.cc TaskManager/Cell/spe/CellDmaManager.h example/many_task/Makefile.macosx example/many_task/main.cc
diffstat 4 files changed, 16 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/TaskManager/Cell/spe/CellDmaManager.cc	Sun Dec 06 00:54:10 2009 +0900
+++ b/TaskManager/Cell/spe/CellDmaManager.cc	Sun Dec 06 01:20:41 2009 +0900
@@ -38,7 +38,7 @@
     mfc_write_tag_mask(1 << mask);
     mfc_write_tag_update_all();
     mfc_read_tag_status();
-    (this->*end_dmawait_profile)();
+    (this->*end_dmawait_profile)(&global_wait_time);
 }
 
 void CellDmaManager::mail_write(memaddr data)
@@ -49,7 +49,7 @@
 	unsigned long data0 = (unsigned long)data;
 	spu_write_out_mbox((uint32)(data0>>4));
     }
-    (this->*end_dmawait_profile)();
+    (this->*end_dmawait_profile)(&global_mail_time);
 }
 
 memaddr CellDmaManager::mail_read()
@@ -59,7 +59,7 @@
     if (ABIBIT>32) {
 	data += (spu_read_in_mbox()<<4);
     }
-    (this->*end_dmawait_profile)();
+    (this->*end_dmawait_profile)(&global_mail_time);
     return data;
 }
 
@@ -109,10 +109,10 @@
 }
 
 void
-CellDmaManager::do_end_dmawait_profile()
+CellDmaManager::do_end_dmawait_profile(long long *counter)
 {
     wait_time = spu_readch(SPU_RdDec);
-    global_wait_time += 0xffffffff - wait_time;
+    *counter += 0xffffffff - wait_time;
     busy_time = wait_time;
 }
 
@@ -123,10 +123,13 @@
 CellDmaManager::show_dma_wait(int cpu)
 {
 
-  printf("spu%d: global_wait_time = %lld\n",cpu, global_wait_time);
-  printf("spu%d: global_busy_time = %lld\n",cpu, global_busy_time);
-  printf("spu%d: busy_ratio = %g%%\n",cpu, 
-	 ((double)global_busy_time)/((double)(global_busy_time+global_wait_time))*100.0);
+  double r = ((double)global_busy_time)/((double)(
+	global_busy_time+global_wait_time+global_mail_time
+	))*100.0);
+  printf("spu%d: busy_time = %lld",cpu, global_busy_time);
+  printf(" wait_time = %lld", global_wait_time);
+  printf(" mail_time = %lld", global_mail_time);
+  printf(" busy_ratio = %g%%\n",r);
 }
 
 
--- a/TaskManager/Cell/spe/CellDmaManager.h	Sun Dec 06 00:54:10 2009 +0900
+++ b/TaskManager/Cell/spe/CellDmaManager.h	Sun Dec 06 01:20:41 2009 +0900
@@ -23,7 +23,7 @@
 
     /* variables */
     unsigned int wait_time, busy_time;
-    unsigned long long global_busy_time, global_wait_time;
+    unsigned long long global_busy_time, global_wait_time, global_mail_time;
 
     /* functions */
     void dma_load(void *buf, memaddr addr, uint32 size, uint32 mask);
--- a/example/many_task/Makefile.macosx	Sun Dec 06 00:54:10 2009 +0900
+++ b/example/many_task/Makefile.macosx	Sun Dec 06 01:20:41 2009 +0900
@@ -13,7 +13,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 CC      = g++
-CC += -m64
+CC += -m32
 CFLAGS  = -g -Wall# -O9 #-DDEBUG
 
 INCLUDE = -I${CERIUM}/include/TaskManager -I. -I..
--- a/example/many_task/main.cc	Sun Dec 06 00:54:10 2009 +0900
+++ b/example/many_task/main.cc	Sun Dec 06 01:20:41 2009 +0900
@@ -72,6 +72,8 @@
 
     HTask *dummy = manager->create_task(Dummy);
     int cpu  = manager->get_cpuNum();
+
+    // in case of -cpu 0 
     if (cpu==0) cpu = 1;
     dummy->set_post(sort_init, (void*)cpu, (void*)length);
     dummy->spawn();