210 Star 1.1K Fork 958

Ascend/samples

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

概述

本样例介绍Matmul IBShare特性样例,实现MatmulABshare算子及其核函数直调方法。

目录结构介绍

├── 13_matmul_api_ibshare
│   └── MatmulABshareInvocation                          // 使用核函数直调的方式调用MatmulABshare自定义算子。

算子描述

算子名中ABshare的含义为,Matmul计算的A矩阵与B矩阵同时使能类型信息MatmulType的参数IBShare;当A矩阵和B矩阵同时使能IBShare时,表示L1 Buffer上的A矩阵和B矩阵同时复用;IBShare的详细介绍请参考Ascend C算子开发接口>高阶API>Matmul>Matmul>使用说明 章节。
本样例中包含两个算子的核函数实现,分别为使能ABshare的MatmulABshare算子和未使能ABshare的MatmulNoABshare算子。MatmulNoABshare算子的A矩阵与B矩阵均未使能IBSHARE,数据按照K列进行切分计算。MatmulABshare算子的A矩阵与B矩阵均使能IBShare,不对k列进行切分计算,实现了算子性能提升。通过对比两个算子的运行时间,计算MatmulABshare算子的性能提升百分比。

对应的数学表达式为:

C = A * B
  • A、B为源操作数,A为左矩阵,形状为[M, K];B为右矩阵,形状为[K, N]。
  • C为目的操作数,存放矩阵乘结果的矩阵,形状为[M, N]。

算子规格描述

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

算子类型(OpType)Matmul
算子输入nameshapedata typeformat
aM * Kfloat16ND
bK * Nfloat16ND
算子输出cM * NfloatND
核函数名matmul_ABshare_custom

支持的产品型号

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

  • Atlas A2训练系列产品/Atlas 800I A2推理产品

编译运行样例算子

针对自定义算子工程,编译运行包含如下步骤:

  • 编译自定义算子工程;
  • 调用执行自定义算子;

详细操作如下所示。

1. 获取源码包

编译运行此样例前,请参考准备:获取样例代码获取源码包。

2. 编译运行样例工程

更新说明

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

搜索帮助