RunGraphWithStreamAsync

Header File/Library File

  • Header file: #include <ge/ge_api_v2.h>
  • Library file: libge_runner_v2.so

Function Usage

Asynchronously runs the graph of a specified ID and returns the execution result.

  • This API is mutually exclusive with RunGraph and RunGraphAsync. If a graph has not been loaded using LoadGraph before this API is called, this API automatically calls LoadGraph to complete the loading.
  • Both this API and RunGraph are used to run the graph of a specified ID and output the result. Specifically:
    • This API is asynchronous.
    • inputs and outputs are memory on the device and are allocated by the user before graph execution. If the output memory is not allocated in either of the following cases, pass an empty outputs container.
      • If an external allocator is set by calling RegisterExternalAllocator and no output memory is allocated, the GE calls the external allocator API to allocate memory. You need to free the memory before the external allocator is destructed.
      • If you do not set an external allocator, GE uses the built-in allocator to allocate memory. The memory lifetime is tied to the graph lifetime. You need to proactively free the memory before graph unloading (before session destruction or GEFinalize calling), for example, by calling outputs.clear(). Failure to do so may result in undefined behavior.

Prototype

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

Parameters

Parameter

Input/Output

Description

graph_id

Input

ID of the graph.

stream

Input

Stream on which the graph is run.

inputs

Input

Input tensors of the computational graph, which are memory allocated on the device.

If the value of ge.exec.hostInputIndexes parameter is specified using options, gert::Tensor of the corresponding index specifies the memory space on the host. For details about the gert::Tensor type, see Constructor.

outputs

Output

Output tensors of the computational graph, which are memory allocated on the device.

Returns

Parameter

Type

Description

-

Status

SUCCESS: The graph is successfully run by using the asynchronous API.

FAILED: The graph fails to be run by using the asynchronous API.

Restrictions

  • The memory required by gert::Tensor must be allocated before this API call.
  • The storage address of the tensor on the device must be 32-byte aligned. Otherwise, an undefined error may occur.
  • Before calling this API, call aclrtCreateStream to create a stream. Before obtaining the output result, call aclrtSynchronizeStream to ensure that the tasks on the stream have been executed.

Example

For details, see Running a Graph Asynchronously.