我是OpenCL编程的初学者。当我尝试在2017年Visual Studio中调试OpenCL内核时,我的问题就会发生。调试器不要停止内核代码中的断点,而是在主函数中工作正常。我已经安装了Intel System Studio2019。
我以这种方式构建上下文:
cl_int platform_id = 0;
cl_int device_id = 0;
cl_context_properties contextProps[3] = {
CL_CONTEXT_PLATFORM,
(cl_context_properties)(platformList[platform_id])(),
0
};
cl::Context context(CL_DEVICE_TYPE_GPU, contextProps, NULL, NULL, &errorState);
我尝试使用调试选项构建程序:
cl::Program program(context, source);
errorState = program.build(devices, "-g -s C:/OpenCL_Intel/OpenCL_Intel/multiply.cl");
之后,我为内核函数设置参数并运行内核:
cl::Kernel kernel(program, "multiply", &errorState);
kernel.setArg(0, inA);
kernel.setArg(1, inB);
kernel.setArg(2, outCL);
kernel.setArg(3, arraySize);
cl::Event event;
errorState = queue.enqueueNDRangeKernel(kernel, cl::NullRange,
cl::NDRange(arraySize), cl::NDRange(1), NULL, &event);
checkErr(errorState, "ComamndQueue::enqueueNDRangeKernel()");
event.wait();
errorState = queue.enqueueReadBuffer(outCL, CL_TRUE, 0, sizeof(int) * arraySize, out);
checkErr(errorState, "ComamndQueue::enqueueReadBuffer()");
我的OpenCL项目中的调试选项我还在代码构建器中设置了一些选项:
- API调试器 ->启用OPENCL工具API调试器 -> true
- GPU内核调试器 ->启用调试 -> true
预先感谢您
由于Windows限制,GPU上的OPENCL内核需要系统的特定主机/目标配置。您可以在Intel网站-https://software.intel.com/en-us/openclsdk-devguide-debugging-opencl-kernels-kernels-on-gpu上找到一个逐步的教程。
还请确保您拥有OpenCL运行时(视频驱动程序)的最新版本,以及OpenCL SDK的最新版本。