pypto_pro.language.system.bar_all#
产品支持情况#
Ascend 950PR/Ascend 950DT:支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
功能说明#
等待当前AI Core内V、M、MTE1、MTE2、MTE3和FIX等流水中此前下发的操作完成。
函数原型#
pypto_pro.language.system.bar_all() -> None
参数说明#
无。
约束说明#
支持在Cube区段或Vector区段中调用。
仅同步当前AI Core内的全部流水,不是多个AI Core之间的全局屏障。多核同步请使用pypto_pro.language.system.sync_all。
本接口会等待当前AI Core内全部流水此前下发的操作完成,可能影响性能。只需要等待一条流水时,应使用对应的单流水屏障接口。
返回值说明#
无。
调用示例#
import pypto_pro.language as pl
@pl.jit()
def bar_all_kernel(
x: pl.Tensor[[128, 64], pl.DT_FP16],
out: pl.Tensor[[128, 64], pl.DT_FP16],
):
tt = pl.TileType(shape=[64, 64], dtype=pl.DT_FP16, target_memory=pl.MemorySpace.Vec)
tile_x = pl.make_tile(tt, addr=0x0000)
tile_out = pl.make_tile(tt, addr=0x2000)
with pl.section_vector():
for i in pl.range(0, 128, 64):
pl.system.bar_all()
pl.load(tile_x, x, [i, 0])
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)
pl.add(tile_out, tile_x, tile_x)
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)
pl.store(out, tile_out, [i, 0])