Skip to content
版 本

printf

产 品 支 持 情 况

产 品

是 否 支 持

Ascend 950PR/Ascend 950DT

Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品

Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品

Atlas 200I/500 A2 推 理 产 品

Atlas 推 理 系 列 产 品AI Core

Atlas 推 理 系 列 产 品Vector Core

x

Atlas 训 练 系 列 产 品

x

Kirin X90

Kirin 9030

功 能 说 明

头 文 件 路 径 为:"basic_api/kernel_operator_dump_tensor_intf.h"

该 接 口 提 供CPU域/NPU域 调 试 场 景 下 的 格 式 化 输 出 功 能。

在 算 子kernel侧 实 现 代 码 中 需 要 输 出 日 志 信 息 的 地 方 调 用printf接 口 打 印 相 关 内 容。样 例 如 下:

C++
#include "kernel_operator.h"
AscendC::printf("fmt string %d\n", 0x123);

注 意

该 接 口 主 要 用 于 调 试 分 析,开 启 后 会 对 算 子 性 能 产 生 一 定 影 响,通 常 在 调 试 阶 段 使 用,生 产 环 境 建 议 关 闭。
默 认 情 况 下,调 用 该 接 口 就 会 打 印 相 关 内 容,开 发 者 可 以 参 考关 闭ASCENDC_DUMP说 明,按 需 关 闭 该 接 口 功 能。

函 数 原 型

C++
template <class... Args>
__aicore__ inline void printf(__gm__ const char* fmt, Args&&... args)

参 数 说 明

参 数 说 明

参 数 名 称输 入/输 出描 述
fmt输 入格 式 控 制 字 符 串,包 含 两 种 类 型 的 对 象:普 通 字 符 和 转 换 说 明。
•普 通 字 符 将 原 样 不 动 地 打 印 输 出。
•转 换 说 明 并 不 直 接 输 出 而 是 用 于 控 制printf中 参 数 的 转 换 和 打 印。每 个 转 换 说 明 都 由 一 个 百 分 号 字 符(%)开 始,以 转 换 说 明 结 束,从 而 说 明 输 出 数 据 的 类 型。
•支 持 的 转 换 类 型 包 括:
  ▪%d / %i:输 出 十 进 制 数,支 持 打 印 的 数 据 类 型:bool、int8_t、int16_t、int32_t、int64_t。
  ▪%f:输 出 实 数,支 持 打 印 的 数 据 类 型:half、float、bfloat16。
  ▪%x:输 出 十 六 进 制 整 数,支 持 打 印 的 数 据 类 型:int8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、int64_t、uint64_t。
  ▪%s:输 出 字 符 串。
  ▪%u:输 出unsigned类 型 数 据,支 持 打 印 的 数 据 类 型:bool、uint8_t、uint16_t、uint32_t、uint64_t。
  ▪%p:输 出 指 针 地 址。
注 意
•上 文 列 出 的 数 据 类 型 是NPU域 调 试 支 持 的 数 据 类 型,CPU域 调 试 时,支 持 的 数 据 类 型 和C/C++规 范 保 持 一 致。
•在 转 换 类 型 为%x,即 输 出 十 六 进 制 整 数 时,NPU域 上 的 输 出 为64位,CPU域 上 的 输 出 为32位。
args输 入附 加 参 数,个 数 和 类 型 可 变 的 参 数 列 表:根 据 不 同 的fmt字 符 串,函 数 可 能 需 要 一 系 列 的 附 加 参 数,每 个 参 数 包 含 了 一 个 要 被 插 入 的 值,替 换 了fmt参 数 中 指 定 的 每 个%标 签。参 数 的 个 数 应 与%标 签 的 个 数 相 同。

返 回 值 说 明

约 束 说 明

可 以 参 考utils目 录SIMD约 束 下 的printf说 明。

调 用 示 例

C++
#include "kernel_operator.h"

// 整 型 打 印:
AscendC::printf("fmt string %d\n", 0x123);

// 浮 点 型 打 印:
float a = 3.14;
AscendC::printf("fmt string %f\n", a);

// 指 针 打 印:
int b = 0x123;
int *c = &b;
AscendC::printf("TEST %p\n", c);

NPU模 式 下,程 序 运 行 时 打 印 效 果 如 下:

fmt string 291
fmt string 291
fmt string 3.140000
fmt string 3.140000
TEST 0x357f9c
TEST 0x357f9c

免 责 声 明:本 站 内 容 由 asc-devkit 仓 master 分 支 自 动 编 译 生 成,属 于 持 续 开 发 版 本,可 能 存 在 缺 陷,仅 供 预 览 与 参 考。如 需 稳 定 及 商 用 资 料,请 查 阅 官 方 昇 腾 社 区