文件最后提交记录最后更新时间
7 个月前
7 个月前
4 个月前
4 个月前
7 个月前
5 个月前
7 个月前
7 个月前
4 个月前
README

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

  • 调用实现

    1. CPU侧运行验证主要通过ICPU_RUN_KF CPU调测宏等CPU调测库提供的接口来完成;
    2. 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