【问题标题】:Debugging OpenCL with Intel SDK for visual studio dont stop at breakpoints使用 Intel SDK for Visual Studio 调试 OpenCL 不会在断点处停止
【发布时间】:2018-01-21 09:13:43
【问题描述】:

我想通过 Intel SDK 和 Visual Studio 2013 调试我的 OpenCL 代码,但调试器不会在断点处停止。 我启用了 OpenCL 内核调试并将构建选项设置为 -g -s 并在 opencl 代码中添加了一个断点(我也没有使用任何偏移量)。

我也尝试过其他地方提到的所有巫术,包括。

  • 在创建上下文时(/之后)设置断点。*
  • 同时仅使用 Visual Studio 实例
  • 开始调试前在左肩外吐了三遍
  • ...

但没有任何效果。有什么建议吗?

*这导致以下情况,在到达断点之前,OCL 断点被标记为不可到达,之后它们显示为可通过文件和代码行访问。

【问题讨论】:

    标签: debugging visual-studio-2013 opencl


    【解决方案1】:

    您使用哪个设备进行调试? 只允许使用 intel SDK 调试 intel CPU。 英特尔图形无法正常工作。

    检查以下内容: 您使用英特尔编译器而不是 MSVC 编译器吗? 右键项目->转换为opencl项目/使用intel c++编译器

    编译器设置: Code_builder 菜单 -> opencl 调试器 -> 选项

    勾选“启用opencl内核调试” 指定要调试的工作项(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);
    

    确保您使用的是 intel opencl 库,而不是任何其他 opencl 库。

    要正确设置 Vstudio,请看这里:

    intel guide

    【讨论】:

      【解决方案2】:

      我在尝试使用混合平台(C# 和 C|C++)调试 OpenCL 内核时遇到了同样的问题。当我的测试项目是调用本机 C|C++ 库(OpenCL 代码驻留在那里)的 C# 项目时,英特尔 OpenCL 调试器被禁用。我无法让它适用于混合平台。

      解决方法是摆脱 C# 项目并仅使用本机代码。对于单元测试,这是可以接受的,但可以想象 OpenCL 代码应该集成到主要使用 C# 开发的系统中。到目前为止,我找不到任何可行的解决方案来在此类系统上调试 OpenCL 代码。

      【讨论】:

        【解决方案3】:

        我对同一问题的解决方案 - 尽管我已正确配置了上述贡献中提到的所有内容:

        我使用英特尔的“CodeBuilder Project for Windows”模板(Installed\Templates\Visual C++\OpenCL)创建了一个新项目,并将我的内容复制到这个新项目中。

        在此之后,断点被击中。

        【讨论】:

        • 同样的问题,按照每一步,仍然无法正常工作。你解决了吗?
        猜你喜欢
        • 2020-01-01
        • 2019-03-19
        • 2011-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多