想象你走进一家生意火爆的餐厅后厨。一边站着十几位全能的厨师——他们受过系统的中餐、西餐训练,今天你要吃宫保鸡丁,他们半小时搞定;明天你点惠灵顿牛排,他们也能做出来。另一边,单独隔出一个窗口,只做一道招牌菜——老坛酸菜鱼,一位老师傅带着一套专门定制的灶具,出餐快、味道稳,十桌客人同时点也接得住。前一群厨师是GPU,那位老师傅是NPU。GPU(图形处理器)是通用并行计算神器,什么任务都能“接单”;NPU(神经网络处理器)是专为神经网络定制的“招牌菜窗口”,只做矩阵乘法、卷积这类运算,但做得极快极省电。这篇文章会带你从架构、算力、功耗、编程模型、应用场景到产业生态,看清两者为什么定位完全不同,以及现实中该如何给AI任务“指派厨师”。

岗位关联

学习 NPU 与 GPU 的差异,是 AI 硬件选型、算力规划与芯片评估的基本功,能帮你在预算有限时做出性价比最高的部署决策。

目录
  1. 可视化演示
  2. 定位差异
  3. 架构设计
  4. 算力功耗
  5. 编程模型
  6. 应用场景
  7. 生态未来
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

定位差异

走进那家餐厅的后厨,你会发现一个鲜明的对比:全能厨师团队的大厨房里,刀具、锅铲、烤箱、蒸箱样样齐全,为的是能应对任何菜式;而那个酸菜鱼窗口,用具少得可怜——一口专用锅、一把片鱼刀、一套调料架,但每一件都打磨得恰到好处。GPU就是那间大厨房——它最初为图形渲染而生,后来人们发现它极其擅长“大量数据并行处理”,于是从科学模拟到加密货币,什么活都能接。NPU则是那个专窗——它只看重神经网络里出现频率最高的几道菜:矩阵乘法、卷积、激活函数,干脆把这些运算直接做成硬件电路,省掉了“读懂菜谱”这一步。两种芯片的设计哲学就此分道扬镳:GPU追求通用与灵活,NPU追求极致高效。Amdahl定律解释了这种取舍的价值:

所以你看,全能厨师团队什么菜都会做,但每道菜的“翻译”和“调度”都要花时间;专做酸菜鱼的老师傅只会有限几道菜,可一旦你点的正好是他拿手的,他出餐的速度和稳定性远超那群全能厨师。定位不同,没有谁绝对更优,只看你点的“菜”是什么。

Speedup=1(1−p)+pN\displaystyle \text{Speedup} = \dfrac{1}{(1-p) + \dfrac{p}{N}}
这个公式说明:系统加速比同时受“可并行比例”和“并行单元数”制约,NPU的聪明之处在于把 p 推向 1。
  1. p(可并行比例)程序中能被并行改造的代码占比。神经网络的矩阵运算几乎全是并行的,但对通用程序,p 往往不高。
    p=TparallelTtotalp = \dfrac{T_{parallel}}{T_{total}}
  2. 1-p(串行部分)无法并行、必须顺序执行的剩余部分,比如数据加载、指令调度。GPU 的通用调度会放大这部分开销。
    1−p=TserialTtotal1-p = \dfrac{T_{serial}}{T_{total}}
  3. N(并行单元数量)同时工作的计算核心数量。GPU 有上千个核心,但通信和访存让 N 不能无限增大。
    N=number of parallel unitsN = \text{number of parallel units}
  4. Speedup(整体加速比)并行化后的提速倍数。NPU 的思路是用专用电路把 p 抬高到接近 1,从而绕开 N 的瓶颈。
    Speedup=1(1−p)+p/N\text{Speedup} = \dfrac{1}{(1-p) + p/N}

架构设计

继续观察厨房。全能厨房里最显眼的是几百个一模一样的灶台,每个灶台配一名厨师,组长喊一句“鱼香肉丝!”,所有厨师同时开工,各炒各的——这个模式叫“单指令多线程”(SIMT)。而那个专窗,则是一条精致的流水线:杀鱼、片鱼、码味、过油、熬汤、浇汁,每个环节都有专门的工位,鱼沿着传送带往下走就行。GPU的硬件架构正是围绕“流式多处理器”(SM)组织的——每个SM内含大量CUDA核心,共享缓存和调度资源,通过SIMT模式执行线程束,能适配形形色色的并行算法。NPU则以乘加运算阵列(MAC Array)为心脏,最经典的设计叫脉动阵列:每个处理单元只做乘加,数据从相邻单元流入并向后传递,像接力赛一样完成整个矩阵乘法,中途几乎不需要频繁访问内存。从数学上看,一次神经网络推理的核心就是海量乘加操作:

回到厨房的比喻:GPU 的几百个灶台能应付各种菜式,但每炒完一盘都要重新备料,来回取食材也累;NPU 的流水线把食材安排得明明白白,每一片鱼肉都不会多走一步路——这正是脉动阵列“数据流动、计算不停”的精髓。

MACs=M×N×K\displaystyle \text{MACs} = M \times N \times K
一次矩阵乘法的乘加运算量等于三个维度的乘积,NPU 的整个架构设计就是围绕吞吐这串乘法。
  1. M(输出特征数)这一层网络产生多少个输出值。例如全连接层输出 512 维向量,则 M = 512。
    M=output featuresM = \text{output features}
  2. N(批量大小)一次处理多少条样本。批处理越大,数据复用率越高,计算阵列越饱和。
    N=batch sizeN = \text{batch size}
  3. K(输入维度)每个输出要和输入的 K 个值做 K 次乘加。卷积核拉平后同样用 K 表示。
    K=input channels×kernel sizeK = \text{input channels} \times \text{kernel size}
  4. 总乘加次数三者相乘就是这一层完整的乘加工作量。NPU 把 M×N×K 次运算映射到二维脉动阵列,用流水线摊平执行。
    Total MACs=M×N×K\text{Total MACs} = M \times N \times K

算力功耗

餐厅账本上有一本“能量账”:全能厨师团队火力全开时,几十个灶台同时爆炒,厨房温度飙升,空调开到最大,电费哗哗地涨;那个酸菜鱼窗口却紧凑高效,做同样的菜用电只有大厨房的零头。GPU的功耗相当一部分耗散在指令调度、数据搬运和缓存管理上——毕竟它要随时准备应对各种“菜式”;NPU的专用数据通路把功耗集中在真正需要的乘加运算上,单位功耗的算力可以高出数倍。数据中心里,电费和散热成本占了运营开支的大头,所以能效比往往比峰值算力更关键。衡量AI芯片能效的最常用指标是:

账本最后一页算下来:如果餐厅只做招牌菜(推理场景),专窗的能耗效率远高于大厨房;但如果要研发创新菜(训练场景),大厨房的灵活火力是必要代价。各自有各自的能量账,算清楚才能省下真金白银。

Energy Efficiency=TOPSW\displaystyle \text{Energy Efficiency} = \dfrac{\text{TOPS}}{W}
能效比 = 每秒万亿次运算(TOPS)除以功耗(瓦),它回答的是“每度电能换来多少算力”。
  1. TOPS(每秒万亿次运算)AI 推理场景常以 INT8 精度衡量,即每秒执行多少万亿次整数运算。
    TOPS=1012×operations per second\text{TOPS} = 10^{12} \times \text{operations per second}
  2. W(功耗瓦数)芯片的典型工作功耗,受散热设计功耗(TDP)限制。功耗越高,散热和电费成本越大。
    W=power consumption in wattsW = \text{power consumption in watts}
  3. 能效比两者相除就是每瓦特能榨出的算力。NPU 因电路专用、调度开销小,能效比通常远超 GPU。
    EE=TOPSW\text{EE} = \dfrac{\text{TOPS}}{W}

编程模型

全能厨师团队的菜谱是全行业通用的,任何厨师学校毕业的学生都会用——蒸、炒、炖、烤,步骤清晰,换一家餐厅也能立即上手。而酸菜鱼窗口的“秘方”是老板自定的,只有窗口的师傅看得懂,换个师傅得上很久的培训课。GPU的编程模型是CUDA/OpenCL这类通用并行框架,开发者用C/C++风格的代码控制线程、显存与内核函数,生态成熟,几乎所有深度学习框架都深度适配。NPU则要走厂商各自的专用工具链——华为昇腾用CANN,寒武纪有Neuware,它们的任务是把神经网络的计算图映射到专用硬件上:映射得好,性能惊艳;映射不好,可能反而不如GPU。借用计算机体系结构中的Roofline模型,可以清晰地看到“代码能否吃满硬件”:

对开发者来说,GPU 的菜谱门槛低,随便一个程序员都能炒两下;NPU 的秘方门槛高,但一旦学会,同样的菜能做得更快更省。也正因如此,大多数 AI 工程师被 CUDA 深深绑定,NPU 工具链的学习曲线成了它普及路上最现实的一道坎。

Attainable=min⁡(Peak, AI×Bandwidth)\displaystyle \text{Attainable} = \min\left(\text{Peak},\ \text{AI} \times \text{Bandwidth}\right)
Roofline 揭示:实际算力同时受峰值算力和“运算强度 × 带宽”约束,NPU 的核心优势之一是把运算强度 AI 做大。
  1. Peak(理论峰值算力)芯片硬件承诺的最大每秒浮点运算次数,但程序几乎不可能达到,因为还要等数据。
    Peak=FLOPs per second\text{Peak} = \text{FLOPs per second}
  2. AI(运算强度)每个字节数据搬进芯片后能支撑多少次运算,数值越高说明数据复用越好。
    AI=FLOPsBytes moved\text{AI} = \dfrac{\text{FLOPs}}{\text{Bytes moved}}
  3. Bandwidth(内存带宽)单位时间能从主存搬到片内的字节数。带宽不足是很多 AI 任务的真正天花板。
    BW=Bytes per second\text{BW} = \text{Bytes per second}
  4. min 取较小者真实算力永远被两项中更小的一项卡住。GPU 因频繁访存导致 AI 偏低,NPU 用数据复用抬高 AI,从而更接近峰值。
    Attainable=min⁡(Peak, AI×BW)\text{Attainable} = \min(\text{Peak},\ \text{AI} \times \text{BW})

应用场景

餐厅一天有两个高峰。晚餐高峰等同于“研发新菜”:后厨十几位厨师要根据新菜谱反复试菜,哪种佐料不搭马上换一种做法,锅碗瓢盆全都能动——这是训练,是GPU的舞台。午市的外卖档则是“批量出餐”:成百上千份一模一样的酸菜鱼要快速稳定地端出来——这是推理,是NPU的阵地。训练为什么离不开GPU?因为训练过程算子千变万化、精度要求高(FP16/FP32混合精度)、需要大显存保存梯度与中间状态,GPU的通用性和CUDA生态让迭代效率最大化。推理则完全不同:模型结构已经固定,可以量化到INT8,算子都是“标准菜”,NPU用硬接线跑这些运算,又快又省。推理延迟可以拆成三块:

所以饭点的分工很清晰:要研发新菜(训练),请全能厨房出马,虽然费电但灵活可控;要稳定出快餐(推理),上专门窗口,又快又省。聪明的餐厅老板——也就是AI架构师——会把两者搭配起来,各用所长,而不是只押注一边。

Tinference=Tcompute+Tmemory+Toverhead\displaystyle T_{inference} = T_{compute} + T_{memory} + T_{overhead}
推理耗时 = 计算时间 + 访存时间 + 调度开销,NPU 在三个维度上都有针对性优化。
  1. T_compute(计算时间)芯片真正执行乘加运算的时间。NPU 的乘加阵列吞吐高,这一项很小。
    Tcompute=MACsMAC throughputT_{compute} = \dfrac{\text{MACs}}{\text{MAC throughput}}
  2. T_memory(访存时间)把权重和激活从内存搬到计算单元的耗时。数据复用可以把这项压缩到很低。
    Tmemory=data footprinteffective bandwidthT_{memory} = \dfrac{\text{data footprint}}{\text{effective bandwidth}}
  3. T_overhead(调度开销)每次算子启动的软硬件延迟。流水线设计与算子融合能显著减少启动次数。
    Toverhead=launch latency×number of kernelsT_{overhead} = \text{launch latency} \times \text{number of kernels}
  4. 三者串联总延迟等于三项相加,优化推理性能就是同时压缩这三个部分。
    Ttotal=Tcompute+Tmemory+ToverheadT_{total} = T_{compute} + T_{memory} + T_{overhead}

生态未来

有一家餐厅靠“通用菜系”做到了行业垄断。二十年来,所有厨师都学它的菜谱,所有顾客都按它的菜单点菜,就连农贸市场都按它的需求种菜。想换一套菜系?要重新培训厨师、重新印刷菜单、甚至重新装修厨房——成本高得吓人。这就是CUDA生态的护城河。NPU厂商面对的正是这样的格局:芯片纸面性能很好,但要让AI工程师用起来,得说服他们抛弃熟悉的工具链,迁移成本实实在在。不过,低功耗推理的需求正在爆发,加上国产化浪潮推动,华为昇腾、寒武纪等NPU在特定场景已开始规模化落地。企业算这笔账时,要看总拥有成本:

护城河虽深,但水位正在下降。随着AI产业从“训练为王”走向“推理为王”,能量效率越来越重要,NPU的“菜单”也在学习兼容更多主流框架。也许未来最好的厨房不是非此即彼,而是全能厨房与专窗并行——就像今天的数据中心里,GPU集群和NPU集群正在协同作战。

TCO=Chardware+Cenergy+Cdevelopment×T\displaystyle TCO = C_{hardware} + C_{energy} + C_{development} \times T
总拥有成本 = 硬件采购 + 能耗成本 + 开发迁移成本×使用年限,GPU省开发、NPU省电费,各有一本账。
  1. C_hardware(硬件采购成本)一次性购买芯片与服务器整机的费用。同性能档位下 NPU 价格通常更低。
    Chardware=unit price×quantityC_{hardware} = \text{unit price} \times \text{quantity}
  2. C_energy(能耗成本)运行期间的电力与散热费用,与能效比强相关。长期 7×24 小时推理,NPU 省下的电费非常可观。
    Cenergy=power×price per kWh×hoursC_{energy} = \text{power} \times \text{price per kWh} \times \text{hours}
  3. C_development × T(研发迁移成本)工程师从 CUDA 迁移到 NPU 工具链的人月成本 × 使用年限。GPU 生态成熟,这项几乎为零。
    Cdevelopment=engineers×salary×monthsC_{development} = \text{engineers} \times \text{salary} \times \text{months}
  4. 总账决策短期看 GPU 省事,长期大规模推理看 NPU 更经济,最终取总成本的最小值。
    decision=min⁡(TCO over candidates)\text{decision} = \min(\text{TCO over candidates})

AI 应用场景

大模型推理集群的算力规划

阶段:模型部署与推理优化

解决的问题:过去所有 AI 服务都跑在 GPU 上,推理阶段功耗高、成本贵。利用 NPU 做混合部署,把可以量化的固定算子(如注意力矩阵乘法、FFN 层)放到 NPU 上,精度敏感的算子留在 GPU,可显著降低整体拥有成本。

具体案例:某智能客服企业把 BERT 意图识别模型量化到 INT8 后部署到昇腾 NPU 集群,同样的 QPS 下推理成本下降约四成,能效比提升近 3 倍,而 GPU 集群则专注处理需要高精度的长文本生成任务。

边缘设备 AI 芯片选型

阶段:端侧部署与实时推理

解决的问题:手机、智能摄像头、车载盒子等设备功耗预算极低,GPU 的功耗无法承受,NPU 的低功耗高能效特性让实时 AI 成为可能。

具体案例:智能手机上的人脸解锁、相册智能分类、语音助手唤醒,都调用芯片内置的 NPU(如高通 Hexagon、苹果 ANE),功耗仅几百毫瓦,用户完全无感知。

自动驾驶训练与车端推理双平台

阶段:模型训练与车端部署全链路

解决的问题:训练需要灵活迭代和高精度浮点计算,车端推理则必须满足低延迟、低功耗和安全冗余,单一芯片难以两头兼顾。

具体案例:某自动驾驶公司训练侧使用 NVIDIA H100 集群跑混合精度训练,车端则部署地平线征程或英伟达 Orin 的 NPU 模块做实时目标检测,训练平台与车端平台各取所长。

Python 演示

python53 行
"""模拟 GPU 与 NPU 处理相同矩阵乘法的性能与能耗差异"""  def matrix_mul_ops(n):    """计算 n x n 矩阵乘法的浮点运算次数 (FLOPs)"""    # 每次乘加 = 一次乘法 + 一次加法,共 2n^3 次运算    return 2 * n * n * n  def gpu_model(n):    """GPU 模型:通用并行架构,算力强但访存开销大、功耗高"""    ops = matrix_mul_ops(n)    peak = 19.5e12            # A100 FP16 峰值算力 (FLOPs/s)    bandwidth = 2.0e12        # 片外带宽 (bytes/s)    data = 3 * n * n * 4      # 三个矩阵各访存一次,每元素 4 字节    compute_time = ops / peak    memory_time = data / bandwidth    time_s = compute_time + memory_time    power = 400               # A100 典型功耗 (W)    return time_s, time_s * power  def npu_model(n):    """NPU 模型:专用乘加阵列,数据复用显著减少访存"""    ops = matrix_mul_ops(n)    peak = 160e12             # 昇腾910 等效 FP16 算力 (FLOPs/s)    bandwidth = 1.6e12        # 片外带宽 (bytes/s)    data = 1.2 * n * n * 4    # 数据复用,访存量约为 GPU 的 40%    compute_time = ops / peak    memory_time = data / bandwidth    time_s = compute_time + memory_time    power = 310               # 昇腾910 典型功耗 (W)    return time_s, time_s * power  def main():    n = 1024    ops = matrix_mul_ops(n)    gpu_t, gpu_e = gpu_model(n)    npu_t, npu_e = npu_model(n)    print("=" * 46)    print(f"任务:{n}x{n} 矩阵乘法({ops / 1e9:.0f} GFLOPs)")    print("=" * 46)    print(f"{'芯片':<6}{'耗时(ms)':>10}{'能耗(J)':>10}")    print(f"{'GPU':<6}{gpu_t * 1e3:>10.2f}{gpu_e:>10.1f}")    print(f"{'NPU':<6}{npu_t * 1e3:>10.2f}{npu_e:>10.1f}")    print("-" * 46)    print(f"NPU 速度倍率 : {gpu_t / npu_t:>8.2f}x")    print(f"NPU 能效倍率 : {gpu_e / npu_e:>8.2f}x")  if __name__ == "__main__":    main()
目的:用简化的算力+访存模型对比 GPU 与 NPU 执行同一矩阵乘法时的耗时和能耗,直观呈现 NPU 在推理类任务上的优势来源。
  1. def matrix_mul_ops(n):定义核心运算量计算函数,2n³ 是矩阵乘法的标准 FLOPs 估算。
  2. peak = 19.5e12设定 GPU 的峰值算力参数,对标真实产品 A100。
  3. memory_time = data / bandwidth把访存时间显式建模,这是 GPU 性能瓶颈的关键项。
  4. data = 1.2 * n * n * 4模拟 NPU 数据复用后访存量只有 GPU 的约 40%。
  5. power = 400设定 GPU 功耗,后续能耗 = 功耗 × 耗时。
  6. npu_t, npu_e = npu_model(n)调用 NPU 模型,得到耗时与能耗两个结果。
  7. print(f"NPU 能效倍率 : {gpu_e / npu_e:>8.2f}x")输出最关键的决策指标:能效提升倍数。

常见误区

误区我查了一下,昇腾 910 的 INT8 算力有 320 TOPS,A100 才六百多 TFLOPS,那 NPU 是不是全面碾压 GPU?以后训练也用它算了。

正解TOPS 和 TFLOPS 的精度口径不同,TOPS 通常是 INT8 整数算力,而 GPU 训练常用 FP16/FP32 浮点算力,直接比较数字意义不大。更重要的是,实际性能取决于算子是否适配、数据能否喂饱计算单元。就像“大胃王能吞很多馒头,但不代表做满汉全席也快”——NPU 在固定结构的低精度推理上确实快,但在需要灵活算子和高精度的训练任务上远不如 GPU。

为何常见:厂商宣传单最喜欢放最大的峰值数字,而峰值算力是最容易被普通人拿来贴脸对比的指标,却忽略了精度口径和使用场景的差异。

误区以后 AI 推理需求越来越大,NPU 又省电又快,GPU 迟早被淘汰,大家都会用 NPU。

正解训练阶段需要高精度浮点、动态计算图和大量数据搬移,GPU 的通用性和 CUDA 生态在可预见的未来仍是主流。NPU 强在算子固定的低精度推理场景,两者是分工互补的关系。现实中,数据中心普遍走“GPU 训练 + NPU 推理”的混合路线,而不是谁取代谁。就像餐厅里全能厨房和招牌菜专窗共存,各有各的客群。

为何常见:看到 NPU 在推理场景的亮眼数据后容易线性外推,忽略训练与推理在计算特征上的根本差异。

误区买 NPU 的时候我就看 TOPS 数字,越大越好,反正都是 AI 算力嘛。

正解TOPS 通常标的是 INT8 峰值理论算力,实际推理中精度需求(FP16/INT8/INT4)、算子覆盖率、内存带宽与编译器优化程度都会让实际吞吐远低于峰值。同款芯片在不同框架(TensorFlow vs PyTorch)上表现差异也很大。选型应该看“目标模型在真实数据上的延迟与吞吐”,就像买车不能只看发动机马力,还要看变速箱匹配、油耗和实际路况表现。

为何常见:TOPS 是厂商规格表上最醒目的数字,直觉上“数字大 = 性能强”,但硬件性能必须结合软件栈和实际负载才能定论。

误区网上都说 NPU 要学新工具链,迁移成本太高了,那我还是无脑选 GPU 吧,省心。

正解对于固定结构的推理模型,NPU 工具链的迁移是一次性投入,之后长期享受低功耗低成本。而且华为 CANN、寒武纪 Neuware 等工具链都在快速补齐对主流框架的支持,很多模型用官方迁移工具就能完成转换。如果业务有大规模推理需求,一年省下的电费可能就超过迁移投入了。短期的“省心”可能造成长期的“烧钱”。

为何常见:关于 NPU 难用的吐槽多来自早期技术不成熟时期,且 CUDA 的舒适区让工程师天然抗拒迁移,放大了一点困难。

误区推理场景就应该全部上 NPU,GPU 做推理又慢又费电,没必要用。

正解GPU 完全能做推理,而且在大模型(LLM)推理场景中仍是主流,因为大模型参数规模大、算子复杂、需要大显存缓存 KV,NPU 很难承接。GPU 的 Tensor Core 本身也针对推理做了优化(如 FP8、稀疏性计算)。实际工作中,GPU 负责大模型和高精度推理,NPU 负责中小模型的规模化量产,两者按需搭配才是最优解。

为何常见:看到 NPU 在中小模型推理上的能效优势后,容易把它绝对化,忽略了模型规模和精度约束这两个关键变量。

面试题

Q1. GPU 最初是为了什么目的而设计的?

单选题 · easy

  • A.通用科学计算
  • B.图形渲染加速← 正确答案
  • C.数据库查询加速
  • D.网络数据转发

答案:B。GPU 全称 Graphics Processing Unit,最初是为图形渲染设计的。后来人们发现它强大的并行计算能力也能用于通用计算,才演变为“通用并行计算神器”。本题考察基础定位,选 B。

Q2. NPU 的全称是什么?

单选题 · easy

  • A.Neural Processing Unit← 正确答案
  • B.Network Processing Unit
  • C.Numerical Processing Unit
  • D.Native Processing Unit

答案:A。NPU 即 Neural Processing Unit(神经网络处理器),专门为神经网络计算设计。其余选项虽然都以 N 开头,分别是网络、数值、原生处理单元,都不符合 AI 芯片领域的标准定义。

Q3. 衡量 AI 推理芯片能效最常用的指标是?

单选题 · mid

  • A.FLOPS 峰值算力
  • B.TOPS 每瓦能效← 正确答案
  • C.内存频率高低
  • D.核心数量多少

答案:B。能效比 = TOPS/W,即每瓦功耗能产生多少万亿次运算,是衡量推理芯片效率的核心指标。FLOPS 是算力绝对值,内存频率和核心数只是间接影响因素,都不能直接反映能效。

Q4. 为什么大模型训练阶段仍然以 GPU 为主?

单选题 · mid

  • A.能效比更高
  • B.生态成熟灵活← 正确答案
  • C.显存容量很大
  • D.硬件价格低

答案:B。训练需要高精度浮点、灵活的动态算子和成熟的软件生态,CUDA 经过二十年积累,几乎被所有深度学习框架深度适配,迭代效率最高。NPU 在训练场景能效比和生态上都不占优势,故选 B。

Q5. NPU 相比 GPU 的主要优势包括哪些?

多选题 · mid

  • A.能效比更高← 正确答案
  • B.支持所有任务
  • C.算力密度更高← 正确答案
  • D.软件生态成熟

答案:AC。NPU 专为神经网络设计,乘加阵列的算力密度高,同功耗下能效比远胜 GPU。但它只擅长固定算子,做不到“支持所有任务”,软件生态也不如 CUDA 成熟,所以 B 和 D 错误。

Q6. 脉动阵列(Systolic Array)最核心的优势是什么?

单选题 · hard

  • A.提高芯片主频
  • B.降低访存开销← 正确答案
  • C.增大缓存容量
  • D.支持通用编程

答案:B。脉动阵列让数据在处理单元间流动并复用,大幅减少了从内存取数的次数,从而突破了带宽瓶颈。它并不能提高主频、增大缓存容量,也不支持通用编程,A、C、D 均不符合。

Q7. 华为昇腾 NPU 对应的软件工具链是?

单选题 · mid

  • A.CUDA工具链
  • B.CANN工具链← 正确答案
  • C.OpenCL接口
  • D.ROCm接口

答案:B。华为昇腾的软件栈是 CANN(Compute Architecture for Neural Networks)。CUDA 是英伟达的,OpenCL 是跨平台并行框架,ROCm 是 AMD 的,均与昇腾 NPU 无关。

Q8. 关于 Roofline 模型的描述,下列说法正确的是?

多选题 · hard

  • A.受峰值算力和带宽的约束← 正确答案
  • B.运算强度高更接近峰值← 正确答案
  • C.增加带宽不会带来收益
  • D.峰值够高就一定快

答案:AB。Roofline 模型指出实际算力受峰值算力与“运算强度×带宽”的较小者约束,提高运算强度(数据复用)可以让实际算力更接近峰值,A、B 正确。带宽增加在访存受限场景是有收益的,因此 C 错误;峰值再高,如果数据喂不进来也跑不快,D 错误。

Q9. 在功耗受限的边缘设备上部署推理模型,选择 NPU 的核心原因是?

单选题 · hard

  • A.支持FP64高精度
  • B.低功耗高能效← 正确答案
  • C.显存容量更大
  • D.软件生态成熟

答案:B。手机、摄像头等边缘设备功耗预算严格,NPU 在极低功耗下仍能提供可观的 INT8 推理算力。FP64 高精度是 GPU 训练特性,边缘 NPU 显存不大、生态也不算最成熟,故排除 A、C、D。

Q10. 下列哪种说法最符合 GPU “通用计算”的定位?

单选题 · easy

  • A.只能运行神经网络
  • B.运行各种并行程序← 正确答案
  • C.只能处理图形渲染
  • D.只能执行矩阵乘法

答案:B。GPU 的“通用”体现在能运行各式各样的并行程序——从科学计算、数据库、视频处理到 AI 训练,而不局限于某一类任务。A、C、D 都以偏概全,只有 B 准确描述了通用计算的定位。