我要向那些(几乎)不知道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提供了非常好的文章。
发布于 2013-07-02 17:49:41
非常松散地说,说一个Haswell核心有大约16个CUDA核心并不是完全不合理的,但是你肯定不想把这个比较做得太远。您可能希望谨慎地在演示中直接发表这样的声明,但我发现将CUDA核心看作与标量FP单元有一定关系是有用的。
如果我解释一下为什么Haswell每个周期可以执行32次单精度操作,也许会有帮助。
本文将更详细地解释上述要点: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.pdf,http://www.realworldtech.com/kepler-brief/。
如果我将幻灯片放在一起,我将有一节解释Haswell每个周期可以执行多少FP操作:上面的三个点,加上您有多个核心,可能还有多个处理器。另外,我还要解释一个开普勒GPU每个周期可以做多少FP操作:每个SMX 192次,而GPU上有多个SMX单元。
PS.:我可能说的是显而易见的,但只是为了避免混淆: Haswell体系结构还包括一个集成的GPU,它有一个与Haswell CPU完全不同的架构。
发布于 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:)有关。
发布于 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上的峰值往往很远的角度来描述一些剪切数字。
https://stackoverflow.com/questions/17426846
复制相似问题