Mercurial > hg > Members > kono > Cerium
annotate example/many_task/main.cc @ 935:e54842e4d97b
-a option for sort
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 31 Jul 2010 03:13:24 +0900 |
parents | da657af64afd |
children | a9c7784e5dae |
rev | line source |
---|---|
109 | 1 #include <stdio.h> |
2 #include <string.h> | |
3 #include <stdlib.h> | |
4 #include <sys/time.h> | |
5 #include "TaskManager.h" | |
6 #include "Func.h" | |
220 | 7 #include "sort.h" |
109 | 8 |
9 extern void task_init(void); | |
10 | |
220 | 11 // sort.cc |
12 extern int data_length; | |
13 extern DataPtr data; | |
935 | 14 extern int all; |
15 int all = 0; | |
220 | 16 |
17 // 計測用 | |
18 static double st_time; | |
19 static double ed_time; | |
20 | |
21 static int length = 1200; | |
22 | |
23 // prototype | |
400 | 24 void TMend(TaskManager *); |
220 | 25 |
26 static double | |
27 getTime(void) | |
28 { | |
29 struct timeval tv; | |
30 gettimeofday(&tv, NULL); | |
31 return tv.tv_sec + (double)tv.tv_usec*1e-6; | |
32 } | |
256 | 33 /* |
220 | 34 static void |
35 show_data(void) | |
36 { | |
37 puts("-----------------------------------------------"); | |
38 for(int i = 0; i < data_length; i++) { | |
39 printf("data[%02d].index = %d\n", i, data[i].index); | |
40 } | |
41 puts("-----------------------------------------------"); | |
42 } | |
256 | 43 */ |
109 | 44 |
256 | 45 const char *usr_help_str = "Usage: ./sort [option]\n \ |
217 | 46 options\n\ |
47 -cpu Number of SPE used (default 1)\n\ | |
48 -l, --length Sorted number of data (default 1200)\n\ | |
49 -h, --help Print this message"; | |
109 | 50 |
51 int | |
52 init(int argc, char **argv) | |
53 { | |
54 for (int i = 1; argv[i]; ++i) { | |
217 | 55 if (strcmp(argv[i], "--length") == 0 || strcmp(argv[i], "-l") == 0) { |
220 | 56 length = atoi(argv[++i]); |
109 | 57 } |
935 | 58 if (strcmp(argv[i], "-a") == 0 ) { |
59 all = 1; | |
60 } | |
256 | 61 |
109 | 62 } |
63 | |
64 return 0; | |
65 } | |
66 | |
220 | 67 unsigned int ts, te; |
68 | |
109 | 69 int |
400 | 70 TMmain(TaskManager *manager, int argc, char *argv[]) |
109 | 71 { |
72 if (init(argc, argv) < 0) { | |
73 return -1; | |
74 } | |
75 | |
76 task_init(); | |
77 | |
674
bde5f13adf10
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
400
diff
changeset
|
78 int cpu = manager->get_cpuNum(); |
675 | 79 |
80 // in case of -cpu 0 | |
674
bde5f13adf10
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
400
diff
changeset
|
81 if (cpu==0) cpu = 1; |
932
f4d7cf77ec3d
sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
675
diff
changeset
|
82 if (1) { |
f4d7cf77ec3d
sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
675
diff
changeset
|
83 HTask *dummy = manager->create_task(Dummy); |
f4d7cf77ec3d
sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
675
diff
changeset
|
84 dummy->set_post(sort_init, (void*)cpu, (void*)length); |
f4d7cf77ec3d
sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
675
diff
changeset
|
85 dummy->spawn(); |
f4d7cf77ec3d
sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
675
diff
changeset
|
86 } else { |
f4d7cf77ec3d
sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
675
diff
changeset
|
87 sort_init(manager->get_schedTask(),(void*)cpu, (void*)length); |
f4d7cf77ec3d
sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
675
diff
changeset
|
88 } |
109 | 89 |
90 st_time = getTime(); | |
91 | |
227 | 92 // 全ての Task が終了した後に実行する関数をセット |
220 | 93 manager->set_TMend(TMend); |
109 | 94 |
95 return 0; | |
96 } | |
97 | |
934
da657af64afd
sort fix ( not working now )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
932
diff
changeset
|
98 extern void check_data(); |
da657af64afd
sort fix ( not working now )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
932
diff
changeset
|
99 |
220 | 100 void |
400 | 101 TMend(TaskManager *manager) |
109 | 102 { |
220 | 103 ed_time = getTime(); |
230 | 104 //show_data(); |
934
da657af64afd
sort fix ( not working now )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
932
diff
changeset
|
105 check_data(); |
220 | 106 printf("Time: %0.6f\n",ed_time-st_time); |
109 | 107 } |
674
bde5f13adf10
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
400
diff
changeset
|
108 |
bde5f13adf10
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
400
diff
changeset
|
109 /* end */ |