文件最后提交记录最后更新时间
3 个月前
3 个月前
3 个月前
3 个月前
README

MmadCustomDump样例

概述

本样例以矩阵乘计算为例,介绍核函数维测接口asc_dump和printf的使用方法,实现NPU侧函数张量数据的Dump和运算参数的输出。

支持的产品

  • Ascend 950PR/Ascend 950DT
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品

目录结构介绍

├── 02_dump
│   ├── CMakeLists.txt         // 编译工程文件
│   ├── half.hpp               // 数据类型依赖文件
│   └── mmad_custom_dump.asc   // Ascend C样例实现 & 调用样例

样例描述

  • 样例功能:
    样例基于矩阵乘计算为背景,演示asc_dump系列接口(含asc_dump_gm、asc_dump_ubuf、asc_dump_cbuf和asc_dump_l1buf)在NPU侧样例核函数中的使用方法,通过调用上述接口实现不同物理位置上的张量数据可视化。

    此外,该系列接口兼容AscendC::DumpTensor接口。但后续开发中,建议优先使用asc_dump系列接口;若需Dump指定偏移位置的数据,由于asc_dump系列暂不支持该能力,可继续使用DumpAccChkPoint接口。

  • 样例规格:

    • Mmad样例:
      矩阵乘规格:M = 16, N = 16, K = 16,详细信息如下表:
      样例类型(OpType)Mmad
      样例输入nameshapedata typeformat
      a[M, K]halfND
      b[K, N]halfND
      样例输出c[M, N]floatND
      核函数名mmad_custom
  • 样例实现:
    1).asc_dump系列接口的函数签名一样,仅函数名存在区分,这种区分用以表示要Dump的具体位置:

    __aicore__ inline void asc_dump_gm(__gm__ T* input, uint32_t desc, uint32_t dumpSize);
    __aicore__ inline void asc_dump_ubuf(__ubuf__ T* input, uint32_t desc, uint32_t dumpSize);
    __aicore__ inline void asc_dump_cbuf(__cc__ T* input, uint32_t desc, uint32_t dumpSize);
    __aicore__ inline void asc_dump_l1buf(__cbuf__ T* input, uint32_t desc, uint32_t dumpSize);
    

    2).在数据搬入阶段,通过asc_dump_gm接口Dump位于全局内存 (GM) 中的输入矩阵A、矩阵B与偏执矩阵Bias的原始数据;待数据加载至L0C并完成矩阵乘计算后,再通过asc_dump_cbuf接口Dump并输出L0C中的最终计算结果,完整呈现数据从GM输入到L0C计算完成的全流程状态。

编译运行

在本样例根目录下执行如下步骤,编译并执行样例。

  • 配置环境变量
    请根据当前环境上CANN开发套件包的安装方式,选择对应配置环境变量的命令。

    • 默认路径,root用户安装CANN软件包

      source /usr/local/Ascend/cann/set_env.sh
      
    • 默认路径,非root用户安装CANN软件包

      source $HOME/Ascend/cann/set_env.sh
      
    • 指定路径install_path,安装CANN软件包

      source ${install_path}/cann/set_env.sh
      
  • 样例执行

    mkdir -p build && cd build;      # 创建并进入build目录
    cmake ..;make -j;                # 编译工程
    ./demo                           # 执行编译生成的可执行程序,执行样例
    

    执行结果如下,说明精度对比成功。

    [Success] Case accuracy is verification passed.