样例介绍

获取样例

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

功能描述

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

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

主要接口

主要接口如下表所示。

初始化

  • 调用acl.init接口初始化pyACL配置。
  • 调用acl.finalize接口实现pyACL去初始化。

Device管理

  • 调用acl.rt.set_device接口指定用于运算的Device。
  • 调用acl.rt.get_run_mode接口获取软件栈的运行模式,根据运行模式的不同,内部处理流程不同。
  • 调用acl.rt.reset_device接口复位当前运算的Device,回收Device上的资源。

Stream管理

  • 调用acl.rt.create_stream接口创建Stream。
  • 调用acl.rt.destroy_stream接口销毁Stream。
  • 调用acl.rt.synchronize_stream接口阻塞程序运行,直到指定Stream中的所有任务都完成。

内存管理

  • 调用acl.rt.malloc_host接口申请Host上内存。
  • 调用acl.rt.free_host释放Host上的内存。
  • 调用acl.rt.malloc接口申请Device上的内存。
  • 调用acl.rt.free接口释放Device上的内存。

数据传输

如果在Host上运行应用,则需调用acl.rt.memcpy接口:

  • 将数据从Host传输到Device上,作为解码的输入数据。
  • 模型推理结束后,将推理结果从Device传输到Host。

如果在板端环境上运行应用,则无需进行数据传输。

单算子调用

  • 调用acl.op.execute_v2执行指定的算子。
  • 使用ATC(Ascend Tensor Compiler)工具将ADD的算子描述信息(包括输入输出Tensor描述、算子属性等)编译成适配昇腾AI处理器的离线模型(*.om文件),用于验证矩阵相加ADD算子的运行结果。

目录结构

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

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 //矩阵相加算子的模型文件。