已合并
cannsim资料新增指令流水图 #637
liangbinglong创建于 2025年12月30日
cannsim资料新增指令流水图 #637
已合并
共 3 个文件变更+98-4
| @@ -24,9 +24,101 @@ CANN Simulator是一款面向算子开发场景的SoC级芯片仿真工具,用 | |||
| 24 | 24 | ||
| 25 | ## 环境准备 | 25 | ## 环境准备 |
| 26 | 26 | ||
| 27 | -CANN Simulator集成在CANN toolkit包里,参考[环境部署](../context/quick_install.md)中的软件包安装 -> 安装社区版CANN toolkit包章节 | 27 | +CANN Simulator集成在CANN toolkit包里,参考[环境部署](../context/quick_install.md)完成软件包的安装 |
| 28 | 28 | ||
| 29 | -# 仿真执行 | 29 | +# 快速开始 |
| 30 | + | ||
| 31 | +下面以[add_examples](../../../examples/add_example/)为例,对算子仿真进行详细说明 | ||
| 32 | + | ||
| 33 | +## 算子编译 | ||
| 34 | + | ||
| 35 | +* 参考[算子调用](../invocation/quick_op_invocation.md)完成add_example的算子编译和安装 | ||
| 36 | +``` | ||
| 37 | +# 说明:进入项目根目录,执行如下编译命令,命令仅供参考,详细可以查看算子调用的说明。 | ||
| 38 | +bash build.sh --pkg --soc=Ascend950 --vendor_name=custom --ops=add_example | ||
| 39 | +# 安装自定义算子包 | ||
| 40 | +./build_out/cann-ops-math-${vendor_name}_linux-${arch}.run | ||
| 41 | +``` | ||
| 42 | + | ||
| 43 | +* 参考[aclnn调用](../invocation/op_invocation.md#aclnn调用)完成test_aclnn_add_example.cpp的编译,编出可执行文件test_aclnn_add_example | ||
| 44 | + | ||
| 45 | +## 执行仿真命令 | ||
| 46 | + | ||
| 47 | +``` | ||
| 48 | +cannsim record ./test_aclnn_add_example -s Ascend950 --gen-report | ||
| 49 | +``` | ||
| 50 | + | ||
| 51 | +仿真工具执行日志文件在examples/add_example/examples/build/bin/cannsim_*目录,执行日志文件为 | ||
| 52 | + | ||
| 53 | +``` | ||
| 54 | +cannsim.log | ||
| 55 | +``` | ||
| 56 | + | ||
| 57 | +从仿真工具日志文件可以看到示例中的打印信息: | ||
| 58 | + | ||
| 59 | +``` | ||
| 60 | +add_example result[2011] is: 2.000000 | ||
| 61 | +add_example result[2012] is: 2.000000 | ||
| 62 | +add_example result[2013] is: 2.000000 | ||
| 63 | +add_example result[2014] is: 2.000000 | ||
| 64 | +add_example result[2015] is: 2.000000 | ||
| 65 | +add_example result[2016] is: 2.000000 | ||
| 66 | +add_example result[2017] is: 2.000000 | ||
| 67 | +add_example result[2018] is: 2.000000 | ||
| 68 | +add_example result[2019] is: 2.000000 | ||
| 69 | +add_example result[2020] is: 2.000000 | ||
| 70 | +add_example result[2021] is: 2.000000 | ||
| 71 | +``` | ||
| 72 | + | ||
| 73 | +## 查看性能流水 | ||
| 74 | + | ||
| 75 | +仿真性能流水文件在本项目`examples/add_example/examples/build/bin/cannsim_*/report目录,流水相关文件为: | ||
| 76 | + | ||
| 77 | +``` | ||
| 78 | +trace_core0.json | ||
| 79 | +``` | ||
| 80 | + | ||
| 81 | +在Chrome浏览器中输入“chrome://tracing”地址,并将生成的指令流水图文件(trace_core0.json)拖到空白处打开,具体参数介绍参考“仿真结果解析”章节。 | ||
| 82 | + | ||
| 83 | +## 执行仿真命令 | ||
| 84 | + | ||
| 85 | +``` | ||
| 86 | +cannsim record ./ascendc_kernels_bbit -s Ascend950 --gen-report | ||
| 87 | +``` | ||
| 88 | + | ||
| 89 | +仿真工具执行日志文件在add_example/build/cannsim_*目录,执行日志文件为 | ||
| 90 | + | ||
| 91 | +``` | ||
| 92 | +cannsim.log | ||
| 93 | +``` | ||
| 94 | + | ||
| 95 | +从仿真工具日志文件可以看到示例中的前10结果打印信息: | ||
| 96 | + | ||
| 97 | +``` | ||
| 98 | +First 10 output values: | ||
| 99 | +z[0] = 0.000000 | ||
| 100 | +z[1] = 3.000000 | ||
| 101 | +z[2] = 6.000000 | ||
| 102 | +z[3] = 9.000000 | ||
| 103 | +z[4] = 12.000000 | ||
| 104 | +z[5] = 15.000000 | ||
| 105 | +z[6] = 18.000000 | ||
| 106 | +z[7] = 21.000000 | ||
| 107 | +z[8] = 24.000000 | ||
| 108 | +z[9] = 27.000000 | ||
| 109 | +``` | ||
| 110 | + | ||
| 111 | +## 查看性能流水 | ||
| 112 | + | ||
| 113 | +仿真性能流水文件在本项目`examples/add_example/build/cannsim_*/report目录,流水相关文件为: | ||
| 114 | + | ||
| 115 | +``` | ||
| 116 | +trace_core0.json | ||
| 117 | +``` | ||
| 118 | + | ||
| 119 | +在Chrome浏览器中输入“chrome://tracing”地址,并将生成的指令流水图文件(trace_core0.json)拖到空白处打开,具体参数介绍参考“仿真结果解析”章节。 | ||
| 120 | + | ||
| 121 | +# 仿真执行说明 | ||
| 30 | 122 | ||
| 31 | ## 命令功能 | 123 | ## 命令功能 |
| 32 | 124 | ||
| @@ -65,6 +157,7 @@ cannsim record [options] user_app --user_options | |||
| 65 | 157 | ||
| 66 | ``` | 158 | ``` |
| 67 | ├─cannsim_{timestamp}_${user_app} | 159 | ├─cannsim_{timestamp}_${user_app} |
| 160 | + ├── cannsim.log | ||
| 68 | ├── log | 161 | ├── log |
| 69 | │ ├── AIC_0_0_0_0_ChiWrap.log0 | 162 | │ ├── AIC_0_0_0_0_ChiWrap.log0 |
| 70 | │ ├── ccum_0_0_2.txt0 | 163 | │ ├── ccum_0_0_2.txt0 |
| @@ -89,7 +182,7 @@ cannsim record [options] user_app --user_options | |||
| 89 | │ └── stars_log0_1.dump | 182 | │ └── stars_log0_1.dump |
| 90 | ``` | 183 | ``` |
| 91 | 184 | ||
| 92 | -4. 用户可以获取算子执行结果,并进行精度的对比,结果示例如下 | 185 | +4. 用户可以获取算子执行结果,并进行精度的对比,结果展示在cannsim.log,示例如下 |
| 93 | 186 | ||
| 94 | 以下输出仅为AscendC单算子直调精度比较结果举例,因版本不同略有差异,请以实际输出为准。 | 187 | 以下输出仅为AscendC单算子直调精度比较结果举例,因版本不同略有差异,请以实际输出为准。 |
| 95 | 188 | ||
| @@ -102,7 +195,7 @@ cannsim record [options] user_app --user_options | |||
| 102 | 195 | ||
| 103 | 5. 查看算子指令流水图,参考仿真结果解析。 | 196 | 5. 查看算子指令流水图,参考仿真结果解析。 |
| 104 | 197 | ||
| 105 | -# 仿真结果解析 | 198 | +# 仿真结果解析说明 |
| 106 | 199 | ||
| 107 | ## 命令功能 | 200 | ## 命令功能 |
| 108 | 201 | ||
| @@ -49,6 +49,7 @@ public: | |||
| 49 | .ExtendCfgInfo("opFile.value", "add_example"); // 这里制定的值会对应到kernel入口文件名.cpp | 49 | .ExtendCfgInfo("opFile.value", "add_example"); // 这里制定的值会对应到kernel入口文件名.cpp |
| 50 | this->AICore().AddConfig("ascend910b", aicoreConfig); // 其他的soc版本补充部分配置项 | 50 | this->AICore().AddConfig("ascend910b", aicoreConfig); // 其他的soc版本补充部分配置项 |
| 51 | this->AICore().AddConfig("ascend910_93", aicoreConfig); | 51 | this->AICore().AddConfig("ascend910_93", aicoreConfig); |
| 52 | + this->AICore().AddConfig("ascend910_95", aicoreConfig); | ||
| 52 | } | 53 | } |
| 53 | }; | 54 | }; |
| 54 | OP_ADD(AddExample); // 添加算子信息库 | 55 | OP_ADD(AddExample); // 添加算子信息库 |