@@ -17,27 +17,17 @@ int main(void) {
1717 " out[get_global_id(0)]++;\n"
1818 "}\n" ;
1919 cl_command_queue command_queue ;
20- cl_context context ;
21- cl_device_id device ;
22- cl_int input [] = {1 , 2 }, ret ;
23- const size_t global_work_size = sizeof (input ) / sizeof (cl_int );
24- cl_kernel kernel ;
20+ cl_int input [] = {1 , 2 };
2521 cl_mem buffer ;
26- cl_platform_id platform ;
27- cl_program program ;
22+ const size_t global_work_size = sizeof ( input ) / sizeof ( cl_int ) ;
23+ Common common ;
2824
2925 /* Run kernel. */
30- clGetPlatformIDs (1 , & platform , NULL );
31- clGetDeviceIDs (platform , CL_DEVICE_TYPE_ALL , 1 , & device , NULL );
32- context = clCreateContext (NULL , 1 , & device , NULL , NULL , NULL );
33- buffer = clCreateBuffer (context , CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR , sizeof (input ), & input , NULL );
34- program = clCreateProgramWithSource (context , 1 , & source , NULL , NULL );
35- ret = clBuildProgram (program , 1 , & device , "" , NULL , NULL );
36- common_check_build (ret , device , program );
37- kernel = clCreateKernel (program , "main" , NULL );
38- clSetKernelArg (kernel , 0 , sizeof (cl_mem ), & buffer );
39- command_queue = clCreateCommandQueue (context , device , 0 , NULL );
40- clEnqueueNDRangeKernel (command_queue , kernel , 1 , NULL , & global_work_size , NULL , 0 , NULL , NULL );
26+ common_init (& common , source );
27+ buffer = clCreateBuffer (common .context , CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR , sizeof (input ), & input , NULL );
28+ clSetKernelArg (common .kernel , 0 , sizeof (cl_mem ), & buffer );
29+ command_queue = clCreateCommandQueue (common .context , common .device , 0 , NULL );
30+ clEnqueueNDRangeKernel (command_queue , common .kernel , 1 , NULL , & global_work_size , NULL , 0 , NULL , NULL );
4131 clFlush (command_queue );
4232 clFinish (command_queue );
4333 clEnqueueReadBuffer (command_queue , buffer , CL_TRUE , 0 , sizeof (input ), & input , 0 , NULL , NULL );
@@ -47,10 +37,8 @@ int main(void) {
4737 assert (input [1 ] == 3 );
4838
4939 /* Cleanup. */
50- clReleaseKernel (kernel );
51- clReleaseProgram (program );
52- clReleaseCommandQueue (command_queue );
53- clReleaseContext (context );
5440 clReleaseMemObject (buffer );
41+ clReleaseCommandQueue (command_queue );
42+ common_deinit (& common );
5543 return EXIT_SUCCESS ;
5644}
0 commit comments