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更快的例子?
结果示例:chapter4项目结果为1.15ms CPU,2.57ms GPU,2.55ms GPU平铺.
编辑:
Doh,我想我刚刚找到了原因 - 她在讲座中使用的矩阵大小的值是不同的.网站上的样本使用M = N = W = 64.如果我像在演讲中那样使用64,512和256,那么我的性能会相应提高~5倍.
看起来你的首要问题是为什么将东西移动到GPU并不总能让你获益.答案是复制时间.想象一下,计算需要一段时间才能达到n平方.复制需要与n成比例的时间.你可能需要相当大的n才能花费时间复制到GPU和从GPU复制到计算所需的时间.
本书在前面的章节中简要提到了这一点,第7章和第8章都是关于性能和优化的.第7章现在正在进行粗略削减; 第8章应该很快就会出现.(其代码已经在Codeplex上 - 减少案例研究.)
我刚刚检查了使用Tech Ed起始编号的第4章代码的更新,而不是之前的编号.较小的矩阵会丢失太多时间来复制GPU; 较大的那些花费太长时间才能成为一个好的演示.但是你可以随意玩这些尺码.让它们更大,因为你不介意一两分钟的"死气",看看会发生什么.