Mercurial > hg > Members > kono > Cerium
diff example/word_count/main.cc @ 972:d093d601fc14
fix
author | Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 27 Aug 2010 06:39:16 +0900 |
parents | 33630c6ff445 |
children | 18a548c337cb |
line wrap: on
line diff
--- a/example/word_count/main.cc Thu Aug 26 20:40:08 2010 +0900 +++ b/example/word_count/main.cc Fri Aug 27 06:39:16 2010 +0900 @@ -90,10 +90,40 @@ int loop = (task_count + spl - 1) / spl; for (int i = 0; i < loop; i += 1) { - + if (spl > w->task_num) { - spe_num = 1; - array_task_num = w->task_num; + if (w->task_num >= spe_num) { + array_task_num = w->task_num / spe_num; + } else { + + int task_num = w->task_num; + + for (int j = 0; j < task_num; j++) { + HTask *h_exec = 0; + int i = w->task_spwaned++; + + if (w->size < size) size = w->size; + + h_exec = manager->create_task(TASK_EXEC, + (memaddr)(w->file_mmap + i*w->division_size), size, + (memaddr)(w->o_data + i*w->out_size), w->division_out_size); + + if (all) { + w->t_print->wait_for(h_exec); + } else { + t_next->wait_for(h_exec); + } + + h_exec->set_cpu(SPE_ANY); + h_exec->spawn(); + + w->size -= size; + w->task_num--; + + } + + return; + } }