pypto_pro.language.PipeType#
产品支持情况#
Ascend 950PR/Ascend 950DT:支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
功能说明#
硬件执行单元(流水)的类型枚举,标记某个操作运行在哪条流水上。是同步控制(sync_src/sync_dst、mutex_lock等)里set_pipe/wait_pipe/pipe参数的取值来源。
昇腾芯片内部有多条并行流水,各自负责不同阶段的数据搬运和计算。正确理解每条流水的职责是写好同步控制的基础。
取值#
取值 |
说明 |
硬件角色 |
|---|---|---|
|
搬运流水1 |
L1 → L0A/L0B/Bias/ScaleLeft/ScaleRight(矩阵操作数与scale搬运) |
|
搬运流水2 |
GM → L1/UB(load搬入) |
|
搬运流水3 |
UB → GM(store搬出)、UB → L1(move搬运) |
|
矩阵计算流水 |
Cube/MAD(matmul计算) |
|
向量计算流水 |
element-wise、reduce、cast等向量操作 |
|
标量流水 |
getval/setval等标量操作 |
|
fixpipe流水 |
累加器结果读出(L0C → UB/GM/L1)、quantization/反量化等 |
|
本AI Core的全部流水 |
V/M/MTE1/MTE2/MTE3/FIX等流水 |
补充说明#
load、move和store的流水由源/目的内存空间自动决定:
操作 |
源 → 目的 |
流水 |
|---|---|---|
|
GM → L1/UB |
MTE2 |
|
Vec(UB) → GM |
MTE3 |
|
Acc(L0C) → GM |
FIX |
|
Mat(L1) → Left/Right(L0A/L0B)/Bias/ScaleLeft/ScaleRight |
MTE1 |
|
Mat(L1) → Scaling |
FIX |
|
Mat(L1) → Vec(UB) |
V |
|
Acc(L0C) → Vec(UB) |
FIX |
|
Vec(UB) → Vec(UB) |
V |
|
Vec(UB) → Mat(L1) |
MTE3 |
|
其余 |
V |
典型同步模式:
场景 |
set_pipe |
wait_pipe |
说明 |
|---|---|---|---|
load后V才能计算 |
MTE2 |
V |
确保GM→UB搬运完成 |
计算后MTE3才能store |
V |
MTE3 |
确保向量计算完成 |
store后MTE2才能load |
MTE3 |
MTE2 |
确保UB→GM搬出完成再搬入新数据 |
L1→L0A搬运后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)