clGetPlatformIDs(1, &platformID, &numPlatforms); clGetDeviceIDs(platformID, CL_DEVICE_TYPE_DEFAULT, 1, &deviceID, &numDevices); context = clCreateContext(NULL, 1, &deviceID, NULL, NULL, NULL); commandQueue = clCreateCommandQueue(context, deviceID, 0, NULL); memOP = clCreateBuffer(context, CL_MEM_READ_ONLY, MAX_OP * sizeof(Coord), NULL, NULL); memSegment = clCreateBuffer(context, CL_MEM_READ_ONLY, MAX_SEGMENTEN * sizeof(Coord), NULL, NULL); memAfstanden = clCreateBuffer(context, CL_MEM_WRITE_ONLY, MAX_AFSTANDEN * sizeof(double), NULL, NULL); clEnqueueWriteBuffer(commandQueue, memOP, CL_TRUE, 0, MAX_OP * sizeof(Coord), OP, 0, NULL, NULL); clEnqueueWriteBuffer(commandQueue, memSegment, CL_TRUE, 0, MAX_SEGMENTEN * sizeof(Coord), segmentArray, 0, NULL, NULL); clCreateProgramWithSource(context, 1, (const char **)&kernelSource, (const size_t *)&kernelLength, NULL); clBuildProgram(program, 1, &deviceID, NULL, NULL, NULL); kernel = clCreateKernel(program, "afstand", NULL); clSetKernelArg(kernel, 0, sizeof(cl_mem), (void *)&memOP); clSetKernelArg(kernel, 1, sizeof(cl_mem), (void *)&memSegment); clSetKernelArg(kernel, 2, sizeof(cl_mem), (void *)&memAfstanden); clSetKernelArg(kernel, 3, sizeof(int), FLIGHTALTITUDE); clEnqueueNDRangeKernel(commandQueue, kernel, 1, NULL, MAX_AFSTANDEN, 1, 0, NULL, NULL); clEnqueueReadBuffer(commandQueue, memAfstanden, CL_TRUE, 0, MAX_AFSTANDEN * sizeof(double), afstanden, 0, NULL, NULL); fopen_s(&optr, "C:\\Cio\\IO.txt", "wt"); for(i = 0; i < MAX_OP; i++) { for(z = 0; z < MAX_SEGMENTEN; z++) { fprintf(optr, "OP %d ligt %3.2lfkm van segment %d af\n", i, afstanden[MAX_SEGMENTEN*i + z], z); } } fclose(optr); clFlush(commandQueue); clFinish(commandQueue); clReleaseKernel(kernel); clReleaseProgram(program); clReleaseMemObject(memOP); clReleaseMemObject(memSegment); clReleaseMemObject(memAfstanden); clReleaseCommandQueue(commandQueue); clReleaseContext(context);