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])