我在CUDA上工作了很多,并且在CPU上做了很多工作,我正在努力理解两者之间的区别.我的I5处理器有4个内核,售价200美元,我的NVidia 660有960个内核,成本差不多.
如果有人能够解释两种处理单元架构在能力优劣方面的主要区别,我会非常高兴.例如,CUDA核心是否有分支预测?
这是一个计算机架构问题,需要很长的答案.我会尽量保持不准确的风险.你基本上通过询问CUDA核心句柄分支预测自己回答了你的问题,答案是否定的.CPU核心必须处理计算机执行的每个单独操作,计算,内存提取,IO,中断,因此它具有巨大的复杂指令集,并且优化获取指令的速度使用分支预测.
它还具有大缓存和快速时钟速率.要实现指令集,您需要更多逻辑,因此与GPU相比,每个核心的晶体管成本更高.
GPU内核具有更少的高速缓存,更简单的指令和更低的时钟速率,但是它们经过优化,可以作为一组进行更多的计算.设置简单的指令,缓存内存越少,每个内核的成本就越低.
CUDA核心是一个向量单位的更多通道,聚集成经线。本质上,CUDA核心是更广泛的AVX或VSX或NEON向量中的条目。
最接近CPU内核的是SMX。它可以处理多个上下文(扭曲,超线程,SMT),并具有多个并行执行管道(Kepler使用6个FP32,Haswell使用2个,Power 8使用2个)。每个SMX都是独立的,就像任何核心或通用CPU一样。
此类比的详细信息在这里:https : //stackoverflow.com/a/36812922/6218300。