下载
中文
注册

样例介绍

获取样例

单击实现矩阵-矩阵相加运算获取样例。

功能描述

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

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

主要接口

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

功能

对应pyACL模块

pyACL 接口函数

功能说明

资源初始化

初始化

acl.init

初始化pyACL配置。

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_v2

异步加载并执行指定的算子。

流同步

Stream管理

acl.rt.synchronize_stream

阻塞应用程序运行,直到指定Stream中的所有任务都完成。

公共模块

C和Python的数据交互

acl.util.ptr_to_numpy

将指针地址数据转换为numpy数组,可以使Python代码直接访问。

C和Python的数据交互

acl.util.numpy_to_ptr

获取numpy.ndarry数组的内存数据指针地址。

C和Python的数据交互

acl.util.bytes_to_ptr

将bytes对象转换成为void*数据,可以将转换好的数据传递给C函数直接使用。

C和Python的数据交互

acl.util.ptr_to_bytes

将void*数据转换为bytes对象,可以使Python代码直接访问。

资源释放

内存管理

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

实现pyACL去初始化。

公共接口

acl.destroy_data_buffer

销毁aclDataBuffer类型的数据。

此处仅销毁aclDataBuffer类型的数据,调用acl.create_data_buffer接口创建aclDataBuffer类型数据时传入的data的内存需由用户自行释放。

公共接口

acl.destroy_tensor_desc

销毁aclTensorDesc类型的数据。

公共接口

acl.op.destroy_attr

销毁通过acl.op.create_attr接口创建的aclopAttr类型的数据。

目录结构

如下为模型文件转换后的示例目录结构。

acl_operator_add
├──scripts
│ ├── host_version.conf //版本号配置文件。
│ └── testcase_300.sh //运行脚本。
├──src
│ ├── acl_execute_add.py //运行文件。
│ └── constant.py //常量定义。
└── test_data
  ├── config
  │ ├── acl.json //系统初始化的配置文件。
  │ └── add_op.json //矩阵相加算子的描述信息。
  └── op_models //atc转换后生成的目录。
    └── 0_Add_3_2_8_16_3_2_8_16_3_2_8_16.om //矩阵相加算子的模型文件。