单击实现矩阵-矩阵相加运算获取样例。
此样例实现了对自定义算子的功能验证,通过将自定义算子转换为单算子离线模型文件,然后通过pyACL加载单算子模型文件进行运行。
该实现矩阵-矩阵相加的运算示例为:C = A + B,其中A、B、C都是8*16的矩阵,类型为int32,矩阵加的结果是一个8 * 16的矩阵。
功能 |
对应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 //矩阵相加算子的模型文件。