# HG changeset patch # User Shinji KONO # Date 1260030041 -32400 # Node ID 45ddb28c592d5ed4a61ae47d80e64853ed71c76a # Parent bde5f13adf10c66ae1282789d16038c02da97c6c fix diff -r bde5f13adf10 -r 45ddb28c592d TaskManager/Cell/spe/CellDmaManager.cc --- 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); } diff -r bde5f13adf10 -r 45ddb28c592d TaskManager/Cell/spe/CellDmaManager.h --- 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); diff -r bde5f13adf10 -r 45ddb28c592d example/many_task/Makefile.macosx --- 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.. diff -r bde5f13adf10 -r 45ddb28c592d example/many_task/main.cc --- 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();