pypto_pro.language.pto_assert#

产品支持情况#

  • Ascend 950PR/Ascend 950DT:支持

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

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

功能说明#

运行时断言:条件为假时打印错误信息到设备日志。支持纯文本和printf风格的格式化消息。条件为真时静默通过,无输出。

[!CAUTION]注意 当前实现中,断言失败仅打印日志,不会中止Kernel执行或抛出Host侧异常。具体行为以目标设备的实际执行结果为准。

函数原型#

pypto_pro.language.pto_assert(
    condition: bool,
    format_str: Optional[str] = None,
    *args,
    loc: bool = False,
) -> None

参数说明#

参数

输入/输出

说明

condition

输入

断言条件,必须为标量布尔值(dtype为BOOL),也接受Python True/False。非布尔标量(如INT32)会报TypeError。条件表达式的源码文本由编译器自动提取,用于默认输出。

format_str

输入

可选,错误消息格式串,必须是编译时常量,不能是运行时变量。不提供时使用空消息,此时额外的*args不会写入IR,也不会参与输出;输出固定为Assertion failed: <条件表达式源码>。提供时,先输出断言失败信息,再追加一行格式化消息。格式说明符规则同pypto_pro.language.printf

*args

输入

可选,格式串中的参数值。支持Python int、Python float、Python bool和Kernel标量表达式;使用%p时还支持Ptr指针。数量和类型须与format_str中的格式说明符匹配。

loc

输入

可选,是否在输出前打印源文件/行号,取值为True或False(默认)。

约束说明#

无。

返回值说明#

无。

调用示例#

import pypto_pro.language as pl
# 仅条件
pl.pto_assert(flag)

# 条件 + 纯文本消息
pl.pto_assert(flag, "flag is false")

# 条件 + 格式化消息
pl.pto_assert(offset != 2, "offset=%d", offset)

# 带源码位置
pl.pto_assert(flag, "unexpected state", loc=True)

示例输出(条件为假时):

调用

输出

pypto_pro.language.pto_assert(flag)

Assertion failed: flag

pypto_pro.language.pto_assert(flag, “flag is false”)

Assertion failed: flag
flag is false

pypto_pro.language.pto_assert(offset != 2, “offset=%d”, offset)

Assertion failed: offset != 2
offset=2(假设offset值为2)

pypto_pro.language.pto_assert(flag, “unexpected state”, loc=True)

Assertion failed: flag
unexpected state

条件为真时无输出,断言静默通过。