215 Star 1.2K Fork 1K

Ascend/samples

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
best_practices
common
cplusplus
docs
growthpath
inference
operator
AddCustomSample
BroadcastCustomSample
HelloWorldSample
LeakyReluCustomSample
MatMulCustomSample
FrameworkLaunch
KernelLaunch
README.md
MatMulLeakyReluCustomSample
SubCustomSample/FrameworkLaunch
.clang-format
README.md
operator_contrib
python
robot/ascend_car
st
training
.gitignore
CONTRIBUTING_CN.md
CONTRIBUTING_EN.md
LICENSE
NOTICE
OWNERS
README.md
build_run.sh
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Matmul自定义算子样例说明

本样例通过Ascend C编程语言实现了Matmul算子,并按照不同的算子调用方式分别给出了对应的端到端实现。

  • FrameworkLaunch:使用框架调用Matmul自定义算子。
    按照工程创建->算子实现->编译部署>算子调用的流程完成算子开发。整个过程都依赖于算子工程:基于工程代码框架完成算子核函数的开发和Tiling实现,通过工程编译脚本完成算子的编译部署,继而实现单算子调用或第三方框架中的算子调用。
  • KernelLaunch:使用核函数直调Matmul自定义算子。
    核函数的基础调用(Kernel Launch)方式,开发者完成算子核函数的开发和Tiling实现后,即可通过AscendCL运行时接口,完成算子的调用。

本样例中包含如下调用方式:

调用方式 目录 描述
FrameworkLaunch AclNNInvocation 通过aclnn调用的方式调用MatmulCustom算子。
KernelLaunch
MatMulInvocationNeo Kernel Launch方式调用核函数样例。

算子描述

Matmul高阶API实现了快速的Matmul矩阵乘法的运算操作。

MatMul的计算公式为:

C = A * B + Bias
  • A、B为源操作数,A为左矩阵,形状为[M, K];B为右矩阵,形状为[K, N]。
  • C为目的操作数,存放矩阵乘结果的矩阵,形状为[M, N]。
  • Bias为矩阵乘偏置,形状为[1, N]。对A*B结果矩阵的每一行都采用该bias进行偏置。

算子规格描述

算子类型(OpType)Matmul
算子输入nameshapedata typeformat
a-float16ND
b-float16ND
bias-floatND
算子输出c-floatND
核函数名matmul_custom

支持的产品型号

本样例支持如下产品型号:

  • Atlas 推理系列产品(Ascend 310P处理器)
  • Atlas A2训练系列产品

目录结构介绍

│── FrameworkLaunch // 使用框架调用的方式调用Matmul自定义算子。
└── KernelLaunch    // 使用核函数直调的方式调用Matmul自定义算子。

环境要求

编译运行此样例前,请参考《CANN软件安装指南》完成开发运行环境的部署。

编译运行样例算子

1. 准备:获取样例代码

可以使用以下两种方式下载,请选择其中一种进行源码准备。

  • 命令行方式下载(下载时间较长,但步骤简单)。

    # 开发环境,非root用户命令行中执行以下命令下载源码仓。git_clone_path为用户自己创建的某个目录。
    cd ${git_clone_path}
    git clone https://gitee.com/ascend/samples.git
    

    注:如果需要切换到其它tag版本,以v0.5.0为例,可执行以下命令。

    git checkout v0.5.0
    
  • 压缩包方式下载(下载时间较短,但步骤稍微复杂)。

    注:如果需要下载其它版本代码,请先请根据前置条件说明进行samples仓分支切换。

    # 1. samples仓右上角选择 【克隆/下载】 下拉框并选择 【下载ZIP】。
    # 2. 将ZIP包上传到开发环境中的普通用户某个目录中,【例如:${git_clone_path}/ascend-samples-master.zip】。
    # 3. 开发环境中,执行以下命令,解压zip包。
    cd ${git_clone_path}
    unzip ascend-samples-master.zip
    

2. 编译运行样例工程

  • 若使用框架调用的方式,编译运行操作请参见FrameworkLaunch
  • 若使用核函数直调的方式,编译运行操作请参见KernelLaunch

更新说明

时间 更新事项
2024/05/21 新增readme
2024/05/27 更新readme
2024/06/06 删除MatMulInvocation样例
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ascend/samples.git
git@gitee.com:ascend/samples.git
ascend
samples
samples
8.0.RC2

搜索帮助