您应该在这里考虑几件事;
有什么方法可以找出两者将如何相互影响?
直接不是,但间接是。WPF 和 AMP 都在使用 GPU 进行渲染。如果您的应用程序的 AMP 部分使用过多的 GPU 资源,则会干扰您的帧速率。C++ AMP 书中的Cartoonizer 案例研究使用 MFC 和 C++ AMP 完全按照您描述的方式进行操作。在具有高图像处理负载的较慢硬件上,您可以看到应用程序的响应能力受到影响。然而,在几乎所有情况下,在 GPU 上对图像进行卡通化要快得多,并且可以达到视频帧速率。
我想知道我是否会看到有希望的加速
对于任何 GPU 应用程序,看到性能改进的关键在于,在 GPU 而不是 CPU 上运行计算所带来的加速必须弥补从 GPU 复制数据和从 GPU 复制数据的额外开销。
在这种情况下,还有额外的开销,因为您还必须将数据从本机 (C++ AMP) 编组到托管 (WPF) 环境。您需要注意通过确保您的数据类型是 blitable 并且不需要显式封送处理来有效地执行此操作。我实现了一个使用 WPF 和本机代码的N 体建模应用程序。
理想情况下,您希望在不通过 CPU 移动的情况下渲染 GPU 计算的结果。这是可能的,但如果您明确涉及 WPF,则不会。N-body 示例通过将 DirectX 渲染区域直接嵌入到 WPF 中来实现这一点,然后直接从 AMP 数组中渲染数据。这主要是因为 WPF viewport3D 确实不能满足我的性能需求。对于渲染图像 WPF 可能没问题。
除非 VS 2013 发生了变化,否则您肯定希望您的 C++ AMP 代码位于单独的 DLL 中,因为在 C++/CLI 项目中使用本机代码时存在一些限制。
正如@stijn 建议的那样,我将构建一个小型原型,以确保您通过将一些计算移至 GPU 获得的收益不会因为将数据移入和移出 GPU 以及移入 WPF 的开销而丢失。