Sim*_*mon 16 hardware cuda gpu sse opencl
我向那些(几乎)不知道GPU是如何工作的人做了一个演示.我认为说GPU有一千个核心,其中CPU只有四到八个是没有意义的.但我想给观众一个比较的元素.
在使用NVidia的Kepler和AMD的GCN架构几个月后,我很想将GPU"核心"与CPU的SIMD ALU进行比较(我不知道他们是否在英特尔有这个名称).这样公平吗?毕竟,看着汇编级时,这些编程模型有很多共同点(至少是GCN,看看p2-6中的ISA手册).
本文指出Haswell处理器每个周期可以执行32次单精度操作,但我认为有流水线或其他事情可以实现该速率.用NVidia的说法,这款处理器有多少Cuda核心?我会说每个CPU核心有8个用于32位操作,但这只是基于SIMD宽度的猜测.
当然,在比较CPU和GPU硬件时还有许多其他因素需要考虑,但这不是我想要做的.我只需要解释这件事是如何运作的.
PS:非常感谢所有指向CPU硬件文档或CPU/GPU演示的指针!
编辑: 谢谢你的回答,遗憾的是我不得不只选择其中一个.我标记了伊戈尔的答案,因为它最能贴近我最初的问题,并给了我足够的信息来证明为什么这个比较不应该太过分,但是CaptainObvious提供了非常好的文章.
Cap*_*ous 11
进行这种比较我会非常谨慎.毕竟即使在GPU世界中,取决于上下文的术语"核心"具有非常不同的能力:新的AMD GCN与旧的VLIW4完全不同,旧的VLIW4本身与CUDA核心版本截然不同.
除此之外,如果你只与CPU进行一次小比较就会给你的观众带来更多的困惑而不是理解.如果我是你,我仍然会更详细(仍然可以快速)比较.
例如,有人习惯于CPU并且对GPU知之甚少,可能想知道GPU如何能够拥有如此多的寄存器,尽管它如此昂贵(在CPU世界中).对这个问题的解释在此的最后给出后,以及一些比较GPU VS CPU.
这篇文章通过解释GPU如何工作以及它们如何演变并显示与CPU的差异,对这两种处理单元进行了很好的比较.它涉及数据流,内存层次结构等主题,但也涉及GPU有用的应用程序类型.在GPU可以开发的所有功能之后,只能针对某些类型的问题(高效地)访问.
而且就个人而言,如果我不得不做一个关于GPU的演示,并且有可能只对CPU进行一次引用,那就是:提出GPU可以有效解决的问题与CPU可以更好地处理的问题.
作为奖励即使它与你的演示文稿没有直接关系,这里是一个一篇文章 这让GPGPU处于透视状态,显示有些人声称某些加速比率被高估了(这与我最后一点btw相关联:))
Igo*_*sky 10
非常宽松地说,说Haswell核心有大约16个CUDA核心并不是完全没有道理的,但是你绝对不想把这个比较太过分了.您可能希望在演示文稿中直接制作该语句时要谨慎,但我发现将CUDA核心视为与标量FP单元有些相关是有用的.
如果我解释为什么Haswell可以在每个周期执行32次单精度操作,这可能会有所帮助.
每个AVX/AVX2指令执行8个单精度操作.编写将在Haswell CPU上运行的代码时,可以使用以256位向量运行的AVX和AVX2指令.这些256位向量可以表示8个单精度FP数,8个整数(32位)或4个双精度FP数.
每个周期可以在每个内核中执行2条AVX/AVX2指令,尽管对哪些指令可以配对有一些限制.
融合乘法加法(FMA)指令在技术上执行2次单精度运算.FMA指令执行"融合"操作,例如A = A*B + C,因此每个标量操作数可以说有两个操作:乘法和加法.
本文将更详细地解释以上几点:http://www.realworldtech.com/haswell-cpu/4/
在总计算中,Haswell核心可以在每个周期执行8*2*2单精度运算.由于CUDA内核也支持FMA操作,因此在将CUDA内核与Haswell内核进行比较时,不能将该系数计为2.
Kepler CUDA内核具有一个单精度浮点单元,因此每个周期可以执行一次浮点运算:http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture- Whitepaper.pdf,http://www.realworldtech.com/kepler-brief/
如果我把幻灯片放在一起,我会有一节解释Haswell每个循环可以执行多少FP操作:上面的三点,再加上你有多个核心,可能还有多个处理器.而且,我还有另一部分解释了每个周期Kepler GPU可以执行多少FP操作:每个SMX 192个,并且GPU上有多个SMX单元.
PS.:我可能会说明显而易见的,但为了避免混淆:Haswell架构还包括一个集成的GPU,它与Haswell CPU完全不同.