Mercurial > hg > Members > kono > Cerium
changeset 436:8eac9bf116d8
merge
author | game@henri.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Thu, 24 Sep 2009 22:36:13 +0900 |
parents | cf2704424cc0 (current diff) 9a95b60ad5fb (diff) |
children | 9ebb44b7b15d |
files | |
diffstat | 9 files changed, 60 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/example/get_segment/Func.h Thu Sep 24 22:35:46 2009 +0900 +++ b/example/get_segment/Func.h Thu Sep 24 22:36:13 2009 +0900 @@ -1,5 +1,6 @@ enum { HELLO_TASK, + HELLO_TASK1, RUN_FINISH, };
--- a/example/get_segment/README Thu Sep 24 22:35:46 2009 +0900 +++ b/example/get_segment/README Thu Sep 24 22:36:13 2009 +0900 @@ -1,20 +1,16 @@ - 概要 -SPE側から、PPEのメインメモリをアクセスするために、固定長の - - MemorySegment +Thu Sep 24 20:58:07 JST 2009 -をリストにした MemList を作る。MemHash により、MemorySegment -を検索出来るようにする。MemorySegement は、MemList 上で、LRU -で入れ換えられる。これにより、SPE上に、メインメモリのキャッシュ -を作ることが出来る。 +Overly の例題 + +get_segment を使うのだが、load のsize がまちまちなので、それを +別に扱う必要がある。 -MemList は、Task が自分で管理する。それは、global_get/global_set -で、Task を越えて持ち越すことが出来る。ただし、MemList自体 -が削除されてしまう可能性もある。その時には、再度、MemListを -確保する。 +それから、olvy 領域は一つは取られてしまうので、それを一つ確保 +する必要がある。うんぬん... -キャッシュは、書き出し(put)もサポートしているが、get して、 -get したものが吐き出されてない前提。WriteBack などは実装してない。 +ld.script.ed は、なんらかのプログラムで生成する。 +なんか、spe manager だけで100kもあるんだけど。
--- a/example/get_segment/main.cc Thu Sep 24 22:35:46 2009 +0900 +++ b/example/get_segment/main.cc Thu Sep 24 22:36:13 2009 +0900 @@ -29,6 +29,7 @@ hello_init(TaskManager *manager) { HTask *hello; + HTask *hello1; for (int i = 0; i < count; i++) { /** @@ -36,6 +37,7 @@ * create_task(Task ID); */ hello = manager->create_task(HELLO_TASK); + hello1 = manager->create_task(HELLO_TASK1); /** * Select CPU @@ -43,14 +45,17 @@ * if you do not call this, execute PPE. */ hello->set_cpu(SPE_ANY); + hello1->set_cpu(SPE_ANY); /** * Set 32bits parameter * add_param(32bit parameter); */ hello->add_param(i); + hello1->add_param(i); hello->spawn(); + hello1->spawn(); } }
--- a/example/get_segment/spe/Hello.cc Thu Sep 24 22:35:46 2009 +0900 +++ b/example/get_segment/spe/Hello.cc Thu Sep 24 22:36:13 2009 +0900 @@ -3,14 +3,14 @@ #include "Func.h" /* これは必須 */ -SchedDefineDynamicTask(Hello,Segment1); +SchedDefineDynamicTask(Hello,segment1); int Hello::run(SchedTask *smanager, void *rbuf, void *wbuf) { int task_id = get_param(0); - printf("[%d] Hello, World!!\n", task_id); + printf("[%d] Hello, World!! Seg1 \n", task_id); return 0; }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/example/get_segment/spe/Hello1.cc Thu Sep 24 22:36:13 2009 +0900 @@ -0,0 +1,16 @@ +#include <stdio.h> +#include "Hello1.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineDynamicTask(Hello1,segment2); + +int +Hello1::run(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int task_id = get_param(0); + + printf("[%d] Hello, World Seg 2!!\n", task_id); + + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/example/get_segment/spe/Hello1.h Thu Sep 24 22:36:13 2009 +0900 @@ -0,0 +1,15 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif + +class Hello1 : public SchedTask { +public: + SchedConstructor(Hello1); + + int run(SchedTask *smanager, void *r, void *w); +}; + +#endif
--- a/example/get_segment/spe/Makefile Thu Sep 24 22:35:46 2009 +0900 +++ b/example/get_segment/spe/Makefile Thu Sep 24 22:36:13 2009 +0900 @@ -5,11 +5,11 @@ SRCS = spe-main.o # SRCS = $(filter-out $(SRCS_EXCLUDE),$(SRCS_TMP)) SPEOBJS = $(SRCS:.cc=.o) -OVLOBJS = Hello.o LoadEntry.o +OVLOBJS = Hello.o Hello1.o LoadEntry.o CC = spu-g++ INCLUDE = -I../${CERIUM}/include/TaskManager -I. -I.. -CFLAGS = $(INCLUDE) -O9 -g -Wall -fno-exceptions -fno-rtti#-DDEBUG +CFLAGS = $(INCLUDE) -O0 -g -Wall -fno-exceptions -fno-rtti#-DDEBUG LIBS = -L../${CERIUM}/TaskManager -lspemanager -Wl,--gc-sections SPELIBS = -Wl,-T,$(LDSCRIPT) -Wl,-N $(LIBS) @@ -36,5 +36,5 @@ $(CC) -o $@ $(SPEOBJS) $(SPELIBS) clean: - rm -f $(TARGET) $(OBJS) + rm -f $(TARGET) $(SPEOBJS) $(OVLOBJS) rm -f *~ \#*
--- a/example/get_segment/spe/ld.script.ed Thu Sep 24 22:35:46 2009 +0900 +++ b/example/get_segment/spe/ld.script.ed Thu Sep 24 22:36:13 2009 +0900 @@ -1,12 +1,13 @@ / \.text / /\*(\.text/ -s/\*(\.text/*( EXCLUDE_FILE(Hello.o,LoadEntry.o) .text/ +s/\*(\.text/*( EXCLUDE_FILE(Hello.o Hello1.o LoadEntry.o) .text/ /} =0/ a OVERLAY : { - .Segment0 { LoadEntry.o(.text) } - .Segment1 { Hello.o(.text) } + .segment0 { LoadEntry.o(.text) } + .segment1 { Hello.o(.text) } + .segment2 { Hello1.o(.text) } } . w
--- a/example/get_segment/spe/spe-main.cc Thu Sep 24 22:35:46 2009 +0900 +++ b/example/get_segment/spe/spe-main.cc Thu Sep 24 22:36:13 2009 +0900 @@ -2,7 +2,8 @@ #include "Scheduler.h" #include "LoadEntry.h" -SchedExternDynamicTask(Hello,Segment1); +SchedExternDynamicTask(Hello,segment1); +SchedExternDynamicTask(Hello1,segment2); /** * この関数は SpeScheduler から呼ばれるので @@ -11,6 +12,7 @@ void task_init(Scheduler *scheduler) { - SchedRegisterDynamicTask(HELLO_TASK, Hello, Segment1); - scheduler->allocate_code_segment(4,8024); + SchedRegisterDynamicTask(HELLO_TASK, Hello, segment1); + SchedRegisterDynamicTask(HELLO_TASK1, Hello1, segment2); + scheduler->allocate_code_segment(4,1024); }