new*_*kid 11 cpu gpu cpu-architecture
单个CPU处理单元和GPU单个处理单元有什么区别?
我在互联网上出现的大多数地方都涵盖了两者之间的高层差异.我想知道每个指令可以执行什么,它们的速度有多快以及这些处理单元如何集成到竞争架构中?
这似乎是一个答案很长的问题.所以很多链接都很好.
编辑:
在CPU中,FPU运行实数操作.在每个GPU核心中执行相同操作的速度有多快?如果快,那为什么它快?
我知道我的问题非常通用,但我的目标是回答这些问题.
Gab*_*ern 10
GPU和CPU之间的主要区别在于GPU被设计为在许多独立数据元素上并行执行相同的操作,而CPU被设计为尽可能快地执行单个指令流.
部分问题要求
在CPU中,FPU运行实数操作.在每个GPU核心中执行相同操作的速度有多快?如果快,那为什么它快?
这是指CPU和GPU中使用的浮点(FP)执行单元.的主要差别是不单个FP执行单元是如何实现的.相反,不同之处在于CPU核心只有一些FP执行单元可以在独立指令上运行,而GPU将有数百个并行处理独立数据的GPU .
GPU最初是为了执行图形应用程序的计算而开发的,在这些应用程序中,在数百万个不同的数据点上重复执行相同的操作(想象一下应用查看屏幕上每个像素的操作).通过使用SIMD或SIMT操作,GPU减少了处理单个指令的开销,代价是需要多个指令以锁定步骤操作.
后来GPGPU编程变得流行,因为除了适合此模型的图形之外,还存在许多类型的编程问题.主要特征是问题是数据并行,即可以在许多单独的数据元素上独立地执行相同的操作.
与GPU相比,CPU经过优化,可以尽快执行单个指令流.CPU使用流水线操作,缓存,分支预测,无序执行等来实现此目标.执行单个浮点指令所花费的大多数晶体管和能量用于管理通过流水线而不是FP执行单元中的指令流的开销.虽然GPU和CPU的FP单元可能会有所不同,但这并不是两种架构之间的主要区别.主要区别在于如何处理指令流.CPU也往往在单独的内核之间具有高速缓存一致性内存,而GPU则不然.
当然,特定CPU和GPU的实现方式有很多变化.但是,高级编程差异是GPU针对数据并行工作负载进行了优化,而CPU核心则针对执行单个指令流进行了优化.
您的问题可能会打开各种答案和架构设计考虑因素 试图严格关注您的问题,您需要更准确地定义"单个处理单元"的含义.
在NVIDIA GPU上,你的工作安排在不可分离的warp中,即一组CUDA"内核"将对某些数据执行相同的指令,可能不执行此指令 - warp大小为32个条目.这种warp概念非常类似于具有SSE(2或4个条目)或AVX(4或8个条目)能力的CPU的SIMD指令.AVX操作也将对一组值进行操作,并且该向量单元的不同"通道"可能不会同时执行不同的操作.
CUDA被称为SIMT,因为在CUDA"线程"上比在AVX"通道"上有更多的灵活性.但是,它在概念上是类似的.实质上,谓词的概念将指示是否应该对某些CUDA"核心"执行操作.AVX在其通道上提供屏蔽操作以提供类似的行为.读取和写入内存也是不同的,因为GPU实现收集和分散,只有AVX2处理器才能收集和分散,而且仅为AVX-512安排分散.
考虑具有这种类比的"单个处理单元"将意味着单个CUDA"核心"或例如单个AVX"通道".在这种情况下,两者非常相似.实际上,两者在单个周期中操作add,sub,mul,fma(吞吐量,延迟可能会有很大变化),符合IEEE标准,32位或64位精度.请注意,双精度CUDA"核心"的数量将从游戏玩家设备(又名GeForce)到特斯拉解决方案不等.此外,每种FPU类型的频率都不同:独立的GPU在1GHz范围内导航,其中CPU在2.x-3.xGHz范围内.
最后,GPU具有一个特殊的功能单元,能够计算标准数学库中某些超越函数的粗略近似值.这些功能,其中一些也在AVX,LRBNi和AVX-512中实现,比精确的功能更好.IEEE规范对大多数函数并不严格,因此允许不同的实现,但这更像是编译器/链接器主题.
| 归档时间: |
|
| 查看次数: |
3389 次 |
| 最近记录: |