一句话定义:异构计算(Heterogeneous Computing)是指在一个系统里同时使用几种架构不同的处理器,让它们各自承担最擅长的任务,再通过统一的调度和内存管理协同完成同一项工作。
打个比方:一家餐厅的后厨。CPU 是主厨,什么都能做:接单、切菜、调味、跟前台沟通、处理突发状况;菜不多时,他一个人就够。GPU 是一排灶台,每个灶台只会颠勺,但几百个灶台同时开火,出菜速度很快;你让它去接单、记账,反而很慢。NPU(Neural Processing Unit,神经网络处理器)更像一台专用切菜机,只切某几种形状的菜,切得又快又省电,但换道菜就不好用了。异构计算要解决的,就是这个后厨如何排班、传菜、互相等待又不互相堵住。
它们怎么协同:核心有三件事。第一是任务划分,编译器或推理框架把计算图拆开,串行逻辑、分支判断留给 CPU,大矩阵乘法交给 GPU,卷积、注意力这类固定模式的计算交给 NPU。第二是数据搬运,各处理器通常有各自的显存或本地内存,数据要在它们之间流动;很多方案的瓶颈常常就出在数据来回搬运上,计算本身反而不慢,所以现代芯片会做统一内存或共享地址空间来减少拷贝。第三是同步与调度,CPU 负责发起任务、等待完成、处理异常,GPU/NPU 异步执行,中间靠队列和事件对齐。整体效果取决于最慢的一环,以及各环节等待的时间。
| CPU | GPU | NPU | |
|---|---|---|---|
| 擅长 | 逻辑控制、分支、调度 | 大规模并行浮点运算 | 固定模式的神经网络算子 |
| 典型任务 | 数据预处理、后处理、服务编排 | 训练、通用推理 | 端侧/边缘推理、低功耗场景 |
| 短板 | 并行度有限 | 功耗高、对小任务不划算 | 算子支持面窄,灵活性差 |
容易混淆的概念:同构计算(Homogeneous Computing)指所有核心架构相同,比如传统多核 CPU 服务器,靠数量堆性能;异构则是靠“种类”搭配。异构计算也不等于分布式计算(Distributed Computing),后者是多台机器联网协作,前者通常发生在单台设备或单块芯片内部。另外,“异构”讲的是硬件组成,而“软硬协同”讲的是软件如何利用这种组成,两者常被一起提,但不是一回事。
对你意味着什么:做 AI 应用的人会发现,模型跑得快不快,不只取决于芯片标称算力,还取决于算子是否被目标硬件原生支持、数据是否需要反复搬运。同一个模型换到另一类芯片上,往往要重新做量化、算子替换和精度验证。选型时,优先确认框架和工具链对目标硬件的支持情况,具体支持列表和版本要求以官方文档为准。对普通职场人来说,理解这一点也有用:遇到“这台设备跑不动这个模型”的问题,先问清楚它用的是 CPU、GPU 还是 NPU,答案常常就藏在里面。
