diff example/Bulk/main.cc @ 700:d3afc8777daa

fix fix ...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 14 Dec 2009 12:16:52 +0900
parents 7e937a1cd121
children 226d95fa2691
line wrap: on
line diff
--- a/example/Bulk/main.cc	Sun Dec 13 22:46:15 2009 +0900
+++ b/example/Bulk/main.cc	Mon Dec 14 12:16:52 2009 +0900
@@ -64,10 +64,9 @@
 }
 
 void
-twice_init(TaskManager *manager)
+twice_init(TaskManager *manager,int *data, int length)
 {
 
-    int *data = (int*)manager->allocate(sizeof(int)*length);
 
     for (int i = 0; i < length; i++) {
 	data[i] = i;
@@ -79,16 +78,18 @@
      * Create Task
      *   create_task(Task ID);
      */ 
-    int size = Task::calc_size(2,2,2);
-    printf("allocate task size 0x%0x\n",size);
-    printf("allocate task total size 0x%0x\n",(size *= count));
 
-    memaddr task_buf = (memaddr)manager->allocate(size);
-    HTask *twice_main = manager->create_task(TaskArray, task_buf, size, 0, 0);
+    HTask *twice_main = manager->create_task_array(Twice,count,2,2,2);
+    Task *t = twice_main->next_task_array(Twice, 0);
+    printf("allocate task size 0x%0x\n",t->size());
+    printf("allocate task total size 0x%0x = 0x%0x * %d\n",twice_main->r_size,
+		t->size(), count);
+    void *task_buf = twice_main->rbuf;
+    twice_main->set_post(twice_result, (void*)data, task_buf);
 
-    int pos = 0;
+    t = 0;
     for(int i = 0;i<count;i++) {
-	Task *t = twice_main->create_task_array(Twice,pos);
+	t = twice_main->next_task_array(Twice, t);
 	int length2 = length/2;
         //  以下の順序でデータを追加する必要がある。
         //  length を先に指定すればsetは後からでも良い。
@@ -96,35 +97,31 @@
 	 * Set 32bits parameter
 	 *   add_param(32bit parameter);
 	 */
-	t->set_param_length(2);
 	t->set_param(0, (memaddr)length2);
 	t->set_param(1, (memaddr)length2);
 	/**
 	 * Set of Input Data
 	 *   add_inData(address of input data, size of input data);
 	 */
-	t->set_inData_length(2);
 	t->set_inData(0,data, sizeof(int)*length2);
 	t->set_inData(1,data+length2, sizeof(int)*length2);
-	print_ListData(2,t->inListData());
+	print_ListData(2,t->inData(0));
 	/**
 	 * Set of Output area
 	 *   add_outData(address of output area, size of output area);
 	 */
-	t->set_outData_length(2);
 	t->set_outData(0,data, sizeof(int)*length2);
 	t->set_outData(1,data+length2, sizeof(int)*length2);
-	print_ListData(2,t->outListData());
-	pos += t->size();
-	printf("pos 0x%0x size 0x%0x\n",pos, t->size());
+	print_ListData(2,t->outData(0));
+	data += length;
+	printf("pos 0x%0lx size 0x%0x\n",(unsigned long)t, t->size());
     }
-    twice_main->spawn_task_array(pos);
+    twice_main->spawn_task_array(t->next());
 
     twice_main->set_cpu(SPE_ANY);
     /*
      * set_post() で ppe task を渡せるようにしたい
      */
-    twice_main->set_post(twice_result, (void*)data, (void*)task_buf);
     // add Active Queue
     twice_main->spawn();    
 }
@@ -141,7 +138,8 @@
     task_init();
 
     for (int i = 0; i < task; ++i) {
-	twice_init(manager);
+	int *data = (int*)manager->allocate(sizeof(int)*length*count);
+	twice_init(manager, data, length);
     }
 
     return 0;