Skip to content
版 本

ASC_CPU_LOG

产 品 支 持 情 况

产 品是 否 支 持
Ascend 950PR/Ascend 950DT
Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品
Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品
Atlas 200I/500 A2 推 理 产 品
Atlas 推 理 系 列 产 品 AI Core
Atlas 推 理 系 列 产 品 Vector Corex
Atlas 训 练 系 列 产 品

功 能 说 明

提 供Host侧 打 印Log的 功 能。开 发 者 可 以 在 算 子 的TilingFunc代 码 中 使 用ASC_CPU_LOG_XXX接 口 来 输 出 相 关 内 容。一 般 情 况 下,开 发 者 也 可 以 选 择 使 用printf等Host侧 通 用 的 打 印 方 式 进 行 调 试。然 而,在Tiling下 沉 场 景 中,由 于Tiling函 数 运 行 在AI CPU上,必 须 使 用 本 接 口 进 行 打 印。

  • 非Tiling下 沉 场 景,日 志 输 出 到plog中。比 如,debug级 别 的 日 志 输 出 到/root/ascend/log/debug/plog中,日 志 级 别 通 过 环 境 变 量ASCEND_GLOBAL_LOG_LEVEL控 制。会 打 印 日 志 级 别、时 间 戳、日 志 所 在 代 码 行 和 日 志 所 在 函 数 名。

  • Tiling下 沉 场 景,日 志 不 会 输 出 到plog中,而 是 需 要 落 盘 并 进 行 解 析。算 子 运 行 之 前 需 要 开 启Dump功 能,使 得 日 志Dump功 能 生 效。如 何 开 启Dump功 能 依 赖 于 具 体 的 网 络 运 行 方 式。以TorchAir图 模 式 为 例,需 要 配 置enable_dump、dump_path、dump_mode等Dump参 数。详 细 说 明 可 参 考《Ascend Extension for PyTorch》 中 的“《Pytorch图 模 式 使 用(TorchAir)》 >GE图 模 式 > GE图 模 式 功 能 > 算 子data dump功 能”章 节。示 例 如 下:

    Text
    import torch_npu, torchair
    config = torchair.CompilerConfig()
    # data dump开 关:[必 选]
    config.dump_config.enable_dump = True
    # dump类 型:[可 选],all代 表dump所 有 数 据
    config.dump_config.dump_mode = "all"
    # dump路 径:[可 选],缺 省 为 当 前 目 录
    config.dump_config.dump_path = '/home/dump'
    ...
    

    算 子 运 行 完 成 后,在Dump数 据 存 放 路 径 下 会 有 日 志Dump文 件 生 成,文 件 名 命 名 规 则 格 式 为_{op_type}.{op_name}.{taskid}.{stream_id}.{timestamp},其 中{op_type}表 示 算 子 类 型,{op_name}表 示 算 子 名 称,{taskid}表 示 调 用 算 子 计 算 接 口 的taskId,{stream_id}表 示 算 子 具 体 执 行 的 流Id,{timestamp}_表 示 时 间 戳。

需 要 包 含 的 头 文 件

Text
#include "utils/log/asc_cpu_log.h"

函 数 原 型

Text
#define ASC_CPU_LOG_ERROR(format, ...)
#define ASC_CPU_LOG_INFO(format, ...)
#define ASC_CPU_LOG_WARNING(format, ...)
#define ASC_CPU_LOG_DEBUG(format, ...)

参 数 说 明

表 1 参 数 说 明

参 数 名输 入/输 出描 述
format输 入格 式 控 制 字 符 串,包 含 两 种 类 型:普 通 字 符 和 转 换 说 明。
- 普 通 字 符 将 直 接 输 出。
- 转 换 说 明 用 于 控 制 参 数 的 格 式 化 输 出。每 个 转 换 说 明 以 百 分 号(%)开 始,后 跟 类 型 说 明 符,用 于 指 定 输 出 数 据 的 类 型。支 持 的 数 据 类 型 和C/C++规 范 保 持 一 致。
...输 入附 加 参 数,数 量 和 类 型 可 变 的 参 数 列 表。其 数 量 和 类 型 需 与 格 式 控 制 字 符 串 中 的%标 签 数 量 和 类 型 匹 配。每 个 参 数 将 替 换 格 式 字 符 串 中 的 相 应%标 签,以 实 现 预 期 的 输 出 效 果。

返 回 值 说 明

约 束 说 明

Tiling下 沉 场 景 下,若 使 用 旧 版 本CANN包(不 支 持ASC_CPU_LOG接 口)生 成 的 自 定 义 算 子 工 程,需 特 别 注 意 兼 容 性 问 题,此 时 调 用 该 接 口 无 法 输 出 日 志。您 可 以 通 过 查 看 自 定 义 算 子 工 程 下cmake/device_task.cmake中 有 无DEVICE_OP_LOG_BY_DUMP字 段 来 确 认 当 前 工 程 是 否 支 持 日 志Dump功 能,如 果 未 找 到 该 字 段,则 需 要 重 新 生 成 自 定 义 算 子 工 程。

调 用 示 例

Text
#include "utils/log/asc_cpu_log.h"

namespace optiling {
static ge::graphStatus TilingFunc(gert::TilingContext *context)
{
    TilingData tiling;
    uint32_t totalLength = context->GetInputShape(0)->GetOriginShape().GetShapeSize();
    ...
    ASC_CPU_LOG_ERROR("I am ERROR log: %d\n", 0x123);
    ASC_CPU_LOG_INFO("I am INFO log: %d\n", 0x123);
    ASC_CPU_LOG_WARNING("I am WARNING log: %d\n", 0x123);
    ASC_CPU_LOG_DEBUG("I am DEBUG log: %d\n", 0x123);
    ...
}
} // namespace optiling

非Tiling下 沉 场 景,打 印 会 输 出 至xxxxxxx_2025xxxxxxxxxxxxx.log中,结 果 示 例 如 下:

Text
[ERROR] ASCENDCKERNEL(xxx,execute_add_op):2025-xx-xx-xx:xx:xx.xxx.xxx [/xxx/xxx.cpp:xx][TilingFunc] I am ERROR log: 291
[INFO] ASCENDCKERNEL(xxx,execute_add_op):2025-xx-xx-xx:xx:xx.xxx.xxx [/xxx/xxx.cpp:xx][TilingFunc] I am INFO log: 291
[WARNING] ASCENDCKERNEL(xxx,execute_add_op):2025-xx-xx-xx:xx:xx.xxx.xxx [/xxx/xxx.cpp:xx][TilingFunc] I am WARNING log: 291
[DEBUG] ASCENDCKERNEL(xxx,execute_add_op):2025-xx-xx-xx:xx:xx.xxx.xxx [/xxx/xxx.cpp:xx][TilingFunc] I am DEBUG log: 291

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