我无法调试我的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,但当然我觉得问题是它没有调试,无论如何。
是什么给出了?
答案 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
当然代码示例会很好。 在不同的机器上试用。