想象你正在经营一家为整座城市供餐的“超级中央厨房”。这家厨房不是一开张就把锅碗瓢盆乱堆一气,而是先画好设计图:炒菜区、备菜区、冷库、传菜通道各占一角,每个区域互相配合又不抢道。寒武纪MLU(Machine Learning Unit)芯片,就是一张为人工智能量身定制的“超级厨房设计图”——它把海量的计算单元、存储单元和传输通道,像厨房的灶台、货架和传菜电梯一样,安排得井井有条。这篇文章将带你走进MLU芯片内部,用小白的视角看懂它的硬件设计与计算能力:从张量计算单元如何“掌勺”,到片上存储如何“备菜”,再到数据如何在不同模块间“传菜”。你会发现,芯片架构并不神秘,它和一家高效运转的厨房一样,比拼的是分工、配合与流程优化。

岗位关联

理解MLU架构,是从事国产AI芯片选型、部署与性能调优的通行证,让你在算力国产化浪潮中不再“知其然而不知其所以然”。

目录
  1. 可视化演示
  2. 整体架构布局:一张“超级中央厨房”的设计图
  3. 张量计算单元:掌勺大厨与配菜师团队
  4. 片上存储层次:备菜台与小冷库
  5. 互联与带宽:传菜通道与冷库传送带
  6. 算力评估指标:出菜速度的核算方法
  7. 场景适配优化:不同宴席的接待方案
  8. 软件栈配合:菜谱管理与配菜师
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示进程-资源分配图,通过有向图环检测算法自动识别死锁状态,切换不同配置观察死锁形成。

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

资源分配图死锁检测 进程节点 资源节点 死锁环 cycle = deadlock 有向图中存在环则发生死锁

整体架构布局:一张“超级中央厨房”的设计图

想象你正在经营一家为整座城市供餐的“超级中央厨房”。这家厨房不是一开张就把锅碗瓢盆乱堆一气,而是先画好设计图:炒菜区、备菜区、冷库、传菜通道各占一角,每个区域互相配合又不抢道。寒武纪MLU芯片的架构设计,就像画这样一张厨房设计图——先把功能分区规划好,再考虑怎么让各个区域高效协作。

MLU把芯片划分为几个明确的功能域。计算核心域相当于灶台区,所有张量处理核心(TPC)都集中在这里;存储与IO域相当于仓库和出入口,负责运进数据、送出结果;控制调度单元则像厨房总指挥,负责下发指令、协调各区域的工作节奏。这种模块化布局的最大好处是:不同功能块可以并行运转,互不干扰,也不会因为某个区域拥堵而拖垮整条流水线。

在芯片物理实现上,各个模块通过片内总线相连,数据与指令沿着总线流动。控制调度单元下发一条指令,计算核心域执行运算,存储域供应数据——三者就像一台精密运转的机器。但现实并非完美并行:计算单元等数据时只能空转,存储单元忙不过来时计算单元也只能等待。任何一个环节慢下来,整条线的效率都会被拖低。这种串行等待的关系,可以用一个简单的延迟模型来描述:

这三部分时间累加,就是一次完整任务的耗时。所以工程师优化MLU时,不只是让灶台(计算单元)火更大,还会让备菜更快、传菜通道更宽,把每一部分时间都压下去。这正是“整体架构布局”的核心思想:先搭好合理的框架,再谈局部提速。理解了这张设计图,后面所有模块的讨论就都有了地图上的坐标。

Ttotal=Tcompute+Tmemory+TtransferT_{\text{total}} = T_{\text{compute}} + T_{\text{memory}} + T_{\text{transfer}}
  1. 总延迟表示从数据进入芯片到得出结果所花费的总时间
    TtotalT_{\text{total}}
  2. 计算耗时计算核心真正执行运算的时间,相当于厨师下锅翻炒的时长
    TcomputeT_{\text{compute}}
  3. 访存耗时等待数据从存储中取出的时间,好比等冷库出货
    TmemoryT_{\text{memory}}
  4. 搬运耗时数据在模块之间传递花费的时间,好比传菜通道上的通行时间
    TtransferT_{\text{transfer}}

张量计算单元:掌勺大厨与配菜师团队

超级厨房的核心是掌勺的大厨。MLU芯片的“大厨”是围绕张量计算设计的众多张量处理核心(TPC)。TPC并不是单打独斗,它内部包含三种角色:矩阵运算引擎、矢量运算单元和累加器,分别像大厨、配菜师傅和调料称量师。三者配合,才能把一道AI“菜”高效做出来。

矩阵运算引擎专门处理深度学习中最常见的矩阵乘法。矩阵乘法可以比喻为按菜谱配菜:矩阵A的每一行是一份菜谱的配料需求,矩阵B的每一列是一种食材的配给清单,两者相乘得到每道菜的最终用量矩阵C。深度学习模型的卷积、全连接等操作,本质上都可以拆解为矩阵乘法,因此矩阵运算引擎的吞吐直接决定了芯片的AI算力:

除了矩阵运算引擎,TPC还配备矢量运算单元,负责处理逐元素的激活函数、归一化等操作,就像配菜师傅把各类配料备齐;累加器则以更高精度保存中间结果,避免多次累加造成精度损失,如同用精密电子秤称量调料,保证每份菜口味稳定。算子映射则是把AI模型里的各种算子翻译成TPC上可执行的指令序列,相当于把菜谱翻译成厨师能看懂的步骤卡。理解了TPC内部的分工,就明白为什么AI芯片如此看重“张量”——因为深度学习模型几乎全是矩阵运算的组合。

Cm×n=Am×k×Bk×nC_{m \times n} = A_{m \times k} \times B_{k \times n}
  1. 左乘矩阵$A_{m \times k}$ 是形状为 $m$ 行 $k$ 列的输入矩阵,相当于 $m$ 份菜谱、每份涉及 $k$ 种配料
    Am×kA_{m \times k}
  2. 右乘矩阵$B_{k \times n}$ 是形状为 $k$ 行 $n$ 列的输入矩阵,相当于 $k$ 种配料对应 $n$ 个菜品的配给方案
    Bk×nB_{k \times n}
  3. 输出矩阵$C_{m \times n}$ 是运算结果矩阵,$m$ 行 $n$ 列,代表每份菜谱在每个菜品上的最终用量
    Cm×nC_{m \times n}
  4. 乘加含义$C$ 中每个元素是 $A$ 的一行与 $B$ 的一列逐项相乘再累加的结果,即行与列的点积
    Cij=∑p=1kAip×BpjC_{ij} = \sum_{p=1}^{k} A_{ip} \times B_{pj}

片上存储层次:备菜台与小冷库

厨房要快,食材就不能总从远处的大冷库搬。MLU在芯片内部安排了多级片上存储——SRAM。SRAM容量不大,但速度极快,相当于灶台边的备菜台:食材现取现用,不用每次跑大冷库。整个存储层次像一个金字塔:越靠近计算单元,容量越小、速度越快;越远离,容量越大、速度越慢。

片上存储设计讲究分级缓冲。数据先从外部大容量内存(如HBM)搬进片上SRAM,再被计算单元取用。计算单元直接访问SRAM的速度比访问HBM快一个数量级,但如果数据搬进SRAM后只用一次就丢弃,带宽就白白浪费了。所以MLU特别强调“数据复用”——让同一份数据被多次使用,减少重复搬运。这就像一份高汤被多个菜品反复取用,而不是每道菜都重新熬一锅。

带宽是整个系统的生命线。存储带宽B表示每秒能搬运多少数据。对于采用双倍速率(DDR/HBM)的接口,带宽由接口频率、数据位宽和双倍速率共同决定:

实际应用中,一次矩阵乘法需要把输入特征图、权重从HBM搬到SRAM,再流经计算单元。如果数据复用设计得好,一次搬运可以支撑多次乘加运算,计算利用率就会显著提升。这正是“用搬运次数换计算效率”的智慧:SRAM容量不是越大越好,关键是让每一块SRAM里的数据都被榨干价值。

B=f×W×2B = f \times W \times 2
  1. 接口频率$f$ 是存储接口的时钟频率,单位GHz,相当于传送带每秒滚动的圈数
    ff
  2. 数据位宽$W$ 是每个时钟周期并行传输的数据线数量,单位bit,相当于传送带的宽度
    WW
  3. 双倍速率$\times 2$ 表示在时钟的上升沿和下降沿各传一次数据,相当于传送带正转和反转都在送货
    ×2\times 2
  4. 带宽结果$B$ 是每秒能搬运的数据量,单位GB/s,是衡量存储系统吞吐能力的核心指标
    BB

互联与带宽:传菜通道与冷库传送带

一家大型厨房,炒好的菜要同时送往几十个包间;一个多芯片AI系统,数据要在不同芯片之间高频流动。MLU的互联方案就是为AI“吃数据”而生的传菜系统。没有畅通的传菜通道,灶台火力再旺,菜品也送不出去。

片间互联解决的是“多张卡怎么协作”的问题。训练大模型时,单张芯片装不下全部模型参数,需要多块MLU组成集群。片间互联通道把多块芯片连成一张大网,每一跳都在搬运着梯度与权重。HBM接口则是芯片与外部高带宽内存之间的“冷库传送带”,提供数TB/s级别的带宽,确保计算单元永远有数据可算。PCIe通道主要负责与主机CPU通信,相当于厨房对外的进货大门,接收指令和预处理后的数据。

多条通道并行,总带宽叠加。如果每条通道的带宽为 $B_{\text{per}}$,共有 $N_{\text{link}}$ 条通道,则聚合带宽为:

除了带宽,还有一致性协议在幕后工作。多块芯片同时读写同一份数据时,一致性协议保证大家看到的是最新值,避免“数据打架”。这就像多个厨房共用一个食材账本,必须确保谁取了多少都记录清楚。缓存一致性是复杂但必要的机制,也是国产互联方案走向成熟的关键挑战。

Btotal=Bper×NlinkB_{\text{total}} = B_{\text{per}} \times N_{\text{link}}
  1. 单通道带宽$B_{\text{per}}$ 是每一条互联通道在单位时间内能传输的数据量,相当于一辆传菜小车的载货量
    BperB_{\text{per}}
  2. 并行通道数$N_{\text{link}}$ 是同时工作的通道数量,相当于同时派出的小车数量
    NlinkN_{\text{link}}
  3. 聚合带宽$B_{\text{total}}$ 是所有通道合并后的总吞吐,单位通常为GB/s
    BtotalB_{\text{total}}
  4. 线性扩展通道数越多总带宽越高,“堆通道”是扩展吞吐的基本思路,但成本也随之上升
    Btotal=Bper×NlinkB_{\text{total}} = B_{\text{per}} \times N_{\text{link}}

算力评估指标:出菜速度的核算方法

饭店好不好,不看灶台最大火力,而看实际翻台率。评估MLU芯片,也不能只盯标称峰值算力。峰值算力是理论极限,相当于所有大厨拼命颠勺时的极限出菜数;真实项目里,还要看能效比、实际利用率和模型吞吐,这些指标共同决定了芯片在真实负载下的表现。

能效比衡量的是“每度电做多少菜”,即每瓦特功耗能完成的计算量。对数据中心而言,电费是运营成本的大头;对边缘设备而言,功耗直接决定散热方案和电池续航。因此能效比是AI芯片的重要评价维度。而实际利用率则反映了计算单元在真实任务中被有效使用的程度:

实际利用率和峰值算力之间的差距,往往就是存储带宽和互联带宽拖的后腿。一个模型在MLU上的吞吐,即每秒能处理多少样本,是用户最关心的终极指标。它综合反映了架构设计与软件调优的水平。“能用上的算力才是真算力”,这句话解释了为什么有些芯片标称算力很高,跑起真实模型却不如预期。选型时,务必用真实模型跑一跑吞吐和利用率,而不是只看宣传册上的数字。

η=TcomputeTtotal×100%\eta = \frac{T_{\text{compute}}}{T_{\text{total}}} \times 100\%
  1. 有效计算时间$T_{\text{compute}}$ 是计算单元满负荷执行运算的累计时间
    TcomputeT_{\text{compute}}
  2. 总任务时间$T_{\text{total}}$ 是整个任务从开始到结束的完整耗时,包含等待、搬运、计算
    TtotalT_{\text{total}}
  3. 利用率$\eta$ 表示计算单元被有效利用的比例,越接近100%说明空转越少
    η\eta
  4. 百分比换算$\times 100\%$ 把小数比例转换为直观的百分数,方便对比不同配置的效果
    ×100%\times 100\%

场景适配优化:不同宴席的接待方案

超级中央厨房要应对各种宴席:婚宴、商务宴、外卖单。MLU也需要针对不同的AI工作负载做适配优化。最常见的两类场景是训练与推理,它们的需求差异很大,就像研发新菜谱和按菜谱批量出菜是两种完全不同的活儿。

训练场景像研发新菜谱:要反复试验、调整配比,需要高精度和大批量数据,计算强度极高,对存储带宽的消耗也非常大。推理场景像按已定菜谱批量出菜:延迟要低、吞吐要高,精度要求相对宽松,可以适当使用低精度量化(如FP16/INT8)来提速。因此MLU在不同场景下会采用不同的数据精度和算子调度策略,例如训练用FP32保证收敛质量,推理用INT8换取更高吞吐。评价适配效果,常用加速比。假如一个模型在原平台的运行时间是 $T_{\text{baseline}}$,在MLU上的时间是 $T_{\text{MLU}}$,加速比为:

典型模型方面,卷积网络(如ResNet)在MLU上表现优异,因为卷积可以映射为大量并行矩阵运算;Transformer结构则对存储带宽和互联要求更高,是新一代芯片优化重点。性能调优时,工程师会把小算子融合成大算子、调整数据在SRAM中的排布、选择合适精度,让每一拍时钟都用在刀刃上。就像厨师会根据宴席类型调整备菜流程——宴席不同,后厨的动线也要跟着变。

S=TbaselineTMLUS = \frac{T_{\text{baseline}}}{T_{\text{MLU}}}
  1. 基线时间$T_{\text{baseline}}$ 是参考硬件平台上跑通同一模型的耗时
    TbaselineT_{\text{baseline}}
  2. MLU时间$T_{\text{MLU}}$ 是MLU上的运行耗时
    TMLUT_{\text{MLU}}
  3. 加速比$S$ 表示MLU比基线快多少倍,$S = 2$ 即快一倍
    SS
  4. 相对比较加速比是相对值,基线选不同平台结果也不同,对比时需说明硬件环境与精度配置
    S=TbaselineTMLUS = \frac{T_{\text{baseline}}}{T_{\text{MLU}}}

软件栈配合:菜谱管理与配菜师

光有灶台还不够,厨房正常运转还需要菜谱管理软件、预制菜包和熟练的服务员。MLU的软件栈就是AI芯片的“操作系统与服务体系”。寒武纪推出的CNToolkit是完整的开发工具链,内置编译器、调试器和性能分析工具,把开发者写的AI模型编译成MLU能执行的指令序列。

算子库CNNL就像预制菜包:把常用的卷积、归一化、池化等算子预编译好,开发者直接调用,不用从零手写底层实现。框架适配层则负责对接TensorFlow、PyTorch等主流深度学习框架,让开发者几乎无感地切换硬件后端——就像点菜系统升级了,但顾客点菜的方式没变。当模型从CPU/GPU迁移到MLU时,数据要经过主机端再到设备端,端到端延迟可以记为:

虚拟化与多卡管理让一块物理MLU可以分割给多个用户使用,就像厨房里的多个档口共享中央资源。完整的软件栈决定了芯片的“好用程度”:硬件是实力,软件是演技,两者配合才能把芯片性能真正发挥出来。对开发者而言,选芯片也是在选软件生态——工具链顺不顺,直接决定项目落地的速度。

Te2e=Thost+TdeviceT_{\text{e2e}} = T_{\text{host}} + T_{\text{device}}
  1. 主机端时间$T_{\text{host}}$ 涵盖数据预处理、内存拷贝和框架调度耗时
    ThostT_{\text{host}}
  2. 设备端时间$T_{\text{device}}$ 是MLU上真正的kernel执行时间
    TdeviceT_{\text{device}}
  3. 端到端延迟$T_{\text{e2e}}$ 是用户从发起请求到拿到结果的总感知时间
    Te2eT_{\text{e2e}}
  4. 串行叠加主机端与设备端依次完成,优化既要减少kernel耗时,也要减少数据拷贝
    Te2e=Thost+TdeviceT_{\text{e2e}} = T_{\text{host}} + T_{\text{device}}

AI 应用场景

场景1:云端大模型训练集群

阶段:模型训练与算力供给

解决的问题:传统GPU平台成本高、供应链受制约,大模型训练亟需国产算力底座。MLU通过多卡互联和HBM大带宽,为超大规模参数训练提供高吞吐、低成本的算力方案。

具体案例:某AI公司用8卡MLU370服务器训练130亿参数的语言模型。工程师通过CNToolkit把PyTorch模型编译优化,采用数据并行加张量并行策略,使多卡线性加速比达到7.2倍,训练吞吐较单卡提升近7倍。

场景2:智慧园区边缘推理

阶段:模型推理部署

解决的问题:边缘盒子功耗受限(通常低于30W),同时要跑多路视频分析。MLU高能效比设计让推理在低功耗下保持高吞吐,一台设备取代多台通用CPU服务器。

具体案例:某安防厂商在园区出入口部署内嵌MLU的智能分析盒,同时运行人脸检测、口罩识别、车辆识别三个模型,端到端时延均低于50ms,功耗仅25W,满足7×24小时不间断运行要求。

场景3:国产化算力迁移

阶段:系统迁移与适配

解决的问题:信创项目要求核心系统使用国产芯片。MLU提供完善的PyTorch/TensorFlow适配层,将迁移成本降到最低,避免“换芯片等于重写系统”的难题。

具体案例:某银行风控系统原运行在NVIDIA GPU上,迁移到MLU时复用90%的Python业务代码,仅需替换底层推理后端并重新编译算子,性能与原有系统持平,顺利通过监管验收。

Python 演示

python48 行
"""MLU两级流水线模拟器模拟数据块依次经过"搬运(Load)"和"计算(Compute)"两个阶段,展示流水线重叠如何提升整体吞吐与部件利用率"""  class MLU_PipelineSim:    """模拟MLU上数据搬运与计算两级流水线"""     def __init__(self, load_latency=4, compute_latency=6):        self.load_latency = load_latency      # 搬运阶段耗时(周期)        self.compute_latency = compute_latency  # 计算阶段耗时(周期)        self.load_free = 0      # 搬运单元下次空闲时刻        self.compute_free = 0   # 计算单元下次空闲时刻        self.load_busy = 0      # 搬运单元累计忙碌周期        self.compute_busy = 0   # 计算单元累计忙碌周期     def run(self, num_blocks):        """按贪心调度送入 num_blocks 个数据块"""        finish_time = 0        for _ in range(num_blocks):            load_start = max(self.load_free, 0)            load_end = load_start + self.load_latency            compute_start = max(load_end, self.compute_free)            compute_end = compute_start + self.compute_latency             self.load_free = load_end            self.compute_free = compute_end            self.load_busy += self.load_latency            self.compute_busy += self.compute_latency            finish_time = compute_end         return {            "总耗时": finish_time,            "搬运利用率": round(self.load_busy / finish_time * 100, 1),            "计算利用率": round(self.compute_busy / finish_time * 100, 1),        }  if __name__ == "__main__":    print("===== MLU 两级流水线模拟 =====")    for n in [1, 4, 20]:        sim = MLU_PipelineSim(load_latency=4, compute_latency=6)        result = sim.run(n)        print(f"数据块数: {n:>2}  总耗时: {result['总耗时']:>3} 周期  "              f"搬运利用率: {result['搬运利用率']}%  "              f"计算利用率: {result['计算利用率']}%")
目的:用事件驱动调度模拟MLU“搬运-计算”两级流水线,展示数据块持续送入时计算单元利用率如何逐步提高。
  1. compute_start = max(load_end, self.compute_free)计算必须等数据搬运完成且计算单元空闲,这是流水线调度的核心约束
  2. self.load_free = load_end更新搬运单元的可用时刻,让下一个数据块能紧接着开始搬运
  3. self.load_busy += self.load_latency累计搬运单元的忙碌周期,用于最终计算利用率
  4. for _ in range(num_blocks)顺序调度所有数据块,模拟真实场景中连续不断的数据流
  5. round(self.load_busy / finish_time * 100, 1)用忙碌时间除以总耗时算出利用率百分比,直观反映部件空转程度

常见误区

误区选AI芯片只看TOPS(每秒万亿次运算),觉得数字越大,跑模型就一定越快。

正解峰值算力只是理论极限,就像厨房灶台的最大火力。实际出菜速度还取决于备菜、传菜是否跟得上。存储带宽、数据搬运、算子调度效率都可能成为瓶颈。MLU即使标称算力很高,如果模型对带宽消耗大、数据复用做得不好,实际利用率可能不到50%。选型必须拿真实模型测吞吐和延迟。

为何常见:厂商宣传页永远把峰值TOPS放在最显眼的位置,数字对比最直观,容易让人忽略真实负载下的复杂情况。

误区既然都是AI加速芯片,CUDA写的程序改个名字、换个编译器就能跑在MLU上。

正解MLU有自己独立的软件栈,包括CNToolkit工具链、CNNL算子库、框架适配层。CUDA代码不能直接运行在MLU上,需要通过寒武纪的算子接口改写或迁移。好在PyTorch/TensorFlow等框架适配层做得较完善,大部分业务代码可以复用,但底层自定义算子仍需要重写。

为何常见:绝大多数AI开发者只用过CUDA生态,惯性思维认为AI芯片应当兼容CUDA,忽略了各家芯片指令集和运行时本质上并不通用。

误区芯片里的SRAM容量越大,性能就一定越强,就像电脑内存越大越流畅一样。

正解SRAM占芯片面积、增加功耗,而且如果数据复用设计不好,容量再大带宽一样是瓶颈。MLU的片上存储设计追求的是容量、带宽与计算单元的平衡——关键在于数据能反复被使用,而不是单纯堆容量。备菜台再大,如果每道菜都用新食材,传菜通道还是会堵。

为何常见:人们习惯用“容量大小”衡量存储好坏,与日常使用电脑的经验一致,但芯片设计是系统工程,瓶颈往往在更隐蔽的地方。

误区反正都是跑同一个AI模型,训练调好了,推理直接部署就行,不用管。

正解训练和推理对算力的需求差异很大。训练追求高精度和大批量数据,需要FP32甚至更高精度;推理追求低延迟和高吞吐,可以用FP16/INT8量化,还可以做算子融合、剪枝等优化。MLU针对两类场景做了差异化设计——训练看重多卡互联带宽,推理看重单卡能效和延迟。两者混为一谈,往往会浪费芯片一半的潜力。

为何常见:训练和推理在通俗语境里都叫“跑AI”,初学者很容易忽略它们在精度、延迟、吞吐上的不同侧重点。

面试题

Q1. 寒武纪MLU中执行矩阵乘法的核心计算单元是?

单选题 · easy

  • A.张量处理核心← 正确答案
  • B.指令控制单元
  • C.PCIe控制器单元
  • D.地址译码缓冲区

答案:A。张量处理核心(TPC)是MLU执行矩阵乘法等张量运算的主力,就像厨房里掌勺的大厨;指令控制、PCIe传输、地址译码都是辅助性模块,不直接参与矩阵计算。

Q2. 下列哪项属于MLU的片上存储层次?

单选题 · easy

  • A.SRAM高速缓存← 正确答案
  • B.机械硬盘存储
  • C.固态硬盘阵列
  • D.光盘只读库

答案:A。MLU的片上存储层次以SRAM为关键构成,容量小但速度极快,相当于灶台旁的备菜台;机械硬盘、固态硬盘、光盘都属于外部存储设备,与芯片不在同一个层级。

Q3. 为什么MLU峰值算力很高时,实际利用率也可能较低?

单选题 · mid

  • A.存储带宽拖慢数据搬运← 正确答案
  • B.芯片自身散热不良
  • C.指令集过于复杂
  • D.工作频率设置过高

答案:A。峰值算力只是理论上限,数据搬运速度跟不上,计算单元就会空转等待,利用率自然低。就像灶台火力再大,备菜送菜跟不上也白搭;散热、指令集、频率不是利用率低的常见主因。

Q4. 以下哪些因素会影响MLU的实际算力表现?

多选题 · mid

  • A.片上存储带宽← 正确答案
  • B.片间互联带宽← 正确答案
  • C.峰值算力标称值
  • D.算子调度效率← 正确答案

答案:ABD。片上存储带宽决定数据投喂速度,片间互联带宽影响多卡扩展效率,算子调度效率决定计算单元是否空转;峰值算力标称值是理论上限,不是“影响因素”,而是衡量对象本身的属性。

Q5. 寒武纪MLU的官方软件工具链被称为什么?

单选题 · easy

  • A.CNToolkit工具链← 正确答案
  • B.CUDA工具套件
  • C.ROCm开发平台
  • D.OpenCL编译器

答案:A。CNToolkit是寒武纪官方开发工具链,包含编译器、调试器、性能分析等完整工具;CUDA是NVIDIA的生态,ROCm是AMD的生态,OpenCL是通用并行计算框架,都不属于寒武纪。

Q6. MLU训练场景与推理场景的主要区别是什么?

单选题 · mid

  • A.训练重精度推理重延迟← 正确答案
  • B.训练用GPU推理用CPU
  • C.训练无需存储参与
  • D.推理无需计算单元

答案:A。训练像研发菜谱,追求精度和大批量,需要高精度计算;推理像按菜谱出菜,追求上菜速度和吞吐,可用低精度量化提速。两者都用AI加速芯片,且都需要存储和计算单元,B、C、D均为错误表述。

Q7. HBM高带宽内存对MLU的核心价值是什么?

单选题 · mid

  • A.提供超高内存带宽← 正确答案
  • B.显著降低芯片功耗
  • C.直接减小核心面积
  • D.简化散热器设计

答案:A。HBM的核心价值是提供远高于普通DDR内存的带宽,让计算单元不被数据饿死,相当于给高速灶台配上超宽传送带;功耗、核心面积、散热主要取决于制程工艺和封装设计,不是HBM的直接功能。

Q8. 关于MLU“数据复用”的说法,正确的是?

多选题 · hard

  • A.降低对片外带宽的需求← 正确答案
  • B.需要片上存储配合← 正确答案
  • C.提升计算单元利用率← 正确答案
  • D.只适用于训练场景

答案:ABC。数据复用让同一份数据在片上多次使用,减少重复搬运,从而降低片外带宽压力,这离不开SRAM的配合,也能有效提高计算利用率;数据复用在训练和推理中都很重要,不止训练场景。

Q9. 能效比(FLOPS/W)衡量的是什么?

单选题 · mid

  • A.每瓦特完成的运算量← 正确答案
  • B.芯片的制造工艺制程
  • C.芯片封装体本身的尺寸
  • D.片上缓存的总容量大小

答案:A。能效比 = 算力 ÷ 功耗,表示每消耗1瓦特电能可以完成多少次运算,是AI芯片的重要评价维度;工艺制程、封装尺寸、缓存容量是芯片的其他物理属性,与能效比的定义不直接相关。

Q10. 在MLU上部署模型时,常用的性能调优手段有哪些?

多选题 · hard

  • A.调整算子融合方式← 正确答案
  • B.优化数据布局← 正确答案
  • C.选择合适数据精度← 正确答案
  • D.更换操作系统

答案:ABC。算子融合可减少kernel启动开销,数据布局优化能提升SRAM命中率,精度选择(FP16/INT8)可提升吞吐;更换操作系统属于运维层面操作,不改变模型在芯片上的执行效率,并非性能调优手段。