Mercurial > hg > Members > yutaka > OpenCL
comparison WordCount/main.cc @ 5:ef8efbd04df9 default tip
minor change
author | Yutaka_Kinjyo |
---|---|
date | Thu, 28 Jul 2011 11:10:28 +0900 |
parents | 641eef31681e |
children |
comparison
equal
deleted
inserted
replaced
4:641eef31681e | 5:ef8efbd04df9 |
---|---|
161 * | 161 * |
162 */ | 162 */ |
163 | 163 |
164 // このdivi_size はどうやって決めるよ | 164 // このdivi_size はどうやって決めるよ |
165 int divi_size = 1024; | 165 int divi_size = 1024; |
166 //size_t global_work_size = (st_mmap.size + divi_size - 1) / divi_size; | |
167 size_t global_work_size = st_mmap.size / divi_size; | 166 size_t global_work_size = st_mmap.size / divi_size; |
168 int remain_size = st_mmap.size - global_work_size * divi_size; | 167 int remain_size = st_mmap.size - global_work_size * divi_size; |
169 if (remain_size > 0) { | 168 if (remain_size > 0) { |
170 global_work_size += 1; | 169 global_work_size += 1; |
171 } | 170 } |
217 oclCheckError(ret, CL_SUCCESS); | 216 oclCheckError(ret, CL_SUCCESS); |
218 | 217 |
219 int *out_data = (int*)malloc(out_size); | 218 int *out_data = (int*)malloc(out_size); |
220 | 219 |
221 | 220 |
222 #ifndef BLOKING | 221 cl_event ev; |
223 | 222 |
224 // 演算結果の読み込み | 223 // 演算結果の読み込み |
225 // CL_TRUE で bloking | 224 // CL_FALSE で non-bloking, CL_TURE で bloking |
226 ret = clEnqueueReadBuffer(command_queue, out_memobj, CL_TRUE, 0, | |
227 out_size, out_data, 0, NULL, NULL); | |
228 | |
229 #else | |
230 | |
231 cl_event ev; | |
232 | |
233 // 演算結果の読み込み | |
234 // CL_FALSE で non-bloking | |
235 ret = clEnqueueReadBuffer(command_queue, out_memobj, CL_FALSE, 0, | 225 ret = clEnqueueReadBuffer(command_queue, out_memobj, CL_FALSE, 0, |
236 out_size, out_data, 0, NULL, &ev); | 226 out_size, out_data, 0, NULL, &ev); |
237 | 227 |
238 // event object に関連する処理の完了を wait する | 228 // event object に関連する処理の完了を wait する |
239 // これはeventひとつだけど、listにして、複数 wait できる | 229 // これはeventひとつだけど、listにして、複数 wait できる |
240 clWaitForEvents(1, &ev); | 230 clWaitForEvents(1, &ev); |
241 | 231 |
242 #endif | |
243 | 232 |
244 oclCheckError(ret, CL_SUCCESS); | 233 oclCheckError(ret, CL_SUCCESS); |
245 | 234 |
246 printf("global_work_size %d\n", (int)global_work_size); | 235 printf("global_work_size %d\n", (int)global_work_size); |
247 | 236 |
278 clReleaseMemObject(text_memobj); | 267 clReleaseMemObject(text_memobj); |
279 clReleaseMemObject(param_memobj); | 268 clReleaseMemObject(param_memobj); |
280 clReleaseMemObject(out_memobj); | 269 clReleaseMemObject(out_memobj); |
281 clReleaseCommandQueue(command_queue); | 270 clReleaseCommandQueue(command_queue); |
282 clReleaseContext(context); | 271 clReleaseContext(context); |
272 clReleaseEvent(ev); | |
283 | 273 |
284 free(source_str); | 274 free(source_str); |
285 free(out_data); | 275 free(out_data); |
286 | 276 |
287 return 0; | 277 return 0; |