当前 ascendc_assert 消息形式在 AICore 断言通道已可用,但 SIMT 编程模型下虽然函数签名已存在,格式串与变长实参会被丢弃并退化为无消息形式,断言失败时无法输出用户自定义上下文信息。
ascendc_assert
本需求面向 ascend950pr_9599(dav-3510),实现 SIMT 下 ascendc_assert(条件表达式, 格式串, 变长实参) 的消息形式,覆盖 pure 与 mixed 两种形态,以及通过 aclnn 两段式接口由 runtime 拉起 kernel 的场景。
ascendc_assert(条件表达式, 格式串, 变长实参)
CPU debug 行为保持不变:消息形式继续退化为无消息形式,仅输出断言条件文本;__simd_vf__ 通道不在本需求范围内。
__simd_vf__
AscendC SIMT API 能力补齐需求,来源于 SIMT 断言能力与 AICore 断言通道行为对齐需求。
impl/utils/debug/asc_printf_simt_impl.h
impl/utils/debug/asc_assert_simt_impl.h
__assert_fail_msg
include/utils/debug/asc_assert.h
tests/api/simt_api/ascend950pr_9599/
需求已在开发中,预计930交付
Backgroud(背景信息)
当前
ascendc_assert消息形式在 AICore 断言通道已可用,但 SIMT 编程模型下虽然函数签名已存在,格式串与变长实参会被丢弃并退化为无消息形式,断言失败时无法输出用户自定义上下文信息。本需求面向 ascend950pr_9599(dav-3510),实现 SIMT 下
ascendc_assert(条件表达式, 格式串, 变长实参)的消息形式,覆盖 pure 与 mixed 两种形态,以及通过 aclnn 两段式接口由 runtime 拉起 kernel 的场景。CPU debug 行为保持不变:消息形式继续退化为无消息形式,仅输出断言条件文本;
__simd_vf__通道不在本需求范围内。Origin(信息来源)
AscendC SIMT API 能力补齐需求,来源于 SIMT 断言能力与 AICore 断言通道行为对齐需求。
Benefit / Necessity (价值/作用)
Design(设计方案)
impl/utils/debug/asc_printf_simt_impl.h:增加按指定字节数写入字符串、断言头前缀长度计算、断言头与用户格式串连续布局及数据写入,并增加断言消息形式入口;保持无消息路径不变。impl/utils/debug/asc_assert_simt_impl.h:pure 与 mixed 形态的两个__assert_fail_msg重载调用消息入口并在写入后 trap,不再丢弃格式串及变长实参。include/utils/debug/asc_assert.h不变,CPU debug 下继续退化为无消息形式。tests/api/simt_api/ascend950pr_9599/增加覆盖 pure/mixed、aclnn、条件成立/失败、三类格式串、多线程与线程发散、缓冲未配齐及 CPU debug 退化行为的 UT。验收标准