一、工具用途 该工具主要使用CPU仿真方式定位kernel存在的UB非对齐访问类问题
二、工具文件列表及说明
- 1 autofuse_tiling_data.h
拷贝kernel_meta_xxxxxxx/te_ascbackend_xxxx/host/autofuse_tiling_data.h的内容
- 2 autofuse_tiling_func_common.h
拷贝kernel_meta_xxxxxxx/te_ascbackend_xxxx/host/autofuse_tiling_func_common.h的内容,并将下列宏定义修改为空
#define OP_LOGD(name, fmt, ...)
#define OP_LOGI(name, fmt, ...)
#define OP_LOGW(name, fmt, ...)
#define OP_LOGE(name, fmt, ...)
#define OP_EVENT(name, fmt, ...)
- 3 kernel.cpp
拷贝kernel_meta_xxxxxxx/te_ascbackend_xxxx/device/autofuse_xxx_op_kernel.cpp的内容,并在文件头添加以下两行代码
#define REGISTER_TILING_DEFAULT(tiling)
#define GET_TILING_DATA(t, tiling) AutofuseTilingData t = *(AutofuseTilingData*)tiling;
- 4 main.cpp
主函数,用于构造输入、真值、tiling data,并校验kernel计算结果与真值,具体参考其实现
- 5 Makefile
构建工程脚本
- 6 README.md
使用说明
- 7 tiling_func_asc_graph0_schedule_result0_g0.cpp
拷贝kernel_meta_xxxxxxx/te_ascbackend_xxxx/host/autofuse_xxx_tiling_func_asc_graph0_schedule_result0_g0.cpp的内容
- 8 tiling_func_schedule_group_tail.cpp
拷贝kernel_meta_xxxxxxx/te_ascbackend_xxxx/host/autofuse_xxx_tiling_func_schedule_group_tail.cpp的内容
- 9 tiling_func_solver_func.cpp
拷贝kernel_meta_xxxxxxx/te_ascbackend_xxxx/host/autofuse_xxx_tiling_func_solver_func.cpp的内容
- 10 tiling_func_tiling_def_and_tiling_const.cpp
拷贝kernel_meta_xxxxxxx/te_ascbackend_xxxx/host/autofuse_xxx_tiling_func_tiling_def_and_tiling_const.cpp的内容
三、参考main.cpp实现测试用例 main.cpp是测试用例入口,需要参考其实现,构造对应的实现,当前只支持动态shape场景,如果是静态shape,可以修改为动态shape。
四、编译
make CANN_INSTALL_PATH=/usr/local/Ascend/latest #替换为自己的cann包路径
五、执行工具
source /usr/local/Ascend/latest/bin/setenv.bash #设置cann包环境变量
./test_kernel