annotate example/many_task/main.cc @ 1853:f800f61a0311 draft

to prevent overrun +1 alloc in many_task
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 21 Dec 2013 19:56:58 +0900
parents 0dd39c19dbb2
children c21bd32e20b9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
1 #include <stdio.h>
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
2 #include <string.h>
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
3 #include <stdlib.h>
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
4 #include <sys/time.h>
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
5 #include "TaskManager.h"
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
6 #include "SchedTask.h"
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
7
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
8 #include "Func.h"
220
gongo@localhost.localdomain
parents: 217
diff changeset
9 #include "sort.h"
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
10
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
11 extern void task_init();
1779
0dd39c19dbb2 minor change
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 1771
diff changeset
12 #ifdef GPU
1738
893353c014f5 run sort by ANY_ANY
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 1555
diff changeset
13 extern void gpu_task_init();
1779
0dd39c19dbb2 minor change
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 1771
diff changeset
14 #endif
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
15 extern int get_split_num(int len, int num);
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
16
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
17
220
gongo@localhost.localdomain
parents: 217
diff changeset
18 // sort.cc
gongo@localhost.localdomain
parents: 217
diff changeset
19 extern int data_length;
gongo@localhost.localdomain
parents: 217
diff changeset
20 extern DataPtr data;
935
11b19708e613 -a option for sort
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 934
diff changeset
21 extern int all;
11b19708e613 -a option for sort
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 934
diff changeset
22 int all = 0;
220
gongo@localhost.localdomain
parents: 217
diff changeset
23
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
24 static int sort_task = SortSimple;
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
25
220
gongo@localhost.localdomain
parents: 217
diff changeset
26 // 計測用
gongo@localhost.localdomain
parents: 217
diff changeset
27 static double st_time;
gongo@localhost.localdomain
parents: 217
diff changeset
28 static double ed_time;
gongo@localhost.localdomain
parents: 217
diff changeset
29
1771
8bf0a27f5dff fix missing task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1738
diff changeset
30 static long length = 1200;
1519
9a5f87f4b60f add spe_cpu for gpu
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1516
diff changeset
31 CPU_TYPE spe_cpu = SPE_ANY;
1552
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
32 int use_task_array=0;
220
gongo@localhost.localdomain
parents: 217
diff changeset
33 // prototype
400
984e7890db0c Fix examples.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 256
diff changeset
34 void TMend(TaskManager *);
220
gongo@localhost.localdomain
parents: 217
diff changeset
35
gongo@localhost.localdomain
parents: 217
diff changeset
36 static double
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
37 getTime()
220
gongo@localhost.localdomain
parents: 217
diff changeset
38 {
gongo@localhost.localdomain
parents: 217
diff changeset
39 struct timeval tv;
gongo@localhost.localdomain
parents: 217
diff changeset
40 gettimeofday(&tv, NULL);
gongo@localhost.localdomain
parents: 217
diff changeset
41 return tv.tv_sec + (double)tv.tv_usec*1e-6;
gongo@localhost.localdomain
parents: 217
diff changeset
42 }
1514
99ea7b932470 create OpenCL test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1508
diff changeset
43
256
2c775d229cc6 fix examples
tkaito@localhost.localdomain
parents: 230
diff changeset
44 const char *usr_help_str = "Usage: ./sort [option]\n \
217
gongo@localhost.localdomain
parents: 109
diff changeset
45 options\n\
gongo@localhost.localdomain
parents: 109
diff changeset
46 -cpu Number of SPE used (default 1)\n\
gongo@localhost.localdomain
parents: 109
diff changeset
47 -l, --length Sorted number of data (default 1200)\n\
gongo@localhost.localdomain
parents: 109
diff changeset
48 -h, --help Print this message";
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
49
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
50 int
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
51 init(int argc, char **argv)
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
52 {
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
53 for (int i = 1; argv[i]; ++i) {
217
gongo@localhost.localdomain
parents: 109
diff changeset
54 if (strcmp(argv[i], "--length") == 0 || strcmp(argv[i], "-l") == 0) {
1771
8bf0a27f5dff fix missing task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1738
diff changeset
55 length = (int)atoi(argv[++i]);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
56 }
935
11b19708e613 -a option for sort
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 934
diff changeset
57 if (strcmp(argv[i], "-a") == 0 ) {
11b19708e613 -a option for sort
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 934
diff changeset
58 all = 1;
11b19708e613 -a option for sort
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 934
diff changeset
59 }
1519
9a5f87f4b60f add spe_cpu for gpu
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1516
diff changeset
60 if (strcmp(argv[i], "-g") == 0 ) {
9a5f87f4b60f add spe_cpu for gpu
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1516
diff changeset
61 spe_cpu = GPU_0;
9a5f87f4b60f add spe_cpu for gpu
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1516
diff changeset
62 }
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
63 if (strcmp(argv[i], "-c") == 0 ) {
1508
0e1318e7caed create sort test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1506
diff changeset
64 sort_task = SortCompat;
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
65 }
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
66 if (strcmp(argv[i], "-s") == 0 ) {
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
67 sort_task = SortSimple;
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
68 }
1541
99c9ed2932a0 change task_init WordCount example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1530
diff changeset
69 if (strcmp(argv[i], "-ta") == 0 ) {
1552
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
70 use_task_array = 1;
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
71
1541
99c9ed2932a0 change task_init WordCount example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1530
diff changeset
72 }
1738
893353c014f5 run sort by ANY_ANY
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 1555
diff changeset
73 if (strcmp(argv[i], "-any") == 0 ) {
893353c014f5 run sort by ANY_ANY
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 1555
diff changeset
74 spe_cpu = ANY_ANY;
893353c014f5 run sort by ANY_ANY
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 1555
diff changeset
75 }
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
76 }
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
77
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
78 return 0;
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
79 }
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
80
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
81 Sort sorter;
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
82
1508
0e1318e7caed create sort test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1506
diff changeset
83 static void
1515
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
84 show_data(void)
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
85 {
1555
096412ad80fb add opencl example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1553
diff changeset
86 /*
1515
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
87 puts("-----------------------------------------------");
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
88 for(int i = 0; i < sorter.data_length; i++) {
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
89 printf("data[%02d].index = %d\n", i, sorter.data[i].index);
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
90 }
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
91 puts("-----------------------------------------------");
1530
c7f0e6eb1d50 add comment
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1519
diff changeset
92 */
1515
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
93 }
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
94
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
95 static void
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
96 check_data()
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
97 {
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
98 for(int i=0; i< sorter.data_length-1;i++) {
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
99 if (sorter.data[i].index>sorter.data[i+1].index) {
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
100 printf("Data are not sorted at %d. %d > %d \n",i, sorter.data[i].index,sorter.data[i+1].index);
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
101 return;
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
102 }
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
103 }
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
104 printf("Data are sorted\n");
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
105 }
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
106
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
107
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
108 static void
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
109 sort_init(SchedTask *manager, void *a, void *b)
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
110 {
1079
7823233584da single cpu run on Mac OS X
one@zeus.cr.ie.u-ryukyu.ac.jp
parents: 945
diff changeset
111 sorter.cpuNum = (long)a;
7823233584da single cpu run on Mac OS X
one@zeus.cr.ie.u-ryukyu.ac.jp
parents: 945
diff changeset
112 long length = (long)b;
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
113
1853
f800f61a0311 to prevent overrun +1 alloc in many_task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1779
diff changeset
114 sorter.data = (DataPtr)manager->allocate(sizeof(Data)*(length+1));
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
115 sorter.data_length = length;
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
116
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
117 sorter.split_num = get_split_num(sorter.data_length, sorter.cpuNum); // data の分割数
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
118 int half_num = sorter.split_num-1;
1552
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
119 if (use_task_array==1) {
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
120 sorter.fsort_task = (Task**)manager->allocate(sizeof(Task*)*sorter.split_num);
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
121 sorter.bsort_task = (Task**)manager->allocate(sizeof(Task*)*half_num);
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
122 } else {
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
123 sorter.fsort = (HTaskPtr*)manager->allocate(sizeof(Task*)*sorter.split_num);
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
124 sorter.bsort = (HTaskPtr*)manager->allocate(sizeof(Task*)*half_num);
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
125 }
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
126 if (use_task_array==1) {
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
127 memset((void*)sorter.bsort_task,0, sizeof(HTaskPtr)*half_num);
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
128 } else {
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
129 memset((void*)sorter.bsort,0, sizeof(HTaskPtr)*half_num);
40a554d45fc6 select task array or task list exec option
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1544
diff changeset
130 }
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
131 for (int i = 0; i < length; i++) {
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
132 sorter.data[i].index = manager->get_random()%10000;
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
133 sorter.data[i].ptr = i;
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
134 }
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
135
1515
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
136 // show_data();
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
137 HTaskPtr restart = manager->create_task(sort_task,0,0,0,0);
1515
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
138 // default ではSortSimpleがsetされている。SortSimpleはsort.ccに
b3644b73d2cf add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1514
diff changeset
139
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
140 restart->set_param(0,(memaddr)&sorter);
1514
99ea7b932470 create OpenCL test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1508
diff changeset
141 // set flip flag
945
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
142 restart->spawn();
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
143 }
9ed1c4a877ca sort example fix ( simple task accepts one param and more compatible with old task)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 935
diff changeset
144
220
gongo@localhost.localdomain
parents: 217
diff changeset
145 unsigned int ts, te;
gongo@localhost.localdomain
parents: 217
diff changeset
146
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
147 int
400
984e7890db0c Fix examples.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 256
diff changeset
148 TMmain(TaskManager *manager, int argc, char *argv[])
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
149 {
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
150 if (init(argc, argv) < 0) {
1508
0e1318e7caed create sort test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1506
diff changeset
151 return -1;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
152 }
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
153
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
154 task_init();
1779
0dd39c19dbb2 minor change
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 1771
diff changeset
155 #ifdef GPU
1738
893353c014f5 run sort by ANY_ANY
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 1555
diff changeset
156 gpu_task_init();
1779
0dd39c19dbb2 minor change
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 1771
diff changeset
157 #endif
1771
8bf0a27f5dff fix missing task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1738
diff changeset
158 long cpu = manager->get_cpuNum();
1508
0e1318e7caed create sort test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1506
diff changeset
159 // in case of -cpu 0
674
07351a5a51c9 fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
160 if (cpu==0) cpu = 1;
932
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 675
diff changeset
161 if (1) {
1508
0e1318e7caed create sort test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1506
diff changeset
162 HTask *dummy = manager->create_task(Dummy);
0e1318e7caed create sort test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1506
diff changeset
163 dummy->set_post(sort_init, (void*)cpu, (void*)length);
0e1318e7caed create sort test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1506
diff changeset
164 dummy->spawn();
932
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 675
diff changeset
165 } else {
1508
0e1318e7caed create sort test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1506
diff changeset
166 sort_init(manager->get_schedTask(),(void*)cpu, (void*)length);
932
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 675
diff changeset
167 }
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
168
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
169 st_time = getTime();
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
170
227
e7faaf516be1 add sort
gongo@localhost.localdomain
parents: 220
diff changeset
171 // 全ての Task が終了した後に実行する関数をセット
220
gongo@localhost.localdomain
parents: 217
diff changeset
172 manager->set_TMend(TMend);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
173
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
174 return 0;
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
175 }
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
176
220
gongo@localhost.localdomain
parents: 217
diff changeset
177 void
400
984e7890db0c Fix examples.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 256
diff changeset
178 TMend(TaskManager *manager)
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
179 {
220
gongo@localhost.localdomain
parents: 217
diff changeset
180 ed_time = getTime();
1516
e544f9747169 fix gpu kernel source
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 1515
diff changeset
181 show_data();
934
83b64b7a51bd sort fix ( not working now )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 932
diff changeset
182 check_data();
220
gongo@localhost.localdomain
parents: 217
diff changeset
183 printf("Time: %0.6f\n",ed_time-st_time);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
184 }
674
07351a5a51c9 fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
185
07351a5a51c9 fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
186 /* end */