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;