样例介绍
获取样例
单击Gitee或Github,进入Ascend samples开源仓,参见README中的“版本说明”下载配套版本的sample包,从“cplusplus/level1_single_api/1_acl/4_blas/gemm”目录下获取gemm样例
功能描述
该样例主要实现矩阵-矩阵相乘的运算:C = αAB + βC,A、B、C都是16*16的矩阵,即:m=16,n=16,k=16。矩阵乘的结果是一个16*16的矩阵。
图1 Sample示例
原理介绍
在该样例中,涉及的关键功能点,如下表所示。API接口的详细介绍请参见AscendCL API参考。
初始化 |
|
---|---|
Device管理 |
|
Stream管理 |
|
内存管理 |
|
数据传输 |
如果在Host上运行应用,则需调用aclrtMemcpy接口:
如果在板端环境上运行应用,则无需进行数据传输。 |
单算子调用 |
|
目录结构
样例代码结构如下所示。
├── inc │ ├── common.h //定义公共函数(例如:文件读取函数)的头文件 │ ├── gemm_runner.h //定义矩阵乘运算相关函数的头文件 ├── run │ ├── out │ │ ├──test_data │ │ │ ├── config │ │ │ │ ├── acl.json //系统初始化的配置文件 │ │ │ │ ├── gemm.json //矩阵乘算子的算子描述信息 │ │ │ ├── data │ │ │ │ ├── generate_data.py //用于生成矩阵A、矩阵B的数据 ├── src │ ├── CMakeLists.txt //编译脚本 │ ├── common.cpp //公共函数(例如:文件读取函数)的实现文件 │ ├── gemm_main.cpp //主函数的实现文件 │ ├── gemm_runner.cpp //执行矩阵乘运算相关函数的实现文件
父主题: 实现矩阵-矩阵乘运算