---
title: 样例介绍
description: "单击Gitee(https://gitee.com/ascend/samples/)，进入Ascend samples开源仓，详细参见README中的“版本说明”下载配套版本的sample包，从“python/level1_single_api/1_acl/4_blas/acl_operator_add”目录下获取acl_operator_add样例。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/aadgp/aclpythondevg_02_0008.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/aadgp/aclpythondevg_02_0008.html
indexId: a71b50bc205f89e59b7efc969f0fb2943024d799e54e3e664c3d8116deca7946108
---
# 样例介绍

#### 获取样例

单击Gitee(https://gitee.com/ascend/samples/)，进入Ascend samples开源仓，详细参见README中的“版本说明”下载配套版本的sample包，从“python/level1_single_api/1_acl/4_blas/acl_operator_add”目录下获取acl_operator_add样例。


#### 功能描述

此样例实现了对自定义算子的功能验证，通过将自定义算子转换为单算子离线模型文件，然后通过ACL加载单算子模型文件进行运行。

该实现矩阵-矩阵相加的运算示例为：C = A + B，其中A、B、C都是8*16的矩阵，类型为int32，矩阵加的结果是一个8 * 16的矩阵。


#### 主要接口

主要接口如表1所示。
**表1 主要接口介绍**

| 功能 | 对应ACL模块 | ACL 接口函数 | 功能说明 |
| --- | --- | --- | --- |
| 资源初始化 | 初始化 | acl.init | 初始化ACL配置。 |
| 资源初始化 | Device管理 | acl.rt.set\_device | 指定用于运算的Device。 |
| 资源初始化 | Context管理 | acl.rt.create\_context | 创建Context。 |
| 资源初始化 | Stream管理 | acl.rt.create\_stream | 创建Stream。 |
| 资源初始化 | 算子加载与执行 | acl.op.set\_model\_dir | 加载模型文件的目录。 |
| 数据后处理 | 算子加载与执行 | acl.op.create\_attr | 创建aclopAttr类型的数据。 |
| 数据后处理 | \-\- | acl.create\_tensor\_desc | 创建aclTensorDesc类型的数。 |
| 数据后处理 | \-\- | acl.get\_tensor\_desc\_size | 获取tensor描述占用的空间大小。 |
| 数据后处理 | \-\- | acl.create\_data\_buffer | 创建aclDataBuffer类型的数据。 |
| 数据交互 | 内存管理 | acl.rt.memcpy | 数据传输，Host\->Device或Device\->Host。 |
| 数据交互 | 内存管理 | acl.rt.malloc | 申请Device上的内存。 |
| 数据交互 | 内存管理 | acl.rt.malloc\_host | 申请Host上的内存。 |
| 单算子推理 | 算子加载与执行 | acl.op.execute | 异步加载并执行指定的算子。 |
| 公共模块 | \-\- | acl.util.ptr\_to\_numpy | 通过指针地址获取numpy.ndarray对象。 |
| 公共模块 | \-\- | acl.util.numpy\_to\_ptr | 获取numpy.ndarray对象的内存数据的指针地址。 |
| 资源释放 | 内存管理 | acl.rt.free | 释放Device上的内存。 |
| 资源释放 | 内存管理 | acl.rt.free\_host | 释放Host上的内存。 |
| 资源释放 | Stream管理 | acl.rt.destroy\_stream | 销毁Stream。 |
| 资源释放 | Context管理 | acl.rt.destroy\_context | 销毁Context。 |
| 资源释放 | Device管理 | acl.rt.reset\_device | 复位当前运算的Device，回收Device上的资源。 |
| 资源释放 | 去初始化 | acl.finalize | 实现ACL去初始化。 |


#### 单算子矩阵相加流程图流程图

单算子矩阵相加流程图流程图如图1所示。图1 单算子矩阵相加流程图


#### 目录结构

如下为模型文件转换后的示例目录结构，“op_models”文件夹是转换后生成的。

```
acl_operator_add
├──src
│ ├── acl_execute_add.py //运行文件。
│ └── constant.py //常量定义。
└── test_data
├── config
│ ├── acl.json //系统初始化的配置文件。
│ └── add_op.json //矩阵相加算子的描述信息。
└── op_models
└── 0_Add_3_2_8_16_3_2_8_16_3_2_8_16.om //矩阵相加算子的模型文件。
```
