文档
注册

RunGraphAsync

函数功能

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

此函数与RunGraph均为执行指定id对应的图,并输出结果,区别于RunGraph的是,该接口:

  • 异步执行。
  • 承载数据的数据格式不一样,但含义相同。
  • 用户通过回调函数RunAsyncCallback获取图计算结果,即用户自行定义函数RunAsyncCallback。该回调函数,当status为success时,即可处理数据。

函数原型

Status RunGraphAsync(uint32_t graph_id, const std::vector<ge::Tensor> &inputs, RunAsyncCallback callback);
Status RunGraphAsync(uint32_t graph_id, const ContinuousTensorList &inputs, RunAsyncCallback callback);

参数说明

参数名

输入/输出

描述

graphId

输入

子图对应的id。

inputs

输入

当前子图对应的输入数据。

  • 使用std::vector<Tensor>类型的inputs作为输入,用户输入进入数据队列时,需要对每个输入做一次内存的申请和拷贝,输入较大或者较多时可能存在性能瓶颈。

callback

输出

当前子图对应的回调函数。

1
2
using Status = uint32_t;
using RunAsyncCallback = std::function<void(Status, std::vector<ge::Tensor> &)>;

返回值

参数名

类型

描述

-

Status

GE_CLI_GE_NOT_INITIALIZED:GE未初始化。

SUCCESS:异步执行图成功。

FAILED:异步执行图失败。

约束说明

无。

调用示例

  1. 用户自定义RunAsyncCallback,来决定如何处理数据,例如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void CallBack(Status resultstd::vector<ge::Tensor> &out_tensor) {
    ifresult == ge::SUCCESS) {
    // 读取out_tensor数据, 用户根据需求处理数据;
    for(auto &tensor : out_tensor) {
    auto data = tensor.GetData();
    int64_t length = tensor.GetSize();
    }
    }
    }
    
  2. 定义好指定图的输入数据const std::vector<ge::Tensor> &inputs。
  3. 调用接口RunGraphAsync(inputs, CallBack)。
搜索结果
找到“0”个结果

当前产品无相关内容

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