GPU 核心与 CPU 核心

GPU 核心与 CPU 核心

GPU(例如 NVidia)由流式多处理器组成,这些多处理器由流式处理器或 CUDA 核心阵列组成。V100 上有 5120 个 CUDA 核心。通用 CPU(例如 Intel)最多只有 48 个核心。

GPU 核心与 CPU 核心有何不同?两者的区别主要在于支持的指令集吗?CUDA 核心的频率是多少?

编辑

CPU 上的矢量寄存器操作是单指令多数据 (SIMD),GPU 上分布在网格/线程块/线程之间的内核是单指令多线程 (SIMT)。我们可以说 GPU 只是一个 SIMT 设备吗?数据呢?并行运行的不同线程是否将相同的内核应用于不同的数据集?那么似乎 GPU 同时执行 SIMD 和 SIMT。你想发表评论吗?

答案1

CPU 是一种比 GPU 更通用的机器。我们可能会将 GPU 称为“通用”GPU,但它们的优势不同。

CPU 核心能够执行各种各样的操作,并处理(在所有意图上都可以被认为是)随机分支操作说明流。多个程序都在争夺处理器时间,并由操作系统控制。它们尽可能多地缓存和预测,同时仍试图保持处理指令流突然变化的能力。

另一方面,GPU 是设计用来处理数据流。它们的处理器设计用于处理可能大量的数据,并执行一系列小指令(着色器程序)。高清、2k 和 4k 屏幕包含大量像素,着色器必须连续运行每个像素上的程序才能实现特定效果。为此,它们的程序(与 CPU 相比)更小,每个核心的缓存也更小,但其内存带宽却快得多。

他们也许能够通过适当的编程完成同样的任务,但指示对比数据处理是 CPU 与 GPU 的区别。

因此,它们的核心设计是为了发挥这些优势。长期以来,GPU 着色器核心的运行速度约为 1-2GHz(现代英特尔图形核心列出它们的速度为 500MHz 至 1.5GHz),而 CPU 的频率则在 1.5 至 4GHz 甚至更高。

指令处理更多地受益于单个单元的速度,因为将指令流分解为多个流可能很困难甚至不可能,因此 CPU 需要更快才能更快地处理指令。问题是,核心运行得越快,它产生的热量就越多,因此运行速度就会受到限制。(还有其他技术限制会影响时钟速度,但这是另一回事。)

另一方面,数据处理适合在不同的数据集和并行性上运行相同的任务(程序),因此,投入任务的核心越多越好。以较慢的速度运行核心会产生较少的热量。较少的热量意味着您可以投入更多核心,从而提高数据吞吐量。因此,数据任务受益于与 CPU 不同(更小、更精简)的核心类型。

最终结果是我们拥有两种不同类型的处理器。一种针对通用指令流,另一种针对批量数据处理。

答案2

如今,CPU 核心通常被称为 gpCPU 核心 -G一般目的 CPU 核心。这指出了巨大的差异:gpCPU 核心经过优化,可以相当好地完成很多事情,而 GPU 核心则设计为非常非常好地完成一件事(基本上是浮点 SIMD)。

GPU 核心对 IO、缓存一致性及其相关功能几乎一无所知,因此其整数性能很一般。

对于 FP SIMD 工作负载,GPU 是一个出色的加速器:将 gpCPU 视为管理器,将 GPU 核心视为工作者。两者都是完成工作所必需的,并且两者都专门负责其角色。

相关内容