具有比CPU慢的GPU的C++ AMP

Car*_*lve 9 c++ visual-c++ c++-amp

我刚刚开始学习C++ AMP,并且我已经获得了一些我用VS 2012 RC构建的示例,但我发现GPU的性能比CPU慢.例如,Kate Gregory的例子:http://ampbook.codeplex.com/releases/view/90595(与她即将出版的书http://www.gregcons.com/cppamp/相关).她在演讲中展示了她们,通过使用她的笔记本电脑的GPU(我相信她说它是6650)与CPU(不知道她有什么CPU)相比,她在第四章的例子中获得了约5倍的性能提升.我已经尝试过自己测试这个例子以及几个系统配置(如下所示)我总是发现CPU更快.我还测试了其他例子并发现了相同的例子.难道我做错了什么?性能低于预期的原因是否有原因?有没有人有一个肯定会表明GPU更快的例子?

  • 系统1:带有板载显卡的Intel i7 2600K(我希望速度更慢)
  • 系统2:带有Intel HD的Intel i7 2630QM可与AMD 6770一起切换(我在性能模式下运行它应该使用6770)
  • 系统3:采用2xCrossfire AMD HD 5850的Intel i5 750

结果示例:chapter4项目结果为1.15ms CPU,2.57ms GPU,2.55ms GPU平铺.

编辑:

Doh,我想我刚刚找到了原因 - 她在讲座中使用的矩阵大小的值是不同的.网站上的样本使用M = N = W = 64.如果我像在演讲中那样使用64,512和256,那么我的性能会相应提高~5倍.

Kat*_*ory 7

看起来你的首要问题是为什么将东西移动到GPU并不总能让你获益.答案是复制时间.想象一下,计算需要一段时间才能达到n平方.复制需要与n成比例的时间.你可能需要相当大的n才能花费时间复制到GPU和从GPU复制到计算所需的时间.

本书在前面的章节中简要提到了这一点,第7章和第8章都是关于性能和优化的.第7章现在正在进行粗略削减; 第8章应该很快就会出现.(其代码已经在Codeplex上 - 减少案例研究.)

我刚刚检查了使用Tech Ed起始编号的第4章代码的更新,而不是之前的编号.较小的矩阵会丢失太多时间来复制GPU; 较大的那些花费太长时间才能成为一个好的演示.但是你可以随意玩这些尺码.让它们更大,因为你不介意一两分钟的"死气",看看会发生什么.