开发者
下载

RunGraphWithStreamAsync

头文件/库文件

  • 头文件:#include <ge/ge_api_v2.h>
  • 库文件:libge_runner_v2.so

功能说明

异步运行指定ID对应的Graph图,输出执行结果。

  • 本接口与RunGraphRunGraphAsync接口互斥;若在调用本接口前未执行LoadGraph完成图加载,则本接口将自动调用LoadGraph以完成加载
  • 本接口与RunGraph均为运行指定ID对应的图,并输出结果,区别于RunGraph的是,该接口:
    • 异步运行。
    • inputs和outputs均为Device上的内存空间,且需要在运行前由用户分配内存大小。如下两种情况如果不分配输出内存,ouputs传空:
      • 用户通过RegisterExternalAllocator设置了外置allocator,如果没有分配输出内存,由GE调用外置allocator的接口分配内存,用户需要在外置allocator析构前释放这块内存。
      • 用户没有设置外置allocator,GE将使用内置allocator分配内存,内存的生命周期与图的生命周期保持一致,用户需要在图卸载前(Session析构前或GEFinalize调用前)主动释放此内存,比如通过调用outputs.clear()方法。若未及时释放,将引发未定义行为。

函数原型

1
Status RunGraphWithStreamAsync(uint32_t graph_id, void *stream,const std::vector<gert::Tensor> &inputs,std::vector<gert::Tensor> &outputs)

参数说明

参数名

输入/输出

说明

graph_id

输入

Graph对应的ID。

stream

输入

指定图在哪个Stream上运行。

inputs

输入

计算图输入Tensor,为Device上的内存空间。

如果通过options指定了ge.exec.hostInputIndexes参数,对应索引的gert::Tensor可以为Host上的内存空间。gert::Tensor类型详细说明请参见构造函数

outputs

输出

计算图输出Tensor,为Device上的内存空间。

返回值说明

参数名

类型

说明

-

Status

SUCCESS:异步运行图成功。

FAILED:异步运行图失败。

约束说明

  • 调用该接口前,请先分配好gert::Tensor需要使用的内存。
  • Tensor在Device侧的存储地址,必须32字节对齐,否则可能会出现未定义错误。
  • 调用该接口前,需要通过aclrtCreateStream接口创建Stream;得到输出运行结果前,需要通过aclrtSynchronizeStream接口保证Stream上的任务已经执行完。

调用示例

请参见异步运行Graph