DumpAccChkPoint
产 品 支 持 情 况
功 能 说 明
头 文 件 路 径 为:"basic_api/kernel_operator_dump_tensor_intf.h"。
该 接 口Dump指 定Tensor的 内 容。同 时 支 持 打 印 自 定 义 的 标 签(仅 支 持uint32_t数 据 类 型 的 信 息),比 如 打 印 当 前 行 号 等。区 别 于DumpTensor,使 用 该 接 口 可 以 支 持 指 定 偏 移 位 置 的Tensor打 印。
在 算 子kernel侧 实 现 代 码 中 需 要 打 印 偏 移 后Tensor数 据 的 地 方,调 用DumpAccChkPoint接 口 打 印 相 关 内 容。样 例 如 下:
C++
AscendC::DumpAccChkPoint(srcLocal, 5, 32, dataLen);
注 意
该 接 口 主 要 用 于 调 试 分 析,开 启 后 会 对 算 子 性 能 产 生 一 定 影 响,通 常 在 调 试 阶 段 使 用,生 产 环 境 建 议 关 闭。
默 认 情 况 下,调 用 该 接 口 就 会 打 印 相 关 内 容,开 发 者 可 以 参 考关 闭ASCENDC_DUMP说 明,按 需 关 闭 该 接 口 功 能。
函 数 原 型
C++
template <typename T>
__aicore__ inline void DumpAccChkPoint(const LocalTensor<T> &tensor, uint32_t index, uint32_t countOff, uint32_t dumpSize)
template <typename T>
__aicore__ inline void DumpAccChkPoint(const GlobalTensor<T> &tensor, uint32_t index, uint32_t countOff, uint32_t dumpSize)
参 数 说 明
表 1 模 板 参 数 说 明
| 参 数 名 称 | 描 述 |
|---|---|
| T | 需 要dump的Tensor的 数 据 类 型。 |
表 2 参 数 说 明
| 参 数 名 称 | 输 入/输 出 | 描 述 |
|---|---|---|
| tensor | 输 入 | 需 要dump的Tensor。 •待dump的tensor位 于Unified Buffer/L1 Buffer/L0C Buffer时 使 用LocalTensor类 型 的tensor参 数 输 入。 •待dump的tensor位 于Global Memory时 使 用GlobalTensor类 型 的tensor参 数 输 入。 |
| index | 输 入 | 用 户 自 定 义 附 加 信 息(行 号 或 其 他 自 定 义 数 字)。 |
| countOff | 输 入 | 偏 移 元 素 个 数。偏 移 后 的Tensor地 址 需 要 满 足 所 在 物 理 位 置 的 对 齐 约 束。具 体 参 考通 用 地 址 对 齐 约 束。 |
| dumpSize | 输 入 | 需 要dump的 元 素 个 数。 |
数 据 类 型
Ascend 950PR/Ascend 950DT,T支 持 的 数 据 类 型 为:bool、int8_t、uint8_t、fp4x2_e2m1_t、fp4x2_e1m2_t、hifloat8_t、fp8_e8m0_t、fp8_e5m2_t、fp8_e4m3fn_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t。
Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品,T支 持 的 数 据 类 型 为:bool、int8_t、uint8_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t。
Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品,T支 持 的 数 据 类 型 为:bool、int8_t、uint8_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t。
Atlas 200I/500 A2 推 理 产 品,T支 持 的 数 据 类 型 为:bool、int8_t、uint8_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t。
Atlas 推 理 系 列 产 品 AI Core,T支 持 的 数 据 类 型 为:bool、int8_t、uint8_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t。
Atlas 训 练 系 列 产 品,T支 持 的 数 据 类 型 为:bool、int8_t、uint8_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t。
Kirin X90,T支 持 的 数 据 类 型 为:bool、int8_t、uint8_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t。
Kirin 9030,T支 持 的 数 据 类 型 为:bool、int8_t、uint8_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t。
返 回 值 说 明
无
约 束 说 明
- 当 前 仅 支 持 打 印 存 储 位 置 为Unified Buffer/L1 Buffer/L0C Buffer/Global Memory的Tensor信 息。
针 对Ascend 950PR/Ascend 950DT,使 用 该 接 口 打 印L1 Tensor数 据 时,HDK版 本 需 要 至 少 升 级 到25.7.0以 上。
- 操 作 数 地 址 对 齐 要 求 请 参 见[通 用 地 址 对 齐 约 束](../../../通 用 说 明 和 约 束.md#section796754519912)。 - 单 次 调 用DumpAccChkPoint打 印 的 数 据 总 量 不 可 超 过30KB(还 包 括 少 量 框 架 需 要 的 头 尾 信 息,通 常 可 忽 略)。使 用 时 应 注 意,如 果 超 出 这 个 限 制,则 数 据 不 会 被 打 印。 调 用 示 例
C++
constexpr uint32_t totalLength = 256; // 参 与 搬 运 的 元 素 个 数
AscendC::LocalTensor<half> srcLocal;
AscendC::GlobalTensor<half> srcGlobal;
AscendC::DataCopy(srcLocal, srcGlobal, totalLength * sizeof(half));
uint32_t index = 56; // 用 户 自 定 义 附 加 信 息,此 处 传 入DumpAccChkPoint指 令 的 行 号
uint32_t countOff = 32; // 偏 移 元 素 个 数,从srcLocal[32]开 始 打 印
uint32_t dumpSize = 128; // dump的 元 素 个 数,从srcLocal[32]开 始 打 印128个 元 素 个 数
AscendC::DumpAccChkPoint(srcLocal, index, countOff, dumpSize);
打 印 结 果 如 下:
DumpTensor: desc=56, addr=0x40, data_type=float16, position=UB, dump_size=15
[4.710938, 4.707031, 4.773438, 2.271484, 4.347656, 2.359375, 1.284180, 1.073242, 1.242188, 2.298828, 0.521973, 1.099609, 1.880859, 1.226562, 3.916016]