已合并
cannsim资料新增指令流水图 #637
liangbinglong创建于 2025年12月30日
cannsim资料新增指令流水图 #637
已合并
liangbinglong创建于 2025年12月30日
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 ├── log161 ├── log
69 │ ├── AIC_0_0_0_0_ChiWrap.log0162 │ ├── AIC_0_0_0_0_ChiWrap.log0
70 │ ├── ccum_0_0_2.txt0163 │ ├── ccum_0_0_2.txt0
@@ -89,7 +182,7 @@ cannsim record [options] user_app --user_options
89 │ └── stars_log0_1.dump182 │ └── 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 
1035. 查看算子指令流水图,参考仿真结果解析。1965. 查看算子指令流水图,参考仿真结果解析。
104 197 
105-# 仿真结果解析198+# 仿真结果解析说明
106 199 
107## 命令功能200## 命令功能
108 201 
@@ -49,6 +49,7 @@ public:
49 .ExtendCfgInfo("opFile.value", "add_example"); // 这里制定的值会对应到kernel入口文件名.cpp49 .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};
54OP_ADD(AddExample); // 添加算子信息库55OP_ADD(AddExample); // 添加算子信息库