Mercurial > hg > Members > yutaka > OpenCL
comparison WordCount/main.cc @ 3:1c0c9299c292
get global_work_size
author | Yutaka_Kinjyo |
---|---|
date | Mon, 25 Jul 2011 21:19:42 +0900 |
parents | 1a32564347d5 |
children | 641eef31681e |
comparison
equal
deleted
inserted
replaced
2:1a32564347d5 | 3:1c0c9299c292 |
---|---|
9 #include <OpenCL/opencl.h> | 9 #include <OpenCL/opencl.h> |
10 #include <oclUtils.h> | 10 #include <oclUtils.h> |
11 | 11 |
12 #define OUT_PARAM_NUM 4 | 12 #define OUT_PARAM_NUM 4 |
13 #define PRINT_PARAM_NUM 2 | 13 #define PRINT_PARAM_NUM 2 |
14 #define FLAG_PARAM_NUM 2 | |
15 | 14 |
16 typedef struct { | 15 typedef struct { |
17 caddr_t file_mmap; | 16 caddr_t file_mmap; |
18 off_t size; | 17 off_t size; |
19 } st_mmap_t; | 18 } st_mmap_t; |
20 | 19 |
21 typedef struct { | 20 typedef struct { |
22 int work_num; | |
23 int size; | 21 int size; |
24 int remain_size; | 22 int remain_size; |
25 } param_t; | 23 } param_t; |
26 | 24 |
27 | 25 |
177 // 必要なパラメータのオブジェクト | 175 // 必要なパラメータのオブジェクト |
178 cl_mem param_memobj = clCreateBuffer(context, CL_MEM_READ_ONLY, | 176 cl_mem param_memobj = clCreateBuffer(context, CL_MEM_READ_ONLY, |
179 sizeof(param_t), NULL, &ret); | 177 sizeof(param_t), NULL, &ret); |
180 | 178 |
181 param_t param; | 179 param_t param; |
182 param.work_num = global_work_size; | |
183 param.size = divi_size; | 180 param.size = divi_size; |
184 param.remain_size = remain_size; | 181 param.remain_size = remain_size; |
185 | 182 |
186 | 183 |
187 ret = clEnqueueWriteBuffer(command_queue, param_memobj, | 184 ret = clEnqueueWriteBuffer(command_queue, param_memobj, |
230 | 227 |
231 for (int i = 0; i < global_work_size; i++) { | 228 for (int i = 0; i < global_work_size; i++) { |
232 | 229 |
233 for (int j = 0; j < PRINT_PARAM_NUM; j++) { | 230 for (int j = 0; j < PRINT_PARAM_NUM; j++) { |
234 | 231 |
235 printf("%d ", out_data[i*OUT_PARAM_NUM+j]); | |
236 word_line_num[j] += out_data[i*OUT_PARAM_NUM+j]; | 232 word_line_num[j] += out_data[i*OUT_PARAM_NUM+j]; |
237 | 233 |
238 } | 234 } |
239 | 235 |
236 //flagの判定 | |
240 if ((i != global_work_size-1) && | 237 if ((i != global_work_size-1) && |
241 (out_data[i*OUT_PARAM_NUM+PRINT_PARAM_NUM]) && | 238 (out_data[i*OUT_PARAM_NUM+PRINT_PARAM_NUM+1] == 1) && |
242 (out_data[i*OUT_PARAM_NUM+PRINT_PARAM_NUM+1])) { | 239 (out_data[i*OUT_PARAM_NUM+PRINT_PARAM_NUM+4] == 0)) { |
243 | 240 |
244 word_line_num[0] += 1; | 241 word_line_num[0] += 1; |
245 | 242 |
246 } | 243 } |
247 | |
248 printf("\n"); | |
249 | |
250 } | 244 } |
251 | 245 |
252 printf("%d %d", word_line_num[0], word_line_num[1]); | 246 printf("%d %d", word_line_num[0], word_line_num[1]); |
253 | 247 |
254 clFlush(command_queue); | 248 clFlush(command_queue); |