无法调试AMP代码

时间:2017-01-09 00:31:03

标签: c++-amp

我无法调试我的AMP代码。

我有: Visual Studio 2015, Windows 10 Home 64bit, GeForce 660 Ti, DirectX 12

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

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

我也试过将默认加速器专门设置为direct3d_ref,但当然我觉得问题是它没有调试,无论如何。

是什么给出了?

3 个答案:

答案 0 :(得分: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是由微软制造的,但Windows 10是由微软制造的,所以人们不会指望它们是兼容的。 :)

在我回到Windows 8.1之前,我想确切地知道......

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

你的lambda函数是c ++ / amp限制函数吗?

应该如此,否则GPU调试无权进入c ++受限代码部分。

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

"断点不会被击中......"

了解更多信息:

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

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