答案是:不一定,但绝大多数追求高性能的并行计算都会用到显卡(GPU)。
并行计算指的是把一个大的计算任务拆解成很多小的、可以同时进行的子任务。能完成这种工作的硬件有很多,显卡只是其中最高效的一种。
具体来说,并行计算时是否用到显卡,取决于以下三个因素:
1. 看“并行任务”的类型(最重要)
适合显卡(GPU)的任务:数据并行
特点:对大量不同的数据执行完全相同的简单指令。
例子:把一万张图片同时进行滤镜处理;把两个巨大的矩阵(如1024x1024)中的每一个元素分别相乘;在AI训练中,同时计算几十万个神经元的激活值。
结论:这种情况强烈建议使用显卡。CPU虽然也能做,但速度可能慢几十上百倍。
不适合显卡(GPU)的任务:任务并行
特点:对同一组或少量数据执行多种不同的复杂操作。
例子:做一顿饭(一边炒菜、一边煮汤、一边切菜,操作完全不同);编译一份代码(词法分析、语法分析、优化、生成代码,步骤一环扣一环)。
结论:这种情况几乎不用显卡。使用CPU多核心(如8核16线程)更合适。
2. 看编程方式
用GPU的并行计算:程序员需要显式地使用CUDA(NVIDIA)、OpenCL(跨平台)或OneAPI(Intel)等专门框架来编写代码。这类代码会明确地将数据复制到显卡显存,指挥显卡内成千上万个核心同时计算,再取回结果。
不用GPU的并行计算:
使用CPU的SIMD指令集(单指令多数据流):现代CPU(如Intel的AVX-512)也能在一个时钟周期内同时处理多个数据,但并行规模远小于显卡(一次最多处理16个浮点数,而显卡可处理上万个)。
使用CPU的多线程:利用操作系统线程,将任务分配给CPU的多个物理核心。
3. 看硬件环境
有独显/集显的电脑:可以运行任何支持GPU加速的并行计算程序(需安装驱动和CUDA等运行时)。
无显卡的服务器:只能使用CPU进行并行计算。很多云服务器为了成本,会提供“纯CPU计算实例”,适合处理任务并行型工作。
嵌入式/专用设备:如FPGA、ASIC(包括谷歌的TPU、各种NPU神经网络处理单元)。它们是更“专一”的并行计算硬件,在特定任务上甚至比显卡更强、更省电。
一个具体的例子:天气预报
为了预测明天的气温,计算模型需要将大气划分为几百万个网格,并对每个网格同时求解物理方程。
如果用CPU并行计算:比如用一颗64核心的服务器CPU。它能同时处理64个网格,速度不错。
如果用显卡并行计算:比如用一张NVIDIA H100显卡。它有超过18000个计算核心,可以同时处理上万个网格。最终速度可能是CPU的几十倍到上百倍。
正是因为显卡在“数据并行”这类海量计算上的绝对优势,今天的高性能计算(HPC)和人工智能领域,几乎都离不开它。
总结
| 问题 | 答案 |
|---|---|
| 所有并行计算都用显卡吗? | 不是。任务并行类型(如操作系统、Web服务器)用CPU多核心更好。 |
| 数据并行类型(如图像处理、AI训练) | 强烈推荐用显卡,速度远超CPU并行。 |
| 如何区分? | 数据并行:同一操作 × 海量数据 → 显卡 任务并行:不同操作 × 少量数据 → CPU多核心 |
简单来说:显卡是进行“大规模数据并行计算”最主流的工具,但不是并行计算的唯一工具。