中央处理器 (CPU) 是延迟优化的通用处理器,旨在按顺序处理各种不同的任务,而图形处理单元 (GPU) 是吞吐量优化的专用处理器,专为高端并行计算而设计。
GPU 与 CPU 基础知识
中央处理器 | 显卡 |
---|---|
任务并行度 | 数据并行 |
几个重量级核心 | 许多轻量级内核 |
高内存大小 | 高内存吞吐量 |
许多不同的指令集 | 一些高度优化的指令集 |
显式线程管理 | 线程由硬件管理 |
什么是中央处理器?
中央处理器 (CPU) 是计算机的大脑。CPU 的主要工作是通过获取-解码-执行循环执行各种指令集,以管理计算机的各个部分并运行各种计算机程序。
中央处理器架构
CPU 按顺序处理数据的速度非常快,因为它几乎没有具有高时钟速度的重量级内核。它就像一把瑞士军刀,可以很好地处理各种任务。CPU 是延迟优化的,可以在多个任务之间快速切换,这可能会产生并行性的印象。然而,从根本上说,它被设计为一次运行一项任务。
什么是 GPU?
图形处理单元 (GPU) 是一种专用处理器,其工作是快速操纵内存并加速计算机执行许多需要高度并行性的特定任务。
图形处理器架构
由于 GPU 使用数以千计的轻量级内核,其指令集针对维矩阵运算和浮点计算进行了优化,因此它在线性代数和需要高度并行性的类似任务中速度极快。根据经验,如果您的算法接受矢量化数据,则该作业可能非常适合GPU 计算。在架构上,GPU 的内部存储器具有带点对点连接的宽接口,可加快内存吞吐量并增加 GPU 在给定时刻可以处理的数据量。它旨在同时快速处理大量数据。
GPU 与 CPU 限制
CPU 和 GPU 限制的主题归结为确切的用例场景。在某些情况下,CPU 就足够了,而其他应用程序可能受益于 GPU 加速器。现在让我们揭开 CPU 和 GPU 处理器的一些一般弱点,以帮助您决定是否同时需要它们。
CPU 限制
重量级指令集
将越来越复杂的指令直接嵌入 CPU 硬件的趋势是一种现代趋势,但也有其缺点。为了执行一些更困难的指令,CPU 有时需要旋转数百个时钟周期。尽管英特尔使用具有指令级并行性的指令流水线来缓解这种限制,但它正在成为整体 CPU 性能的开销。
上下文切换延迟
上下文切换延迟是 CPU 核心在线程之间切换所需的时间。任务之间的切换非常慢,因为您的 CPU 必须存储寄存器和状态变量、刷新缓存内存以及执行其他类型的清理活动。尽管现代 CPU 处理器试图通过降低多任务延迟的任务状态段来解决这个问题,但上下文切换仍然是一个昂贵的过程。
摩尔定律
集成电路上每平方英寸的晶体管数量每两年翻一番的观点可能即将结束。一块硅片上可以安装多少个晶体管是有限制的,而且你无法超越物理学。
相反,工程师们一直在尝试借助分布式计算来提高计算效率,并尝试使用量子计算机进行试验,甚至试图寻找用于 CPU 制造的硅替代品。
图形处理器限制
不那么强大的内核
尽管 GPU 有更多的核心,但它们在时钟速度方面不如 CPU 强大。GPU 核心的指令集也不那么多样化,但更加专业化。这不一定是坏事,因为 GPU 对于一小组特定任务非常高效。
更少的内存
GPU 还受到它们可以拥有的最大内存量的限制。虽然 GPU 处理器可以在给定时刻移动比 CPU 更大量的信息,但 GPU 内存访问具有更高的延迟。
有限的 API
最流行的 GPU API 是 OpenCL 和 CUDA。不幸的是,它们都以难以调试而闻名。尽管 OpenCL 是开源的,但它在 Nvidia 硬件上的运行速度相当慢。另一方面,CUDA 是专有的 Nvidia API,针对 Nvidia GPU 进行了优化,但它也会自动将您锁定在他们的硬件生态系统中。
您需要 GPU 加速器吗?
您的系统中始终存在瓶颈。您是否需要 GPU 加速器的问题始终与您要解决的问题的具体情况有关。CPU 和 GPU 都有不同的优势领域,了解它们的局限性将使您在为项目选择最佳硬件时做得更好。