| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 个月前 | ||
| 7 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 7 个月前 | ||
| 5 个月前 | ||
| 7 个月前 | ||
| 7 个月前 | ||
| 4 个月前 |
Kernel直调执行
目录结构介绍
├── MatmulInvocationNeo
│ ├── cmake // 编译工程文件
│ ├── scripts
│ │ ├── gen_data.py // 输入数据和真值数据生成脚本文件
│ │ └── verify_result.py // 验证输出数据和真值数据是否一致的验证脚本
│ ├── CMakeLists.txt // 编译工程文件
│ ├── data_utils.h // 数据读入写出函数
│ ├── main.cpp // 主函数,调用算子的应用程序,含CPU域及NPU域调用
│ ├── matmul_custom.cpp // 算子kernel实现
│ ├── matmul_custom_tiling.cpp // 算子tiling实现
│ └── run.sh // 编译运行算子的脚本
代码实现介绍
本样例中实现的是[M, K, N]固定为[512, 512, 1024]的Matmul算子。
-
kernel实现
Matmul算子的数学表达式为:C=A∗BC = A * B
其中A的形状为[512, 512], B的形状为[512, 1024], C的形状为[512, 1024]。具体请参考matmul_custom.cpp。
-
调用实现
- CPU侧运行验证主要通过ICPU_RUN_KF CPU调测宏等CPU调测库提供的接口来完成;
- NPU侧运行验证主要通过使用ACLRT_LAUNCH_KERNEL内核调用宏来完成。
应用程序通过ASCENDC_CPU_DEBUG 宏区分代码逻辑运行于CPU侧还是NPU侧。
运行样例算子
-
配置环境变量
请根据当前环境上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
-
-
样例执行
bash run.sh -r [RUN_MODE] -v [SOC_VERSION]- RUN_MODE:编译方式,可选择CPU调试,NPU仿真,NPU上板。支持参数为[cpu / sim / npu]。
- SOC_VERSION:昇腾AI处理器型号,如果无法确定具体的[SOC_VERSION],则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如"Name"对应取值为xxxyy,实际配置的[SOC_VERSION]值为Ascendxxxyy。
示例如下,Ascendxxxyy请替换为实际的AI处理器型号。
bash run.sh -r cpu -v Ascendxxxyy