抽象硬件架构

本文从通信编程视角抽象参与通信的硬件组件及数据通路,并介绍通信通路由两个NPU扩展至多NPU系统时形成的组网拓扑。

在内容边界上,抽象硬件架构只关注“由哪些硬件组件参与通信”和“数据经过哪些组件”,不展开通信引擎内部的具体搬运单元、互联控制器、端口、协议和物理链路,也不描述通信任务的提交与完成时序、内存注册与远端可见性、Endpoint和Channel等软件对象。相关内容分别由执行模型内存模型通信模型介绍。组网部分仅描述NPU及网络设备的连接关系,不展开端口和链路等具体实现。

整体架构

参与通信的硬件组件可以抽象为通信引擎存储单元两类。通信引擎包括AIV、AI CPU和CCU;图中展示的存储单元包括每个NPU上的GM,以及CCU内部的ccuBuffer。

通信抽象硬件架构图

图1 通信抽象硬件架构图

图1以左侧NPU为本端、右侧NPU为对端。两个NPU具有对称的抽象结构,均包含AIV、AI CPU、CCU和GM,其中CCU内部包含ccuBuffer。图中的纵向连线表示通信引擎与所在NPU存储单元之间的数据关系,横向连线表示跨NPU的数据关系;具体的数据搬运路径统一在通信通路中说明。

箭头仅表示从本端到对端的单向数据流示例,不表示未经确认的物理直连或严格执行时序。反向通信使用结构对称、方向相反的通路。图中不展示任务或指令流、同步信号流以及通信任务的调度过程。

通信引擎

本节只介绍各通信引擎的执行主体和硬件职责。不同通信引擎的优势、约束和适用场景,请参见通信方式分类及选择

表1 通信引擎

通信引擎 执行主体 硬件职责
AIV Vector Core 执行通信Kernel中的通信算法逻辑,以及数据处理、搬运和归约等操作。
AI CPU AI CPU 采用AI CPU+TS执行模式。AI CPU Kernel由STARS调度,并向任务队列提交数据搬运等通信任务,再由调度器交给相应的执行器。
CCU(Collective Communication Unit,集合通信处理器) 集合通信专用硬件引擎 执行预置的通信指令,完成数据搬运、同步和归约等操作。

存储单元

存储单元可以从使用位置上分为Global Memory和ccuBuffer。

  • Global Memory:GM是Device侧的全局存储,用于保存通信的输入、输出和中间数据,也是各通信引擎共享通信数据的主要存储空间。
  • ccuBuffer:ccuBuffer位于CCU内部,是CCU进行数据中转和片上归约时使用的本地片上缓存,底层存储单元为MemorySlice(MS)。它用于暂存待发送的数据、接收远端数据或保存归约过程中的中间结果。本文使用图中的名称“ccuBuffer”表示硬件存储抽象;在CCU编程接口中,对应的资源抽象为CcuBuffer。

通信通路

为避免双向箭头交叉影响阅读,图1只绘制一个方向的数据流。实际通信支持沿相同通路双向传输:表示同一NPU内两个组件之间可以双向传输数据,表示图示的本端到对端方向;数据由对端传向本端时,沿相同组件按相反方向传输。

  • AIV通信通路:AIV通过所在NPU的GM收发通信数据。本端发送数据时,本端AIV直接发起以本端GM为源、对端GM为目的的数据传输;数据到达对端GM后,再由对端AIV读取并处理。该通路可表示为:本端AIV ↔ 本端GM → 对端GM ↔ 对端AIV
  • AI CPU通信通路:AI CPU提交的通信任务驱动本端GM与对端GM之间的数据传输。数据到达对端GM后,可由对端AI CPU读取并继续处理。该通路可表示为:本端AI CPU ↔ 本端GM → 对端GM ↔ 对端AI CPU
  • CCU通信通路:CCU既可以直接驱动本端GM与对端GM之间的数据传输,也可以使用内部ccuBuffer暂存和处理通信数据,ccuBuffer与所在NPU的GM之间支持双向传输。根据本端数据所在的存储单元,可分为以下三种形式。
    GM直接传输:数据从本端GM直接传输至对端GM,不经过ccuBuffer,即本端GM → 对端GM
    经本端GM传输ccuBuffer数据:数据依次经过本端ccuBuffer、本端GM和对端GM,再进入对端ccuBuffer,即本端CCU的ccuBuffer ↔ 本端GM → 对端GM ↔ 对端CCU的ccuBuffer
    ccuBuffer直接访问对端GM:本端ccuBuffer直接与对端GM传输数据,不经过本端GM;对端CCU再通过对端GM访问该数据,即本端CCU的ccuBuffer → 对端GM ↔ 对端CCU的ccuBuffer
    ccuBuffer不支持跨NPU直接访问,因此CCU直接访问对端GM并不表示本端与对端的ccuBuffer可以直接互访。

组网拓扑

随着模型规模和计算规模不断扩大,单个NPU往往难以独立承载全部计算和数据,需要多个NPU协同处理。图1展示的两个NPU之间的点到点通路,是构建多NPU通信网络的基本连接单元。当系统扩展到多个NPU时,NPU之间不一定都采用两两直连,而是可以通过直接链路、中间节点或交换设备建立连接。物理拓扑描述各NPU及网络设备的组织和连接方式,决定两个NPU之间能否直接通信,或是否需要经过中间节点、一级或多级交换网络到达。根据节点连接方式和扩展方法的不同,常见拓扑如下:

拓扑 含义
Full Mesh 组内任意两个NPU之间均有直接连接,通信不需要经过其他NPU或交换设备。节点数量增加时,每个节点需要连接的对端也随之增加,适合节点数量相对有限且强调点到点直达能力的组网。
Clos NPU通过一级或多级交换设备互联,任意两个NPU之间的数据经过交换网络到达。Clos不要求NPU两两直连,可以通过增加交换设备或交换层级扩展组网规模。
nD-Mesh NPU按照n个维度排列,每个NPU与各维度上的相邻节点直接连接。相邻NPU可以直接通信,非相邻NPU需要经过一个或多个中间节点转发,其中n表示拓扑维度,例如2D-Mesh表示二维网格连接。

不同组网拓扑决定NPU之间的连接关系,并约束可用的通信路径,是选择通信方式和设计通信算法时需要考虑的硬件基础。