109
|
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 }
|