Mercurial > hg > Members > kono > Cerium
comparison example/dependency_task/main.cc @ 109:5c194c71eca8
Cerium cvs version
author | gongo@gendarme.local |
---|---|
date | Wed, 12 Nov 2008 17:39:33 +0900 |
parents | |
children | a09588a03ea5 |
comparison
equal
deleted
inserted
replaced
108:6f3b3dd3c095 | 109:5c194c71eca8 |
---|---|
1 #include <stdio.h> | |
2 #include <stdlib.h> | |
3 #include <string.h> | |
4 #include "TaskManager.h" | |
5 #include "Func.h" | |
6 | |
7 extern void task_init(void); | |
8 | |
9 int *idata; | |
10 int length = DATA_NUM; | |
11 int depend_flg = 1; | |
12 | |
13 char *help_str = "Usage: ./dependency [-cpu spe_num] [-nodepend]\n\ | |
14 -nodepend No Depenendcy"; | |
15 | |
16 void | |
17 run_start(void) | |
18 { | |
19 HTaskPtr t_exec; | |
20 HTaskPtr t_print; | |
21 | |
22 idata = (int*)manager->malloc(sizeof(int)*length*2); | |
23 for (int i = 0; i < length*2; i++) { | |
24 idata[i] = 0; | |
25 } | |
26 | |
27 // exec1,2 が計算した配列を見る | |
28 t_print = manager->create_task(TASK_PRINT); | |
29 t_print->add_inData(idata, sizeof(int)*length*2); | |
30 t_print->add_param(length*2); | |
31 | |
32 // idata を二つに分けて計算する | |
33 for (int i = 0; i < 2; i++) { | |
34 t_exec = manager->create_task(TASK_EXEC); | |
35 t_exec->add_inData(&idata[length*i], sizeof(int)*length); | |
36 t_exec->add_outData(&idata[length*i], sizeof(int)*length); | |
37 t_exec->add_param(length); | |
38 t_exec->add_param(13*(i+1)); | |
39 t_exec->set_cpu(SPE_ANY); | |
40 | |
41 if (depend_flg) | |
42 t_print->wait_for(t_exec); | |
43 | |
44 t_exec->spawn(); | |
45 } | |
46 | |
47 // add Active Queue | |
48 t_print->spawn(); | |
49 } | |
50 | |
51 int | |
52 init(int argc, char **argv) | |
53 { | |
54 for (int i = 1; argv[i]; ++i) { | |
55 if (strcmp(argv[i], "-nodepend") == 0) { | |
56 depend_flg = 0; | |
57 } | |
58 if (strcmp(argv[i], "--help") == 0) { | |
59 printf("%s\n", help_str); | |
60 return -1; | |
61 } | |
62 } | |
63 | |
64 return 0; | |
65 } | |
66 | |
67 int | |
68 cerium_main(int argc, char *argv[]) | |
69 { | |
70 if (init(argc, argv) < 0) { | |
71 return -1; | |
72 } | |
73 | |
74 task_init(); | |
75 run_start(); | |
76 | |
77 return 0; | |
78 } |