【问题标题】:Can't debug AMP code无法调试 AMP 代码
【发布时间】:2017-01-09 00:31:02
【问题描述】:

我无法调试我的 AMP 代码。

我有: 视觉工作室 2015, Windows 10 家庭 64 位, GeForce 660 钛, DirectX 12

在我的 C++ 项目中,我将“调试器类型”设置为“仅 GPU (C++ AMP)” “调试加速器类型”是“GPU - 软件模拟器”

当我尝试在我的 lambda 中放置断点时,我得到“断点不会被命中...”图标。此外,当我有获取各种加速器信息的代码时,它们都有 'is_debug=false '--包括'direct3d/ref'加速器和GeForce 660Ti加速器。

我也试过专门将默认加速器设置为direct3d_ref,但我当然认为问题在于它没有调试。

什么给了?

【问题讨论】:

  • 你确定 lambda 被安排在 GPU 上,你能提供最小的例子吗?

标签: c++-amp


【解决方案1】:

我也有同样的情况。 我发现的一个提示:https://msdn.microsoft.com/en-us/library/hh265136.aspx

"支持的平台 Windows 7、Windows 8、Windows Server 2008 R2 和 Windows Server 2012 支持调试。要在软件模拟器上进行调试,需要 Windows 8 或 Windows Server 2012。要在硬件上进行调试,您必须安装显卡驱动程序。并非所有硬件供应商都实现了所有调试器功能。有关限制,请参阅供应商文档。”

据此,我推测 Windows 10 可能不支持 AMP 调试。或者文档可能已过时。

有道理:AMP 是由 Microsoft 制造的,但 Windows 10 是由 Microsoft 制造的,因此人们不会期望它们兼容。 :)

在我回到 Windows 8.1 之前,我想确定一下......

【讨论】:

  • 我有 Windows 10 周年更新。 VS 2015 U3 和 GPU 调试工作正常。
  • 我在 Windows 10 上,按照docs.microsoft.com/en-us/cpp/parallel/amp/… 中描述的确切步骤无法调试 GPU 代码。在 VS 2013 和 VS 2017 上都试过了。
【解决方案2】:

对此的另一个提示:尝试调试时,我看到一条调试输出消息说"Please use the /DEBUG:FULL linker switch to hit breakpoints in C++ AMP code."

更改链接器设置后,调试对我有用。

【讨论】:

    【解决方案3】:

    您的 lambda 函数是 c++/amp 受限函数吗?

    应该是这样,否则GPU调试无权进入c++受限代码段。

    也许这就是你得到的原因:

    “断点不会被命中...”

    更多信息请阅读:

    https://msdn.microsoft.com/en-us/library/hh873133.aspx

    当然,一个代码示例会很好。 在不同的机器上试用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-04
      • 2015-12-16
      • 2018-09-26
      • 2021-04-05
      • 2018-08-28
      • 1970-01-01
      • 2021-10-31
      • 2021-05-15
      相关资源
      最近更新 更多