文档
注册

接口调用流程

开发应用时,如果涉及执行单个算子,则应用程序中必须包含执行单个算子的代码逻辑。关于执行单个算子的接口调用流程,请先参见pyACL接口调用流程了解整体流程,再查看本节中的流程说明。

图1 算子调用流程
关键接口的说明如下:
  1. 加载算子模型文件。
    支持以下2种方式中的一种加载单算子模型文件:
    • 调用acl.op.set_model_dir接口,设置加载模型文件的目录,目录下存放单算子模型文件(*.om文件)。
    • 调用acl.op.load接口,从内存中加载单算子模型数据,由用户管理内存。单算子模型数据是指“单算子编译成*.om文件后,再将om文件读取到内存中”的数据。
  2. 调用acl.rt.malloc接口申请Device上的内存,存放执行算子的输入、输出数据。

    如果需要将Host上数据传输到Device,则需要调用acl.rt.memcpy接口(同步接口)或acl.rt.memcpy_async接口(异步接口)通过内存复制的方式实现数据传输。

  3. 执行算子。

    不以handle方式执行算子时,每次执行算子时,系统内部都会根据算子描述信息匹配内存中的模型。

    以handle方式执行算子时,系统内部将算子描述信息匹配到内存中的模型,并缓存在Handle中,每次执行算子时,无需重复匹配算子与模型,因此在涉及多次执行同一个算子时,效率更高。但Handle使用结束后,需调用acl.op.destroy_handle接口释放。

  4. 调用acl.rt.synchronize_stream接口阻塞应用运行,直到指定Stream中的所有任务都完成。
  5. 调用acl.rt.free接口释放内存。

    如果需要将Device上的算子执行结果数据传输到Host,则需要调用acl.rt.memcpy接口(同步接口)或acl.rt.memcpy_async接口(异步接口)通过内存复制的方式实现数据传输,然后再释放内存。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词