部署的 C++ AMP 应用程序停止响应

Posted

技术标签:

【中文标题】部署的 C++ AMP 应用程序停止响应【英文标题】:Deployed C++ AMP application stops responding 【发布时间】:2012-03-15 14:07:13 【问题描述】:

我正在尝试将 C++ AMP 应用程序部署到另一台 Windows 7 机器。 我尝试将 vcamp110.dll 包含在同一个文件夹中,并且使用 /MT 编译确实摆脱了对 msvcp110.dll 和 msvcr110.dll 的依赖。

还尝试了 x64 和 win32 版本的应用程序。

在我在没有安装 VS11 的情况下尝试过的计算机上,程序停止响应。 我尝试用 hello world 应用程序做一个简单的测试,我也遇到了同样的问题。

可以从这里下载文件http://www.2shared.com/file/IofZlrJs/amptest.html(源代码、二进制文件和 dll)。

关于如何解决此问题的任何建议?

【问题讨论】:

【参考方案1】:

绝对支持像您尝试过的部署 - 完整的详细信息在这里: http://blogs.msdn.com/b/nativeconcurrency/archive/2012/03/12/deploying-apps-built-with-c-amp.aspx

您可以采取一些措施来诊断您自己面临的问题:

    vcamp110.dll 的位数必须与您的应用程序的位数相匹配,因此一个 32 位意味着另一个 32 位。 确保某个中心位置(例如 system32)中没有其他 vcamp110.dll 实例 附加调试器并查看加载了哪些 DLL 以及引发了哪些异常。 最重要的是,对于您的所有应用程序,在您的 parallel_for_each 调用周围加上 try...catch 以查看您得到的 runtime_exception。更多关于 C++ AMP 异常的信息可以在这里找到:http://blogs.msdn.com/b/nativeconcurrency/archive/2012/02/01/c-amp-runtime-exceptions.aspx

对于您共享的特定重现,我们在干净的 Windows 7 机器上的调试器下尝试过,确实抛出了 rutime_exception:“parallel_for_each 的二进制文件与此版本的运行时不兼容。”,这表明不匹配运行时版本(混合位数或将 Developer Preview 与 Beta 混合或类似的东西)。

【讨论】:

以上是关于部署的 C++ AMP 应用程序停止响应的主要内容,如果未能解决你的问题,请参考以下文章

DEV C++ 中的 GDB 在 cout 上停止

Tomcat 没有响应

在 Eclipse 中查看变量时 Gdb 停止

显示器驱动程序已停止响应 并且已成功恢复 这是啥原因

C++ 栈 (stack) & 堆 (heap)

QThreaded C++ 守护程序未正确关闭