Mercurial > hg > Game > Cerium
diff TaskManager/Cell/SpeThreads.cc @ 1580:806b4658ced6 draft
add multi dimension
author | Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 29 Mar 2013 19:32:58 +0900 |
parents | 29355ae40e6c |
children | 046695c73cb0 |
line wrap: on
line diff
--- a/TaskManager/Cell/SpeThreads.cc Mon Mar 25 23:27:04 2013 +0900 +++ b/TaskManager/Cell/SpeThreads.cc Fri Mar 29 19:32:58 2013 +0900 @@ -103,6 +103,19 @@ } } +void +SpeThreads::spawn_task(int cpu_num, TaskListPtr p) { + if (p->dim>0) { + int dim_count = (x+1)*(y+1)*(z+1); + if (cpu_num > dim_count) + p->tasks[0].self->dim_count = cpu_num; + for (int i = 0; i < cpu_num; i++) { + send_mail(i+1,1,(memaddr)&p); + } + } else { + send_mail(cpu_num,1,(memaddr)&p); + } +} /** * SPE からのメールを受信する。 @@ -149,7 +162,6 @@ */ void SpeThreads::send_mail(int speid, int num, memaddr *data) - { spe_in_mbox_write(spe_ctx[speid], (unsigned int *)data, num*(sizeof(memaddr)/sizeof(int)), SPE_MBOX_ALL_BLOCKING); }