annotate example/dependency_task/main.cc @ 639:70c5c2d2eb24

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 19 Nov 2009 18:45:24 +0900
parents 60aa3f241b10
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
1 #include <stdio.h>
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
2 #include <stdlib.h>
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
3 #include <string.h>
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
4 #include "TaskManager.h"
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
5 #include "Func.h"
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
6
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
7 extern void task_init(void);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
8
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
9 int *idata;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
10 int length = DATA_NUM;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
11 int depend_flg = 1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
12
258
a09588a03ea5 change example/dependency_task
aaa
parents: 109
diff changeset
13 const char *usr_help_str = "Usage: ./dependency [-cpu spe_num] [-nodepend]\n\
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
14 -nodepend No Depenendcy";
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
15
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
16 void
400
00fe05184a02 Fix examples.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
17 run_start(TaskManager *manager)
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
18 {
481
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
19 HTaskPtr t_exec[2];
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
20 HTaskPtr t_print;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
21
258
a09588a03ea5 change example/dependency_task
aaa
parents: 109
diff changeset
22 idata = (int*)manager->allocate(sizeof(int)*length*2);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
23 for (int i = 0; i < length*2; i++) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
24 idata[i] = 0;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
25 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
26
298
58fd16298954 from EUC to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 258
diff changeset
27 // exec1,2 が計算した配列を見る
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
28 t_print = manager->create_task(TASK_PRINT);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
29 t_print->add_inData(idata, sizeof(int)*length*2);
625
60aa3f241b10 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
30 t_print->add_param((memaddr)(length*2));
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
31
298
58fd16298954 from EUC to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 258
diff changeset
32 // idata を二つに分けて計算する
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
33 for (int i = 0; i < 2; i++) {
481
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
34 t_exec[i] = manager->create_task(TASK_EXEC);
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
35 t_exec[i]->add_inData(&idata[length*i], sizeof(int)*length);
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
36 t_exec[i]->add_outData(&idata[length*i], sizeof(int)*length);
625
60aa3f241b10 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
37 t_exec[i]->add_param((memaddr)length);
60aa3f241b10 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
38 t_exec[i]->add_param((memaddr)(13*(i+1)));
481
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
39 t_exec[i]->set_cpu(SPE_ANY);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
40
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
41 if (depend_flg)
481
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
42 t_print->wait_for(t_exec[i]);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
43 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
44
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
45 // add Active Queue
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
46 t_print->spawn();
481
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
47
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
48 for (int i = 0; i < 2; i++) {
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
49 t_exec[i]->spawn();
4896dffad67c Double linked list modification done (tested on Mac OS X)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
50 }
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
51 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
52
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
53 int
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
54 init(int argc, char **argv)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
55 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
56 for (int i = 1; argv[i]; ++i) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
57 if (strcmp(argv[i], "-nodepend") == 0) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
58 depend_flg = 0;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
59 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
60 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
61
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
62 return 0;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
63 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
64
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
65 int
400
00fe05184a02 Fix examples.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
66 TMmain(TaskManager *manager, int argc, char *argv[])
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
67 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
68 if (init(argc, argv) < 0) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
69 return -1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
70 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
71
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
72 task_init();
400
00fe05184a02 Fix examples.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
73 run_start(manager);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
74
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
75 return 0;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
76 }