211 Star 1.1K Fork 966

Ascend/samples

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

目录结构介绍

├── MmadBiasInvocation
│   ├── cmake                     // 编译工程文件
│   ├── scripts
│   │   ├── gen_data.py           // 输入数据和真值数据生成脚本文件
│   │   └── verify_result.py      // 验证输出数据和真值数据是否一致的验证脚本
│   ├── CMakeLists.txt            // 编译工程文件
│   ├── data_utils.h              // 数据读入写出函数
│   ├── main.cpp                  // 主函数,调用算子的应用程序,含CPU域及NPU域调用
│   ├── mmad_custom_cube_only.h   // Atlas A2训练系列产品kernel实现
│   ├── mmad_custom.h             // Atlas推理系列产品kernel实现
│   ├── mmad_custom.cpp           // 算子kernel实现
│   └── run.sh                    // 编译运行算子的脚本

算子规格描述

在核函数直调样例中,算子实现支持的shape为:M = 32, N = 32, K = 32。

算子输入nameshapedata typeformat
aM * Kfloat16ND
bK * Nfloat16ND
biasNfloatND
算子输出cM * NfloatND
核函数名mmad_custom

代码实现介绍

本样例中实现的是[m, n, k]固定为[32, 32, 32]的Matmul算子,包含bias输入,并使用Ascend C基础Api实现。

  • kernel实现
    Matmul算子的数学表达式为: \[ C = A * B + Bias \] 其中A的形状为[32, 32], B的形状为[32, 32], C的形状为[32, 32], Bias的形状为[1, 32]。具体请参考mmad_custom.cpp

    **注:当使用硬件分离架构的产品如Atlas A2训练系列产品/Atlas 800I A2推理产品时,由于样例使用的基础API均为Cube核指令,本样例设置了Cube Only模式,只调用Cube核完成计算,代码如下:

    KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_AIC_ONLY);
    
  • 调用实现

    1. CPU侧运行验证主要通过ICPU_RUN_KF CPU调测宏等CPU调测库提供的接口来完成;

    **注:当使用硬件分离架构的产品如Atlas A2训练系列产品/Atlas 800I A2推理产品时,Kernel中设置的Cube Only在NPU侧运行时可自动识别并只运行Cube核,若在CPU侧运行,需要额外设置KernelMode,只模拟Cube核实现,代码如下:

    AscendC::SetKernelMode(KernelMode::AIC_MODE);
    
    1. NPU侧运行验证主要通过使用ACLRT_LAUNCH_KERNEL内核调用宏来完成。

    应用程序通过ASCENDC_CPU_DEBUG宏区分代码逻辑运行于CPU侧还是NPU侧。

运行样例算子

  • 打开样例目录 以命令行方式下载样例代码,master分支为例。

    cd ${git_clone_path}/samples/operator/ascendc\0_introduction\20_mmad_kernellaunch/MmadInvocationNeo
    
  • 配置环境变量

    请根据当前环境上CANN开发套件包的安装方式,选择对应配置环境变量的命令。

    • 默认路径,root用户安装CANN软件包
      export ASCEND_INSTALL_PATH=/usr/local/Ascend/ascend-toolkit/latest
      
    • 默认路径,非root用户安装CANN软件包
      export ASCEND_INSTALL_PATH=$HOME/Ascend/ascend-toolkit/latest
      
    • 指定路径install_path,安装CANN软件包
      export ASCEND_INSTALL_PATH=${install_path}/ascend-toolkit/latest
      
  • 样例执行

    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。支持以下产品型号:
      • Atlas 推理系列产品AI Core
      • Atlas A2训练系列产品/Atlas 800I A2推理产品

    示例如下,Ascendxxxyy请替换为实际的AI处理器型号。

    bash run.sh -r cpu -v Ascendxxxyy
    

更新说明

时间 更新事项
2024/11/20 更新本readme
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ascend/samples.git
git@gitee.com:ascend/samples.git
ascend
samples
samples
master

搜索帮助