我不确定C ++ AMP有什么用处。如果我已经多线程化我的应用程序(在这种情况下,光线跟踪器)来使用系统上的所有n个核心,我应该使用C ++ AMP ,还是会实际创建更多瓶颈? (当它尝试多线程时,所有CPU核心已经100%使用,)
答案 0 :(得分:6)
C ++ AMP允许您在GPU上执行代码。您是否获得性能取决于您的计算将如何利用硬件。您可以使用更多内核,但是需要通过PCIe传输数据,因此需要大量计算以支付数据移动的初始成本。数据并行问题(如光线跟踪器)非常匹配。
查看有关C ++ AMP的介绍性帖子,了解详情:http://blogs.msdn.com/b/nativeconcurrency/archive/2012/08/30/learn-c-amp.aspx
或观看关于C ++ AMP的介绍性演示: http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-802T
答案 1 :(得分:1)
当您想要计算每个元素或线程彼此独立的大量数据时,AMP是很好的。例如,如果要计算粒子在100M粒子数组中的位置,则CPU上需要数小时。但是,在GPU上,每个粒子可以是一个线程,GPU可以一次执行数千个线程。与8核CPU相比,一次只能执行8个线程。