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 }