我想通过 Intel SDK 和 Visual Studio 2013 调试我的 OpenCL 代码,但调试器不会在断点处停止。 我启用了 OpenCL 内核调试并将构建选项设置为 -g -s 并在 opencl 代码中添加了一个断点(我也不使用任何偏移量)。
我还尝试了其他地方提到的所有巫术,包括。
- 在上下文创建时(/之后)设置断点。*
- 同时仅使用 Visual Studio 实例
- 开始调试前向左肩吐口水三遍
- ...
但没有任何效果。有什么建议吗?
*这会导致以下情况,在到达断点之前,OCL 断点被标记为不可到达,之后它们显示为可通过文件和代码行到达。
最佳答案
您使用哪个设备进行调试? 仅允许使用 intel CPU 进行 intel SDK 调试。 英特尔显卡无法工作。
检查以下内容: 你使用intel编译器而不是MSVC编译器吗? 右键单击项目 -> 转换为 opencl 项目/使用 intel c++ 编译器
编译器设置: Code_builder 菜单 -> opencl 调试器 -> 选项
勾选“启用opencl内核调试” 指定您要调试的工作项(0,0,0 即可,如果您仅使用全局工作组大小而不使用本地工作组大小,则为第一个线程)
tab api 调试器:勾选启用 opencl api 调试器
在 -g -s 之后,您必须添加内核路径,例如:
options = " -g -s E:\\prog\\clproj\\Clproj\\kernel.cl";
您是否像这样将选项 char* 交给了 clBuildProgram?
clBuildProgram(program, 0, NULL, options, NULL, NULL);
确保您使用 intel opencl 库而不是任何其他 opencl 库。
要正确设置 Vstudio,请查看此处:
关于使用适用于 Visual Studio 的英特尔 SDK 调试 OpenCL 不会在断点处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732614/