2017-01-09 85 views
0

我无法调试我的AMP代码。无法调试AMP代码

我: 的Visual Studio 2015年, 的Windows 10家64位, 的GeForce 660钛, 的DirectX 12

在我的C++项目,我已经设置了 '调试器类型' 为“只GPU(C++ AMP )' '调试加速器类型'是'GPU - Software Emulator'

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

我也试过特别设置默认加速器到direct3d_ref,但是我当然觉得问题在于它没有调试。

什么给?

+0

你确定lambda是在GPU上预定的,你能提供一个最小的例子吗? –

回答

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之前,我想知道肯定....

+0

我有Windows 10周年更新。 VS 2015 U3和GPU调试工作正常。 –

+0

我在Windows 10上,在按照https://docs.microsoft.com/en-us/cpp/parallel/amp/walkthrough-debugging-a-cpp-amp中描述的确切步骤时无法调试GPU代码-应用。试用VS 2013和VS 2017。 –

0

是您的lambda函数是C++/AMP限制功能?

它应该是这样的,否则GPU调试没有权限输入C++限制代码段。

也许这就是为什么你会得到:

“断点不会打......”

更多信息,请阅读:

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

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

0

另一个提示此:当试图调试我看到了一个调试输出消息说"Please use the /DEBUG:FULL linker switch to hit breakpoints in C++ AMP code."

更改链接器设置调试为我工作后。