使用英特尔 SDK 调试 OpenCL visual studio 不要在断点处停止
Debugging OpenCL with Intel SDK for visual studio dont stop at breakpoints
我想通过 Intel SDK 和 visual studio 2013 调试我的 OpenCL 代码,但调试器不会在断点处停止。
我启用了 OpenCL 内核调试并将构建选项设置为 -g -s 并在 opencl 代码中添加了一个断点(我也不使用任何偏移量)。
我也试过其他地方提到的所有巫术,包括。
- 在创建上下文时(/后面)设置断点。*
- 同时只使用Visual Studio个实例
- 在开始调试前吐了三遍左肩
- ...
但没有任何效果。有什么建议吗?
*这导致以下情况,在到达断点之前,OCL 断点被标记为不可访问,之后它们显示为可通过文件和代码行访问。
您使用哪个设备进行调试?
仅允许使用 intel CPU 使用 intel SDK 进行调试。
英特尔显卡无法工作。
检查以下内容:
你使用英特尔编译器而不是 MSVC 编译器吗?
右键单击项目 -> 转换为 opencl 项目/使用 intel c++ 编译器
编译器设置:
Code_builder 菜单 -> opencl 调试器 -> 选项
检查"enable opencl kernel debugging"
指定要调试的工作项(0,0,0 很好,如果只使用全局 workgrp 大小而不使用本地,则为第一个线程)
tab api 调试器:选中启用 opencl api 调试器
在 -g -s 之后,您必须将路径添加到内核,如:
options = " -g -s E:\prog\clproj\Clproj\kernel.cl";
你是这样把选项char*交给clBuildProgram的吗?
clBuildProgram(program, 0, NULL, options, NULL, NULL);
确保您使用的是英特尔 opencl 库,而不是任何其他 opencl 库。
有关 Vstudio 的正确设置,请查看此处:
我在尝试使用混合平台(C# 和 C|C++)调试 OpenCL 内核时遇到了同样的问题。当我的测试项目是调用本机 C|C++ 库(OpenCL 代码驻留在其中)的 C# 项目时,英特尔 OpenCL 调试器被禁用。我无法让它适用于混合平台。
解决方法是摆脱 C# 项目并仅使用本机代码。对于单元测试是可以接受的,但可以想象OpenCL代码应该集成在一个主要在C#下开发的系统中。到目前为止,我找不到任何在此类系统上调试 OpenCL 代码的有效解决方案。
我对同一问题的解决方案 - 尽管我已正确配置上述贡献中提到的所有内容:
我使用 Intel (Installed\Templates\Visual C++\OpenCL) 的 "CodeBuilder Project for Windows" 模板创建了一个新项目,并将我的内容复制到这个新项目中。
在此之后断点被击中。
我想通过 Intel SDK 和 visual studio 2013 调试我的 OpenCL 代码,但调试器不会在断点处停止。 我启用了 OpenCL 内核调试并将构建选项设置为 -g -s 并在 opencl 代码中添加了一个断点(我也不使用任何偏移量)。
我也试过其他地方提到的所有巫术,包括。
- 在创建上下文时(/后面)设置断点。*
- 同时只使用Visual Studio个实例
- 在开始调试前吐了三遍左肩
- ...
但没有任何效果。有什么建议吗?
*这导致以下情况,在到达断点之前,OCL 断点被标记为不可访问,之后它们显示为可通过文件和代码行访问。
您使用哪个设备进行调试? 仅允许使用 intel CPU 使用 intel SDK 进行调试。 英特尔显卡无法工作。
检查以下内容: 你使用英特尔编译器而不是 MSVC 编译器吗? 右键单击项目 -> 转换为 opencl 项目/使用 intel c++ 编译器
编译器设置: Code_builder 菜单 -> opencl 调试器 -> 选项
检查"enable opencl kernel debugging" 指定要调试的工作项(0,0,0 很好,如果只使用全局 workgrp 大小而不使用本地,则为第一个线程)
tab api 调试器:选中启用 opencl api 调试器
在 -g -s 之后,您必须将路径添加到内核,如:
options = " -g -s E:\prog\clproj\Clproj\kernel.cl";
你是这样把选项char*交给clBuildProgram的吗?
clBuildProgram(program, 0, NULL, options, NULL, NULL);
确保您使用的是英特尔 opencl 库,而不是任何其他 opencl 库。
有关 Vstudio 的正确设置,请查看此处:
我在尝试使用混合平台(C# 和 C|C++)调试 OpenCL 内核时遇到了同样的问题。当我的测试项目是调用本机 C|C++ 库(OpenCL 代码驻留在其中)的 C# 项目时,英特尔 OpenCL 调试器被禁用。我无法让它适用于混合平台。
解决方法是摆脱 C# 项目并仅使用本机代码。对于单元测试是可以接受的,但可以想象OpenCL代码应该集成在一个主要在C#下开发的系统中。到目前为止,我找不到任何在此类系统上调试 OpenCL 代码的有效解决方案。
我对同一问题的解决方案 - 尽管我已正确配置上述贡献中提到的所有内容:
我使用 Intel (Installed\Templates\Visual C++\OpenCL) 的 "CodeBuilder Project for Windows" 模板创建了一个新项目,并将我的内容复制到这个新项目中。
在此之后断点被击中。