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_ubuf、asc_dump_reg、asc_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写出二进制输出数据最终通过校验脚本比对输出与真值。asc_dump_ubufT-打印UB数据asc_dump_regT-打印寄存器数据asc_dumpT-打印UB/Reg数据通用接口simd_vf dump接口用法接口地址类型示例asc_dump_ubufT__ubuf__asc_dump_ubuffloat(input, desc, dump_size);asc_dump_regTRegasc_dump_regfloat(input, desc, dump_size);asc_dumpT__ubuf__/ Regasc_dumpfloat(input, desc, dump_size);参数说明模板参数T指定数据类型float/half等inputUB数据地址或Reg寄存器对象desc打印控制描述符dump_size单次dump的数据元素个数调用实现在__global__ __vector__核函数内使用asc_vf_callFuncName()调用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_ARCHITECTURESdav-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),仅供参考