CUDA核心和CPU核心有什么区别?

时间:2014-01-07 16:17:08

标签: cuda cpu

我在CUDA上做了一些工作,并且在CPU上做了很多工作,我试图了解两者之间的区别。我的I5处理器有4个内核,售价200美元,我的NVidia 660有960个内核,成本差不多。

如果有人能够解释两种处理单元架构在能力优劣方面的主要区别,我会非常高兴。例如,CUDA核心是否有分支预测?

4 个答案:

答案 0 :(得分:10)

这是一个计算机架构问题,需要很长的答案。我会尽量保持不准确的风险。 你基本上通过询问CUDA核心句柄分支预测自己回答了你的问题,答案是否定的。 CPU核心必须处理计算机执行的每一项操作,计算,内存提取,IO,中断,因此它具有庞大的复杂指令集,并且优化了取指令分支预测的速度。
它还具有大缓存和快速时钟速率。 要实现指令集,您需要更多逻辑,因此与GPU相比,每个核心的晶体管成本更高。

GPU内核具有更少的高速缓存,更简单的指令和更低的时钟速率,但是它们经过优化,可以作为一组进行更多的计算。 设置简单的指令,缓存内存越少,每个内核的成本就越低。

答案 1 :(得分:4)

它们现在原则上与CPU核心相同。很久以前,这不是真的,例如他们在2005年无法处理整数操作数。

当比较2核i5的CPU核心复杂性时,请记住原始的80386 CPU只有大约275K晶体管,而Core2Duo大约有2.3亿。 1000倍以上,所以数字很合适。

最大的区别是内存处理变得比我们需要分段寄存器的过去更加复杂。没有虚拟内存等,当您尝试移植正常的CPU程序时,它是非常薄的瓶颈,但真正的问题是非本地内存访问非常昂贵400-800个周期。他们使用的技术在GPU世界之外只有SUN Niagara T1 / T2通用CPU。在等待内存访问时,他们使用其他准备就绪的命令(称为换行)安排不同的线程集。但是如果所有线程都是非线性地跳过你的数据,你的性能就会失败。

答案 2 :(得分:4)

Cuda核心是矢量单元的更多通道,聚集成经线。实质上,cuda核心是更宽的AVX或VSX或NEON向量中的条目。

最接近CPU核心的是SMX。它可以处理多个上下文(warp,超线程,SMT),并具有多个并行执行流水线(6个FP32用于Kepler,2个用于Haswell,2个用于Power 8)。每个SMX都是独立的,就像任何核心或通用CPU一样。

此类比较详述:https://stackoverflow.com/a/36812922/6218300

答案 3 :(得分:3)

您需要了解CPU Vs GPU与最近时间内GPGPU上升需求之间的根本区别。有关此问题的信息课程之一可在Udacity

中找到

此外,this book可能对初级程序有用。

虽然这不是编程问题。希望它可以帮到某人。