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

问题描述 投票:21回答:4

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

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

cuda cpu
4个回答
10
投票

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

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


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


4
投票

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

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

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


3
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.