# HG changeset patch # User Shinji KONO # Date 1263259128 -32400 # Node ID a969d3cdd20a49bbd938f21aabf7470cb295a445 # Parent d50fc4ca79e41464e6c6d1bbf12c579ba722c407 Task Arrayed Word Count (not yet worked) please fix vprintf diff -r d50fc4ca79e4 -r a969d3cdd20a TaskManager/Makefile.def --- a/TaskManager/Makefile.def Fri Jan 01 21:24:27 2010 +0900 +++ b/TaskManager/Makefile.def Tue Jan 12 10:18:48 2010 +0900 @@ -30,7 +30,7 @@ ABIBIT = 32 -# OPT = -O9 +OPT = -O9 OPT = -g CC = g++ diff -r d50fc4ca79e4 -r a969d3cdd20a example/word_count/main.cc --- a/example/word_count/main.cc Fri Jan 01 21:24:27 2010 +0900 +++ b/example/word_count/main.cc Tue Jan 12 10:18:48 2010 +0900 @@ -120,33 +120,42 @@ /*渡すデータの最後が文字かどうか。(スペース、改行以外)*/ int word_flag = 0; int i; - for (i = 0; i < task_num; i++) { + int task_size = 32; + for (i = 0; i < task_num; i+=task_size) { + HTask *task_main = manager->create_task_array(TASK_EXEC,task_size,2,1,1); + int j ; + Task *t_exec = task_main->next_task_array(TASK_EXEC, 0); + for(j = 0; j < task_size; j++) { + task_main->next_task_array(TASK_EXEC,t_exec); + task_main->set_cpu(SPE_ANY); + t_print->wait_for(task_main); + + // t_exec = manager->create_task(TASK_EXEC); + t_exec->set_param(0,division_size); + t_exec->set_param(1,word_flag); + t_exec->set_inData(0,file_mmap + i*division_size, division_size); + t_exec->set_outData(0,o_data + i*status_num, division_out_size); + + word_flag = ((file_mmap[(i+1)*division_size-1] != 0x20) && (file_mmap[(i+1)*division_size-1] != 0x0A)); + + size -= division_size; + } + task_main->spawn_task_array(t_exec->next()); + + } + + while (size>0) { t_exec = manager->create_task(TASK_EXEC); - t_exec->add_inData(file_mmap + i*division_size, division_size); - t_exec->add_outData(o_data + i*status_num, division_out_size); - t_exec->add_param(division_size); - t_exec->add_param(word_flag); + t_exec->set_param(0,size); + t_exec->set_param(1,word_flag); + t_exec->set_inData(0,file_mmap + i*division_size, size); + t_exec->set_outData(0,o_data + i*status_num, division_out_size); t_exec->set_cpu(SPE_ANY); t_print->wait_for(t_exec); t_exec->spawn(); - - word_flag = ((file_mmap[(i+1)*division_size-1] != 0x20) && (file_mmap[(i+1)*division_size-1] != 0x0A)); - + i++; size -= division_size; - - } - - if (size) { - - t_exec = manager->create_task(TASK_EXEC); - t_exec->add_inData(file_mmap + i*division_size, size); - t_exec->add_outData(o_data + i*status_num, division_out_size); - t_exec->add_param(size); - t_exec->add_param(word_flag); - t_exec->set_cpu(SPE_ANY); - t_print->wait_for(t_exec); - t_exec->spawn(); }