为什么传统超算还在用CPU而不是GPU?渺小的人类本质只能处理线性的,也就是传统科学计算最终可以归为A×B或者Ax=b。那么,既然GPU已经在AI领域证明了自己处理超大规模矩阵运算的能力,为什么现在的超算还用CPU而不是主要使用GPU来算这些矩阵?
既然提到传统超算,我们要知道早期GPU没有成熟,只能用CPU,同时传统超算升级成本以及技术和接口冗余的方面可能很难支持升级。

超级计算机的发展有很长的历史,其早期设计和软件生态都是围绕CPU构建的。在那个时代,CPU是唯一的选择。GPU的出现最初是为图形渲染设计的,而他具备的强大的并行计算能力是后来才被发掘的。当人们意识到可以用GPU进行“通用计算(GPGPU)”时,大量的超算软件已经基于CPU架构开发完毕。这就导致了后续升级面临巨大的历史包袱。

因为升级不仅是硬件,更是生态的迁移,因为其中硬件成本只是冰山一角而已,为一台现有超算更换加速卡,或建设新的异构超算中心,成本远不止购买GPU本身。它还包括:
第一方面、需要考虑系统集成成本,需要重新设计计算节点,增加GPU,并配备更强大的供电和散热系统。这相当于对整个系统进行“外科手术”。

第二方面、需要软件移植与优化成本:这是最大的开销。将为CPU编写的复杂科学计算代码(通常是C++或Fortran)改写成能在GPU上高效运行的代码(如CUDA或HIP),需要耗费巨大的工程量。对于动辄百万行代码的成熟软件,这无异于一次彻底的重写。
第三方面、还需要考虑人员培训成本:整个研发和运维团队都需要学习新的并行编程模型和工具链,这需要时间和金钱的投入。

何况不是所有计算都适合“GPU化”,在许多传统科学计算中,只有部分计算核心是高度并行的矩阵运算,而大量的外围计算(如数据预处理、后处理、复杂逻辑判断)依然是串行的。为了一小部分适合GPU的计算,去改造整个庞大的软件系统,其投入产出比可能非常低。
我们还需要考虑到,不同厂商的GPU(如NVIDIA的CUDA和AMD的ROCm)有各自不同的编程接口。为一种GPU编写的代码,迁移到另一种GPU上可能需要大量修改,这增加了技术选型的风险和未来的“接口冗余”问题。

正因为这样,我们现在在市场上可以看到超算的新老交替的“混合时代”,我们看到的现状是:新建的顶尖超算为了追求极致的计算性能,几乎都选择了CPU+GPU的异构架构,因为它们要解决的问题(如气候模拟、核聚变研究)中有大量可并行化的计算。
而大量的传统超算仍在使用纯CPU架构,因为它们运行的软件经过数十年优化,已经非常成熟稳定。只要其计算能力还能满足需求,进行昂贵且痛苦的GPU移植就不是一个优先选项。

最后说两句,传统超算没有全面转向GPU,并非因为GPU不好,而是因为“升级的痛苦”(成本、技术和生态惯性)在许多情况下,超过了“升级带来的收益”。这是一个典型的“沉没成本”和“路径依赖”问题,也是技术演进过程中新旧更替的常态。对此大家是怎么看的,欢迎关注我“创业者李孟”和我一起交流!
往期推荐

