我用过一点CUDA,也用过很多CPU,我正在尝试理解这两者之间的区别。我的I5处理器有4个内核,售价200美元,而我的NVidia 660有960个内核,价格大致相同。
如果有人能解释一下这两个处理单元架构在能力、优缺点方面的关键区别,我会非常高兴。例如,CUDA核心是否有分支预测?
发布于 2014-01-09 00:54:54
这是一个计算机体系结构问题,需要一个很长的答案。我将尽量保持它非常简单,以避免不准确的风险。你基本上自己回答了你的问题,问做CUDA核心处理分支预测,答案是否定的。CPU核心必须处理计算机执行的每一项操作,计算、内存获取、IO、中断,因此它具有巨大的复杂指令集,并使用分支预测来优化获取指令的速度。
此外,它有一个大的缓存和快速的时钟频率。为了实现指令集,你需要更多的逻辑,因此与GPU相比,更多的晶体管,更多的核心成本。
GPU内核具有更少的高速缓存,更简单的指令和更低的每时钟时钟频率,但它们经过优化,可以作为一个组进行更多的计算。指令集越简单,缓存越少,每个内核的成本就越低。
发布于 2016-05-17 05:24:39
Cuda核心是向量单元的更多通道,聚集到翘曲中。本质上,cuda核心是更广泛的AVX或VSX或霓虹灯矢量中的条目。
最接近CPU核心的是SMX。它可以处理多个上下文(warps,超线程,SMT),并且有几个并行执行流水线(6个FP32用于开普勒,2个在Haswell上,2个在Power 8上)。每个SMX都是独立的,就像任何核心或通用CPU一样。
这个类比在这里有更详细的描述:https://stackoverflow.com/a/36812922/6218300。
发布于 2016-05-17 04:36:35
它们现在在原则上与CPU核心相同。不久前,这还不是真的,例如,他们在2005年就无法处理整数操作数。
在比较双核i5的CPU核心复杂度时,请记住,最初的80386 CPU只有大约275K晶体管,而Core2Duo大约有2.3亿个晶体管。1000倍以上,所以这些数字符合得很好。
最大的不同是内存处理,它变得比过去我们需要分段寄存器的时候更加复杂。没有虚拟内存等,当你尝试移植正常的CPU程序时,它是一个非常细小的瓶颈,但真正的问题是,非本地内存访问非常昂贵,400-800个周期。他们使用的是GPU世界之外只有SUN Niagara T1/T2通用CPU拥有的技术。在等待内存访问时,它们使用其他准备好的指令来调度不同的线程集(称为wraps)。但是,如果所有线程都是围绕您的数据进行非线性跳转,那么您的性能就会失败。
https://stackoverflow.com/questions/20976556
复制相似问题