printf
产 品 支 持 情 况
功 能 说 明
该 接 口 提 供AI CPU算 子Kernel调 试 场 景 下 的 格 式 化 输 出 功 能,默 认 将 输 出 内 容 解 析 并 打 印 在 屏 幕 上。
需 要 包 含 的 头 文 件
Text
#include "aicpu_api.h"
函 数 原 型
Text
void printf(const char* fmt, ...)
参 数 说 明
返 回 值 说 明
无
约 束 说 明
该 接 口 仅 支 持 通 过<<<...>>>调 用,并 在 异 构 编 译 场 景 使 用。
该 接 口 不 支 持 打 印 除 换 行 符 之 外 的 其 他 转 义 字 符。
该 接 口 使 用Dump功 能,所 有 使 用Dump功 能 的 接 口 在 每 个 核 上Dump的 数 据 总 量 不 可 超 过1M。请 开 发 者 自 行 控 制 待 打 印 的 内 容 数 据 量,超 出 则 不 会 打 印。
使 用 该 接 口 时,若 采 用bisheng命 令 行 编 译,开 发 者 需 要 手 动 链 接 相 关 的 静 态 库;而 使 用CMake编 译 时,框 架 会 自 动 处 理 链 接 问 题,无 需 开 发 者 额 外 关 注。具 体 编 译 命 令 如 下:通 过--cce-aicpu-laicpu_api为Device链 接libaicpu_api.a,通 过--cce-aicpu-L指 定libaicpu_api.a的 库 路 径。
Text$bisheng -O2 foo.aicpu --cce-aicpu-L${INSTALL_DIR}/lib64/device/lib64 --cce-aicpu-laicpu_api -I${INSTALL_DIR}/include/ascendc/aicpu_api -c -o foo.aicpu.o${INSTALL_DIR}请 替 换 为CANN软 件 安 装 后 文 件 存 储 路 径。以root用 户 安 装 为 例,安 装 后 文 件 默 认 存 储 路 径 为:/usr/local/Ascend/cann。
调 用 示 例
在 算 子Kernel侧 实 现 代 码 中 需 要 输 出 日 志 信 息 的 地 方 调 用printf接 口 打 印 相 关 内 容。样 例 如 下:
Text
#include "aicpu_api.h"
// 整 型 打 印:
AscendC::printf("fmt string %d\n", 0x123);
// 浮 点 型 打 印:
float a = 3.14;
AscendC::printf("fmt string %f\n", a);
// 指 针 打 印:
int b = 10;
int *c = &b;
AscendC::printf("TEST %p\n", c);
程 序 运 行 时 打 印 效 果 如 下:
Text
fmt string 291
fmt string 3.140000
TEST 0xdfffd6fddd1c