CANN/ge ACL GEMM样例
2026/9/10 3:45:40 网站建设 项目流程

ACL GEMM 样例使用指导

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

背景说明

该样例用于指导用户如何使用ACLNN 接口替代废弃的 ACLBLAS 和 ACLOP 接口

在 CANN 开发中,ACLBLAS(如aclblasGemmEx)和 ACLOP(如aclopExecuteV2)接口将逐渐被标记为废弃,新开发场景应优先使用 ACLNN 接口。本样例通过 GEMM(矩阵乘法)算子演示三种接口的等效实现方式,帮助用户理解接口迁移的完整流程。

本样例将提供:

  1. 展示三种接口(ACLBLAS、ACLOP、ACLNN)执行相同计算的代码实现
  2. 对比三种接口的调用方式差异,辅助接口迁移决策
  3. 提供完整的精度验证机制,确保迁移后计算结果一致

功能描述

该样例对比演示三种 ACL 接口执行 GEMM 计算:

  • aclblasGemmEx(废弃):通过废弃的 ACLBLAS 接口执行 GEMM
  • aclopExecuteV2("GEMM")(废弃):通过废弃的 ACLOP 接口直接调用 GEMM 算子
  • aclnnMatmul + aclnnMuls + aclnnAdd(推荐):通过 ACLNN 组合完成 GEMM 计算

样例使用相同输入数据,依次执行三种接口,自动比较精度并打印max_error

GEMM 计算公式

数学公式

GEMM(General Matrix Multiply,通用矩阵乘法)的计算公式为:

C = αAB + βC

其中:

  • A是形状为 [M, K] 的输入矩阵
  • B是形状为 [K, N] 的输入矩阵
  • C是形状为 [M, N] 的输入/输出矩阵
  • alpha是标量系数,用于缩放矩阵乘法结果
  • beta是标量系数,用于缩放原始矩阵 C

本样例计算参数

参数说明
M64矩阵 A 的行数,矩阵 C 的行数
N64矩阵 B 的列数,矩阵 C 的列数
K64矩阵 A 的列数,矩阵 B 的行数
alpha2.0矩阵乘法结果的缩放系数
beta2.0原始矩阵 C 的缩放系数
数据类型float16 (FP16)所有矩阵和标量使用 FP16 精度

接口废弃说明

接口类型状态说明
ACLBLAS废弃aclblasGemmEx等接口废弃,不建议新开发使用
ACLOP废弃aclopExecuteV2等接口废弃,不建议新开发使用
ACLNN推荐新开发场景应优先使用 ACLNN 接口

ACLNN 接口组合说明:

ACLNN 接口更接近底层算子原子操作,需要将 GEMM 拆解为:

  1. aclnnMatmul:执行矩阵乘法A @ B
  2. aclnnMuls:执行标量乘法2.0 × (A @ B)2.0 × C
  3. aclnnAdd:执行矩阵加法,将两部分相加得到最终结果

目录结构

├── scripts │ ├── build.sh // sample 编译脚本 │ ├── run.sh // sample 运行脚本 ├── src │ ├── CMakeLists.txt // 编译配置脚本 │ ├── sample_acl_gemm.cpp // ACL GEMM 样例实现文件 ├── CMakeLists.txt // 编译脚本,调用 src 目录下的 CMakeLists 文件

环境准备

  • 通过安装指导 环境准备 正确安装toolkitops包。
  • 设置环境变量(假设包安装在/usr/local/Ascend/):
source /usr/local/Ascend/cann/set_env.sh
  • SOC_VERSION为可选环境变量,未设置时默认使用Ascend910B3。如需指定芯片版本,可执行:
export SOC_VERSION=Ascend910B3

构建运行

  1. 进入样例脚本目录:
cd examples/acl/4_sample_acl_gemm/scripts
  1. 编译程序:
bash build.sh
  1. 运行程序:
bash run.sh

预期输出

执行成功后,屏幕输出包含如下关键日志:

[INFO] ACL GEMM sample starts [INFO] Running ACLBLAS GEMM... [INFO] Running ACLOP GEMM... [INFO] Running ACLNN GEMM... [INFO] Comparing results... max_error: 0 [INFO] VERIFICATION PASSED [INFO] SAMPLE PASSED

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询