pypto_pro.language.PipeType#

产品支持情况#

  • Ascend 950PR/Ascend 950DT:支持

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持

  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持

功能说明#

硬件执行单元(流水)的类型枚举,标记某个操作运行在哪条流水上。是同步控制(sync_srcsync_dstmutex_lock等)里set_pipe/wait_pipe/pipe参数的取值来源。

AI处理器内部有多条并行流水,各自负责不同阶段的数据搬运和计算。正确理解每条流水的职责是写好同步控制的基础。

原型定义#

PYPTO_DECLARE_ENUM(
    PipeType,
    MTE1,
    MTE2,
    MTE3,
    M,
    V,
    S,
    FIX,
    ALL
)

参数说明#

参数值

说明

MTE1

搬运流水1,负责L1 Buffer → L0A Buffer/L0B Buffer/BiasTable Buffer/L0A_MX Buffer/L0B_MX Buffer的数据搬运。

MTE2

搬运流水2,负责GM → L1 Buffer/UB的load搬入。

MTE3

搬运流水3,负责UB → GM的store搬出和UB → L1 Buffer的move搬运。

M

矩阵计算流水,负责Cube/MAD等matmul计算。

V

向量计算流水,负责element-wise、reduce、cast、quant、dequant等向量操作。

S

标量流水,负责getval、setval等标量操作。

FIX

Fixpipe流水,负责累加器结果读出(L0C Buffer → UB/GM/L1 Buffer)以及随路量化/反量化(L0C Buffer → UB/GM)等操作。

ALL

表示本AI Core的全部流水,包括V、M、MTE1、MTE2、MTE3和FIX等流水。

约束说明#

数据搬运场景#

loadmovestore的流水由源/目的内存空间自动决定:

操作

源 → 目的

流水

load

GM → L1 Buffer/UB

MTE2

store

UB → GM

MTE3

store

L0C Buffer → GM

FIX

move

L1 Buffer → L0A Buffer/L0B Buffer/BiasTable Buffer/L0A_MX Buffer/L0B_MX Buffer

MTE1

move

L1 Buffer → Fixpipe Buffer

FIX

move

L1 Buffer → UB

V

move

L0C Buffer → UB

FIX

move

UB → UB

V

move

UB → L1 Buffer

MTE3

move

其余

V

流水同步场景#

典型同步模式:

场景

set_pipe

wait_pipe

说明

load后V才能计算

MTE2

V

确保GM→UB搬运完成

计算后MTE3才能store

V

MTE3

确保向量计算完成

store后MTE2才能load

MTE3

MTE2

确保UB→GM搬出完成再搬入新数据

L1 Buffer→L0A Buffer搬运后M才能计算

MTE1

M

确保矩阵操作数就位

matmul后FIX才能读出结果

M

FIX

确保矩阵计算完成

标量读写

MTE2/MTE3

S

getval/setval走标量流水

调用示例#

流水同步#

import pypto_pro.language as pl
# load 后同步:MTE2 置位,V 等待
pl.system.sync_src(set_pipe=pl.PipeType.MTE2, wait_pipe=pl.PipeType.V, event_id=0)
pl.system.sync_dst(set_pipe=pl.PipeType.MTE2, wait_pipe=pl.PipeType.V, event_id=0)

# 计算后同步:V 置位,MTE3 等待
pl.system.sync_src(set_pipe=pl.PipeType.V, wait_pipe=pl.PipeType.MTE3, event_id=1)
pl.system.sync_dst(set_pipe=pl.PipeType.V, wait_pipe=pl.PipeType.MTE3, event_id=1)