首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较SSE/AVX单元与GPU核心是否公平?

比较SSE/AVX单元与GPU核心是否公平?
EN

Stack Overflow用户
提问于 2013-07-02 13:25:47
回答 4查看 9.4K关注 0票数 17

我要向那些(几乎)不知道GPU是如何工作的人做报告。我认为说一个GPU有1000个核心,其中一个CPU只有4到8个内核,这是一种非意义的说法。但我想给我的观众一个比较的元素。

在与NVidia的开普勒和AMD的GCN架构合作了几个月之后,我很想将GPU“核心”与CPU的SIMD ALU进行比较(我不知道他们在英特尔是否有这样的名字)。公平吗?毕竟,当查看程序集级别时,这些编程模型有很多共同点(至少与GCN相同,请看一下ISA手册的p2-6 )。

这篇文章指出,一个Haswell处理器每个周期可以执行32次单精度操作,但我认为需要流水线或其他事情来实现这一速度。用NVidia的话说,这个处理器有多少个Cuda核 ? --我可以说32位操作的每个CPU核有8个,但这只是一个基于SIMD宽度的猜测。

当然,在比较CPU和GPU硬件时,还有很多其他的事情要考虑,但这不是我想要做的。我只想解释一下这东西是怎么工作的。

PS:所有指向CPU、硬件文档或CPU/GPU演示文稿的指针都非常感谢!

编辑:谢谢你的回答,遗憾的是我只能选择其中之一。我标记伊戈尔的回答是因为它最执着于我最初的问题,并且给了我足够的信息来证明为什么这种比较不应该太远,但是CaptainObvious提供了非常好的文章

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-02 17:49:41

非常松散地说,说一个Haswell核心有大约16个CUDA核心并不是完全不合理的,但是你肯定不想把这个比较做得太远。您可能希望谨慎地在演示中直接发表这样的声明,但我发现将CUDA核心看作与标量FP单元有一定关系是有用的。

如果我解释一下为什么Haswell每个周期可以执行32次单精度操作,也许会有帮助。

  • 每个AVX/AVX 2指令执行8次单精度操作。当编写在Haswell CPU上运行的代码时,您可以使用在256位向量上运行的AVX和AVX2指令。这256位矢量可以表示8个单精度FP数、8个整数(32位)或4个双精度FP数.
  • 两个AVX/AVX 2指令可以在每个核心执行每一个周期,虽然有一些限制,可以对指令配对。
  • 融合乘法加法(FMA)指令在技术上执行2次单精度操作.FMA指令执行“融合”操作,如A=A*B+ C,因此可以说每个标量操作数有两个运算:乘法和加法。

本文将更详细地解释上述要点:http://www.realworldtech.com/haswell-cpu/4/

在整个会计核算中,一个Haswell核心可以执行8*2*2的单精度操作.由于CUDA核心也支持FMA操作,所以在将CUDA核心与Haswell核心进行比较时,不能计算2的因子。

开普勒数据自动化系统核心有一个单精度浮点单元,因此它可以在每个周期执行一次浮点运算:http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdfhttp://www.realworldtech.com/kepler-brief/

如果我将幻灯片放在一起,我将有一节解释Haswell每个周期可以执行多少FP操作:上面的三个点,加上您有多个核心,可能还有多个处理器。另外,我还要解释一个开普勒GPU每个周期可以做多少FP操作:每个SMX 192次,而GPU上有多个SMX单元。

PS.:我可能说的是显而易见的,但只是为了避免混淆: Haswell体系结构还包括一个集成的GPU,它有一个与Haswell CPU完全不同的架构。

票数 11
EN

Stack Overflow用户

发布于 2013-07-02 14:33:00

在进行这种比较时,我会非常谨慎。毕竟,即使在GPU世界中,“核心”一词根据上下文的不同也有着不同的功能:新的AMD与旧的VLIW4 GCN有很大的不同,后者本身与CUDA的核心非常不同。

除此之外,如果你只和CPU做一个小小的比较,那么你会给你的观众带来更多的困惑,而不是理解。如果我是你,我仍然会去做一个更详细的(仍然可以是快速的)比较。

例如,一些习惯于CPU而对GPU知之甚少的人可能会想,为什么一个GPU会有这么多寄存器,尽管它非常昂贵(在CPU世界中)。在这个帖子的末尾给出了对这个问题的解释,以及一些比较GPU和CPU的方法。

另一个文章通过解释GPU是如何工作的,以及它们是如何进化的,并显示出它们与CPU之间的差异,从而对这两种处理单元进行了很好的比较。它讨论了诸如数据流、内存层次结构等主题,但也涉及到GPU使用的应用程序类型。毕竟,GPU可以开发的电源只能用于某些类型的问题(有效)。

就我个人而言,如果我必须做一个关于GPU的介绍,并且只有一次提到CPU的可能性,那就是:展示GPU能够有效解决的问题,而CPU能够更好地解决这些问题。

作为一种奖励,尽管它与您的演示不直接相关,这里有一个文章,它将GPGPU放在了正确的位置,这表明一些人声称的加速速度被高估了(这与我的最后一点btw:)有关。

票数 12
EN

Stack Overflow用户

发布于 2013-07-02 17:33:54

我完全同意CaptainObvious的观点,特别是提出GPU能够有效解决的问题与CPU能够更好地处理的问题是一个好主意。

我喜欢比较CPU和GPU的一种方法是,它们可以运行的操作/秒数。当然,不要将一个cpu核心与一个多核gpu进行比较。

一个SandyBridge核可以执行2个AVX /循环,即压缩8倍精度数字/周期。因此,一台16颗桑迪桥核心频率为2.6 GHz的计算机的峰值功率为333 Gflops.

K20计算模块GK110的峰值为1170GFLOPS,是以前的3.5倍。在我看来,这是一个公平的比较,应该强调的是,峰值性能在CPU (一些应用程序达到峰值的80%-90% )上比在GPU (我知道的最好的情况是不到峰值的50%)要容易得多。

因此,为了总结一下,我不想讨论架构细节,而是用GPU上的峰值往往很远的角度来描述一些剪切数字。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17426846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档