Developers
Download
[object Object][object Object]
[object Object]

以下示意区分硬件(FFTS)与软件(GM轮询)两条路径(概念图,非规范绑定):

[object Object]
[object Object]

[object Object] 是跨核同步屏障,支持Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品和Ascend 950PR/Ascend 950DT NPU后端。通过模板参数 [object Object] 选择核类型模式:

  • AIV-only(默认):[object Object] 同步所有AIV核。
  • AIC-only[object Object] 同步所有AIC核(Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品支持硬件和软件模式;Ascend 950PR/Ascend 950DT仅支持硬件模式)。
  • MIX(AIC+AIV)[object Object] 同步AIC和AIV混合核。

通过 [object Object](在带workspace的重载中显式给出)选择 硬件模式(FFTS)软件模式(GM轮询)。无workspace的重载对应硬件路径。

[object Object]

不适用逐元素算术语义。[object Object] 表达的是 barrier(屏障)到达 关系:

  • 在某一动态程序点上,凡属于当前 [object Object] 所划定参与者集合的core,均须执行到该 [object Object] 调用之后,任一参与者方可越过该点继续执行后续代码。
  • 硬件模式:由FFTS旗标与设备侧 [object Object] 等原语保证跨核可见顺序。
  • 软件模式:由GM中各参与者独占slot的单调计数与 [object Object]/[object Object] 等一致性原语,在轮询中判定「全员已到达当前代数」。

该语义对barrier之后的GM或其它buffer内容作额外保证;跨核数据可见性需调用方自行维护,详见「跨核GM通信注意事项」。

[object Object]

声明于 [object Object]。软件模式接口使用类型安全的 [object Object][object Object] 参数(通过SFINAE约束):

[object Object]
[object Object]
[object Object]
  • [object Object]: [object Object](在Ascend C与 [object Object] 并存时,建议写全 [object Object],避免与编译器内置头中的 [object Object] 枚举同名冲突)。软件模式使用的GM workspace,调用前需要初始化为0。每个参与core占用8个 [object Object](按cache line隔离同步计数)。
  • [object Object]: [object Object](模板参数固定为 [object Object],即每核一个cache line槽位)。AIV-only和MIX软件模式使用的UB scratch,运行时后备内存容量须至少为 [object Object](实现通过裸指针访问,不校验模板容量;示例中以编译期最大参与核数 × [object Object] 声明以保证后备内存充足)。
  • [object Object]: [object Object]。AIC-only和MIX软件模式使用的L1(cbuf)scratch,用于 [object Object] 填充同步值后经DMA搬移到GM。
  • [object Object]: 参与软件barrier的core数。为0时自动推算——AIV-only / AIC-only使用 [object Object],MIX使用 [object Object](即 [object Object])。
[object Object]

下列场景需在ELF中手写 [object Object],供runtime正确调度:Hard AIV-onlySoft AIC-only、以及 register-ELF的MIX(如1:1 hard)。[object Object] 自动拆分场景由Bisheng生成meta,见本节末尾。宏定义于 [object Object]

[object Object]
[object Object]

使用示例

Hard AIV-only(单kernel,chevron启动):

[object Object]

Soft AIC-only(单kernel,chevron启动):

[object Object]

register-ELF通用配对(AIC侧指定比例 + AIV侧)。注意:当前 [object Object] ST的MIX 1:2已改用 [object Object] 自动拆分、无需手写meta;下例仅演示register-ELF路径的宏配对写法:

[object Object]

register-ELF MIX 1:1 hard(AIC与AIV两侧均用 [object Object],AIV侧不要[object Object]):

[object Object]

无需手写meta的常见场景(完整对照见下文「编译与调度指南」场景速查表):

  • AIV-only Soft([object Object]
  • MIX 1:2 Hard / Soft、Hard AIC-only(Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品,[object Object] 自动拆分)
  • MIX 1:1 Soft(双流chevron)
[object Object]
[object Object]

本节以ST用例 为准,说明不同 [object Object] / 模式 / AIC:AIV比例下应采用的编译archMetaHost启动方式。Host侧通过 在运行时决定launch grid(910B1:24 AIC + 48 AIV;910B4:20 AIC + 40 AIV),同一套kernel二进制可跨芯片复用。

[object Object][object Object]undefined

Hard与Soft kernel 不可共用同一 [object Object](AIV-only / AIC-only等场景下soft会污染hard的FFTS配置导致hang);MIX 1:2的hard与soft因均走dav-c220自动拆分,可放在同一源文件的同一 [object Object] 中。

[object Object][object Object]
  • 编译:单个源文件 + 对应arch([object Object][object Object]),产出独立 [object Object]
  • 启动:[object Object][object Object][object Object] 由Host在运行时传入(ST中来自 [object Object])。
  • Hard AIV-only须在kernel上声明 [object Object]
[object Object]
  • 编译:[object Object];CMake使用 [object Object]
  • 启动:单次chevron [object Object];runtime按物理1:2拉起全部MIX参与者。
  • Kernel参数:[object Object][object Object] 作为标量从Host传入(AIC/AIV两侧读同一参数),以支持910B1/910B4等不同cube数。
  • Hard AIC-only特例:纯 [object Object] 无法建立AIC-only硬同步所需的FFTS上下文。须用 [object Object] MIX编译:AIC执行 [object Object],AIV为空stub;[object Object] 由Host传入。
[object Object]
  • 原因:ccec/bisheng路径下 [object Object] 恒为 2[object Object] 自动拆分物理固定 1:2,无法得到真1:1。
  • 编译:同一源文件分别以 [object Object][object Object])和 [object Object][object Object])各编一份 [object Object],链接为一个 [object Object];CMake使用 [object Object]
  • 启动:AIC与AIV分别在两个 [object Object] 上chevron [object Object][object Object][object Object] / [object Object] 由Host运行时传入。
[object Object]
  • 原因:Hard MIX同步需要单一MIX FFTS上下文;chevron自动拆分在ccec下做不到真1:1。
  • 编译:cube / vec各编带 [object Object][object Object],再以 [object Object] 生成register专用 [object Object],经 [object Object] 合成registration ELF;CMake使用 [object Object]
  • 启动:[object Object] + [object Object];device侧用 [object Object] 推导参与者数(register路径仅传 [object Object] 三个参数)。
[object Object][object Object][object Object]undefined
[object Object][object Object]undefined
[object Object]
  • 软件模式各平台GM写入路径:
    • Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品(AIC-only与MIX的AIC侧):AIC通过 [object Object](L1→GM DMA)写GM slot;MIX的AIV侧通过UB workspace写入。
    • Ascend 950PR/Ascend 950DT MIX:Ascend 950PR/Ascend 950DT AIC([object Object])不支持 [object Object],改为通过 [object Object] 信号委托同block的AIV subblock 0代写UB→GM。
  • Ascend 950PR/Ascend 950DT平台限制原因(对应「模式支持矩阵」):
    • AIC-only软件不可用:Ascend 950PR/Ascend 950DT AIC缺少 [object Object] 等独立写GM的DMA路径,无法实现GM轮询。
    • 硬件MIX不可用:[object Object] 在Ascend 950PR/Ascend 950DT([object Object])返回 [object Object](207000),取不到FFTS基地址。
    • AIC-only硬件:通过 [object Object] + [object Object] 实现,不需要 [object Object]
  • 软件模式要求所有参与core以相同顺序进入同一组barrier(基于单调代数计数,进入次数/顺序不一致会导致错配或死锁)。
  • [object Object] 不参与PTO的Event自动依赖编排:既不接受 [object Object],也不返回可被后续指令等待的 [object Object]。因此它不会自动等待前序数据指令(如 [object Object])完成,[object Object] 前后与数据指令之间的顺序与可见性需调用方自行保证(见「跨核GM通信注意事项」)。
  • 在auto构建路径([object Object])下,[object Object] 为no-op,不发射跨核硬件同步(与 [object Object] 等一致);真实同步只在manual kernel中发生。
[object Object]

[object Object] 只提供barrier 到达语义(hard / soft皆然),保证barrier前后业务数据的跨核cache可见性。当算子在barrier前各核写GM、barrier后各核读他核GM(如跨核histogram / 前缀和)时,调用方需自行满足以下两点,否则会读到脏数据或发生丢写。

[object Object]
  • 写方[object Object] / [object Object] 之后接 [object Object] + [object Object],把数据刷出到DDR。
  • 读方:读前 [object Object](invalidate)+ [object Object],确保读到DDR最新值而非本核旧cache。
  • 仅有 [object Object] / [object Object](核内流水同步)不足以保证跨核可见性。
  • 该要求与barrier模式无关:硬件FFTS barrier同样不刷cache,只保证「全员到达」的控制面顺序。
  • [object Object] 内部对自己的同步槽位已做完整 [object Object] + [object Object] 处理,但不会替调用方刷业务数据。
[object Object]
  • [object Object] / DMA以 32Byte cache line 为粒度操作;若相邻核slot共享同一条cache line,跨核刷新会互相覆盖 / 丢写。
  • 每核slot应按32Byte对齐并独占一条cache line[object Object] 场景即stride = 8,而非4)。
  • [object Object] 自身的同步槽位即按此设计:[object Object](见 [object Object]),调用方的业务workspace也应遵循同样的隔离原则。
[object Object][object Object]
[object Object]
[object Object]

软件模式需传入 已清零 的GM workspace与合法容量的UB/L1 Tile。[object Object] 须为 [object Object][object Object] 时忽略workspace,行为同无参 [object Object])。

[object Object]

MIX软件模式需同时提供UB与L1(Mat)Tile;Ascend 950PR/Ascend 950DT AIC侧通过代理路径写GM,详见「约束」一节。