下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

上板时间戳打点功能

功能介绍

算子NPU上板调测时支持时间戳(当前系统cycle数)打点,以获取算子调试各阶段耗时信息。

  • 该功能仅在NPU上板调测场景下开启,其他场景不支持,可以与Profiling数据采集功能配套使用。
  • 系统cycle数指系统最小的计时单位,它由系统主时钟频率决定,而系统主时钟频率是指每秒钟的cycle数。若换算成时间需要按照50MHz的频率,时间单位为us,换算公式为:time = (cycle数/50) us 。
  • 该功能仅在如下产品支持:

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

使用方法(命令行)

  1. 按需调用AscendCTimeStamp自定义打点标识,接口说明参见表2,样例如下:
     AscendC::AscendCTimeStamp(200000000);
  2. NPU调测场景执行命令如下,使能Dump开关。
     ascendebug kernel --backend npu --dump-mode time_stamp ... {其他NPU调测参数}

    --dump-mode设为time_stamp,开启时间戳打点,其他参数参考NPU调测参数按需配置。

  3. 查看结果文件,详细说明参见产物说明

使用方法(API)

  1. 按需调用AscendCTimeStamp自定义打点标识,接口说明参见表2,样例如下:
     AscendC::AscendCTimeStamp(200000000);
  2. 调用算子NPU编译及运行接口,对应options配置为dump_mode='time_stamp'。
    # 调用编译接口
    compile_npu_options = ascendebug.CompileNpuOptions(dump_mode='time_stamp')
    name, kernel_file, extern = op_executor.compile_custom_npu(customize_path, tiling_info.tiling_key, compile_npu_options)
    # 调用运行接口
    run_npu_options = ascendebug.RunNpuOptions()
    npu_compile_info = ascendebug.NpuCompileInfo(syncall=extern['cross_core_sync'], task_ration=extern['task_ration'], dump_mode='time_stamp')
    op_executor.run_npu(kernel_file, run_npu_options, npu_compile_info=npu_compile_info, tiling_info=tiling_info)
  3. 查看结果文件,详细说明参见产物说明

产物说明

时间戳打点信息存放在${root}/${work_dir}/npu路径下,其中${root}表示当前操作路径,${work_dir}表示调测工作空间,默认为/debug_workspace/${op_type}目录,${op_type}为算子名。目录结构示例如下:

├ ${op_type}    // 算子名
├── npu
│   ├── dump
│       ├── PARSER_${timestamp}
│           ├── dump_data
│               ├──0                                  // core number
│                   ├──time_stamp_core_0.csv         // 时间戳打点落盘文件
│               ├──1
│                   ├──time_stamp_core_1.csv
│           ├── parser.log                           // 调测过程中的log文件

log文件记录了运行过程中的日志信息,示例如下:

[INFO]: ================ block.0 begin ==============
[INFO]: [Meta Info] block num: 10, core type: VEC, isMix: False
[INFO]: ================ block.0 end ================
[INFO]: ================ block.1 begin ==============
[INFO]: [Meta Info] block num: 10, core type: VEC, isMix: False
 [INFO]: ================ block.1 end ================
[INFO]: ================ block.2 begin ==============
[INFO]: [Meta Info] block num: 10, core type: VEC, isMix: False
[INFO]: ================ block.2 end ================
[INFO]: ..........

csv文件记录了内置时间戳打点和用户自定义的200000000时间戳打点信息,样例如表1所示。

表1 时间戳打点信息

打点标识

Cycle

Cycle间隔

TIME_STAMP_WRAP_FIRST

278333927352610

278333927352610

TIME_STAMP_WRAP_INIT_DUMP

278333927352682

72

TIME_STAMP_TPIPE

278333927352703

21

200000000

278333927352707

4

TIME_STAMP_BUFFER

278333927352725

18

TIME_STAMP_BUFFER

278333927352733

8

TIME_STAMP_BUFFER

278333927352739

6

接口说明

表2 AscendCTimeStamp接口说明表

函数原型

__aicore__ inline void AscendCTimeStamp(uint32_t descId);

函数功能

用于打印上板时间戳。

参数(IN)

descId

当前时间戳的唯一标识号,系统内部使用0x000-0xfff范围内的数字标识内部打点(详见表3),用户自定义的打点标识必须大于0xfff。

参数(OUT)

NA

-

返回值

NA

-

使用约束

仅在NPU上板场景使用,其他场景不支持。

调用示例

AscendC::AscendCTimeStamp(200000000);
表3 内部打点标识

DESC_ID

数值

说明

TIME_STAMP_WRAP_FIRST

0x000

kernel wrap函数入口打点位置。

TIME_STAMP_WRAP_MC2_CTX

0x001

kernel wrap函数中设置MC2相关参数的打点位置。

TIME_STAMP_WRAP_INIT_DUMP

0x002

初始化dump空间后的打点位置。

TIME_STAMP_WRAP_FFTS_ADDR

0x003

设置ffts的addr信息后的打点位置。

TIME_STAMP_WRAP_CLEAR_WK_SPAC

0x004

workspace清理后的打点位置。

TIME_STAMP_TPIPE

0x030

AscendC::Tpipe构造函数后的打点位置。

TIME_STAMP_BUFFER

0x031

AscendC::IniBuffer后的打点位置。

TIME_STAMP_MATMUL_SERVER

0x060

注册matmul时调用server后的打点位置。

TIME_STAMP_MATMUL_SERVER_INIT

0x061

注册matmul时初始化server后的打点位置。

TIME_STAMP_MATMUL_SERVER_OBJ

0x062

注册matmul时matmul server构造obj后的打点位置。

TIME_STAMP_MATMUL_MATRIX_KFC

0x063

注册matmul时kfc调用后的打点位置。

TIME_STAMP_MATMUL_CLIENT_KFC

0x064

注册matmul时client kfc调用后的打点位置。

TIME_STAMP_MATMUL_WAIT_EVE

0x065

注册matmul时waitevent后的打点位置。

TIME_STAMP_MATMUL_OBJ

0x066

注册matmul时获取obj后的打点位置。

TIME_STAMP_TILING_DATA

0x090

GET_TILING_DATA后的打点位置。

TIME_STAMP_TILING_DATA_STRUCT

0x091

GET_TILING_DATA_WITH_STRUCT后的打点位置。

TIME_STAMP_TILING_DATA_MEMBER

0x092

GET_TILING_DATA_MEMBER后的打点位置。

TIME_STAMP_MAX

0xfff

内部定义最大值。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词