Cuda 将SSE/AVX单元与GPU核心进行比较是否公平?

Cuda 将SSE/AVX单元与GPU核心进行比较是否公平?,cuda,hardware,opencl,gpu,sse,Cuda,Hardware,Opencl,Gpu,Sse,我要向那些(几乎)对GPU工作原理一无所知的人做一个演示。我认为说一个GPU有一千个内核,而CPU只有四到八个内核是没有意义的。但我想给我的观众一个比较的元素 在与NVidia的开普勒(Kepler)和AMD的GCN架构合作几个月后,我很想将GPU“核心”与CPU的SIMD ALU进行比较(我不知道他们在英特尔是否有这样的名称)这公平吗?毕竟,在汇编级别上,这些编程模型有很多共同点(至少在GCN中,请看一下第2-6页) 声明Haswell处理器每个周期可以进行32次单精度运算,但我认为有流水线或

我要向那些(几乎)对GPU工作原理一无所知的人做一个演示。我认为说一个GPU有一千个内核,而CPU只有四到八个内核是没有意义的。但我想给我的观众一个比较的元素

在与NVidia的开普勒(Kepler)和AMD的GCN架构合作几个月后,我很想将GPU“核心”与CPU的SIMD ALU进行比较(我不知道他们在英特尔是否有这样的名称)这公平吗?毕竟,在汇编级别上,这些编程模型有很多共同点(至少在GCN中,请看一下第2-6页)

声明Haswell处理器每个周期可以进行32次单精度运算,但我认为有流水线或其他方法可以达到这个速度用NVidia的说法,这个处理器有多少个Cuda内核?我想说,对于32位操作,每个CPU内核8个,但这只是基于SIMD宽度的猜测

当然,在比较CPU和GPU硬件时,还需要考虑很多其他因素,但这不是我想要做的。我只需要解释一下它是如何工作的

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

编辑:
谢谢你的回答,很遗憾我只能选择其中一个。我之所以做这个标记,是因为它最符合我最初的问题,并且给了我足够的信息来证明为什么这个比较不应该走得太远,但是。

我会非常谨慎地进行这种比较。毕竟,即使是在GPU世界中,“核心”一词根据上下文也有着真正不同的功能:新的AMD GCN与旧的VLIW4非常不同,而旧的VLIW4本身也与CUDA核心非常不同
除此之外,如果你只和CPU做一个小小的比较,你会给你的听众带来更多的困惑而不是理解,就是这样。如果我是你,我还是会做一个更详细的比较
例如,一个习惯使用CPU但对GPU知之甚少的人可能会想,为什么一个GPU可以有这么多寄存器,尽管它非常昂贵(在CPU世界中)。对这个问题的解释在本文的最后给出,并对GPU和CPU进行了更多的比较

另一个通过解释GPU是如何工作的,以及它们是如何演变的,并展示了与CPU的区别,对这两种处理单元进行了很好的比较。它解决了诸如数据流、内存层次结构等主题,但也解决了GPU对什么样的应用程序有用的问题。毕竟,GPU所能开发的所有功能只能(有效地)用于某些类型的问题。
就我个人而言,如果我必须做一个关于GPU的演示,并且有可能只提到CPU,那就是:演示GPU能够有效解决的问题,而不是CPU能够更好地处理的问题。

作为一种奖励,尽管它与您的演示没有直接关系,但这里有一个将GPGPU置于正确位置的示例,表明一些人声称的某些加速被高估了(这与我的最后一点有关:)

我完全同意Captain的观点显然,特别是,提出GPU可以有效解决的问题与CPU可以更好地处理的问题将是一个好主意

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

一个SandyBridge内核可以执行2个AVX运算/周期,即8个双精度数字/周期。因此,一台时钟频率为2.6 GHz、拥有16个沙桥核的计算机的峰值功率为333千兆次

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


因此,总结一下,我不想讨论架构细节,而是从GPU上的峰值通常远未达到的角度陈述一些切变数。

非常笼统地说,说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,因此每个标量操作数可以有两个运算:乘法和加法

本文更详细地解释了上述几点:

在总计算中,Haswell堆芯每个周期可执行8*2*2个单精度操作。由于CUDA内核也支持FMA操作,因此在将CUDA内核与Haswell内核进行比较时,不能将该系数计算为2

开普勒CUDA内核有一个单精度浮点单元,因此每个周期可以执行一个浮点操作:

如果我把这方面的幻灯片放在一起,我会有一节解释Haswell每个周期可以做多少FP操作:th