CANN/asc-devkit SIMD向量函数Dump接口

CANN/asc-devkit SIMD向量函数Dump接口

SimdVF Dump接口功能说明

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

概述

本样例介绍simd_vf侧asc_dump系列接口使用方法,在vector函数中通过asc_dump_ubufasc_dump_regasc_dump等接口实现UB和寄存器数据的可视化打印。核函数从二进制文件读取输入数据,执行Adds计算后写出输出数据,通过比较输出与真值进行校验。

支持的产品

  • Ascend 950PR/Ascend 950DT

目录结构介绍

├── simd_vf_dump │ ├── scripts │ │ ├── gen_data.py // 输入数据和真值数据生成脚本 │ │ └── verify_result.py // 验证输出数据和真值数据是否一致 │ ├── CMakeLists.txt // 编译工程文件 │ ├── data_utils.h // 数据读入写出函数 │ └── simd_vf_dump.asc // Ascend C样例实现&调用样例

样例描述

  • 样例功能:

    使用vector编程模式,展示simd_vf侧asc_dump系列接口的基本使用方法。核函数通过ReadFile读取二进制输入数据,使用asc_vf_call调用simd_vf函数进行dump打印,执行Adds计算后通过WriteFile写出二进制输出数据,最终通过校验脚本比对输出与真值。

    1. asc_dump_ubuf<T>-打印UB数据
    2. asc_dump_reg<T>-打印寄存器数据
    3. asc_dump<T>-打印UB/Reg数据(通用接口)
  • simd_vf dump接口用法:

    接口地址类型示例
    asc_dump_ubuf<T>__ubuf__asc_dump_ubuf<float>(input, desc, dump_size);
    asc_dump_reg<T>Regasc_dump_reg<float>(input, desc, dump_size);
    asc_dump<T>__ubuf__/ Regasc_dump<float>(input, desc, dump_size);

    参数说明:

    • 模板参数T:指定数据类型(float/half等)
    • input:UB数据地址或Reg寄存器对象
    • desc:打印控制描述符
    • dump_size:单次dump的数据元素个数
  • 调用实现

    __global__ __vector__核函数内使用asc_vf_call<FuncName>()调用simd_vf函数完成dump打印,随后通过AscendC::Adds执行计算并将结果写回GM。Host侧通过ReadFile/WriteFile完成二进制数据的读写。

编译运行

  • 配置环境变量 在本样例根目录下执行如下步骤,编译并执行样例。 请根据当前环境上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 -DCMAKE_ASC_ARCHITECTURES=dav-3510 ..;make -j; # 编译工程 python3 ../scripts/gen_data.py # 生成测试输入数据 ./demo # 执行编译生成的可执行程序,执行样例 python3 ../scripts/verify_result.py output/output.bin output/golden.bin # 验证输出结果是否正确,确认算法逻辑正确
  • 编译选项说明

    选项可选值说明
    CMAKE_ASC_ARCHITECTURESdav-3510(默认)NPU架构:dav-3510对应Ascend 950PR/Ascend 950DT
  • 执行结果 最终执行结果如下,说明精度对比成功。

    test pass!

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考