RunGraphWithStreamAsync
Applicability
|
Product |
Supported or Not |
|---|---|
|
|
√ |
|
|
√ |
|
|
x |
|
|
√ |
|
|
√ |
Header File/Library File
- Header file: #include <ge/ge_api.h>
- Library file: libge_runner.so
Function Usage
Runs the graph of a specified ID and returns the running result. This API is asynchronous. This API is used to build, load, and run graphs.
Both this function 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.
You do not need to allocate the output memory in either of the following cases:
- If the external allocator is set by calling RegisterExternalAllocator and the output memory is not allocated, the GE calls the external allocator API to allocate memory. You need to free the memory before the external allocator is destructed.
- If no external allocator is set and no output memory is allocated in the dynamic graph scenario, the GE uses the built-in allocator to allocate memory. The lifetime of the memory is the same as that of the graph. You need to free the memory before unloading the graph (that is, before Session destructor and GEFinalize).
Prototype
1
|
Status RunGraphWithStreamAsync(uint32_t graph_id, void *stream, const std::vector<Tensor> &inputs,std::vector<Tensor> &outputs) |
Parameters
|
Parameter |
Input/Output |
Description |
|---|---|---|
|
graph_id |
Input |
Subgraph ID. |
|
stream |
Input |
Stream on which a graph is run. |
|
inputs |
Input |
Input data of the current subgraph, which is the memory on the device. If the value of ge.exec.hostInputIndexes parameter is specified using options, Tensor of the corresponding index specifies the memory space on the host. |
|
outputs |
Output |
Output data of the current subgraph, which is the memory 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 Tensor must be allocated before this API call.
- Before calling this API, you need to use aclrtCreateStream provided by acl to create a stream. The stream can be created only when the default context is used.
- Before the graph running result is obtained, the tasks on the stream must be completed by using the aclrtSynchronizeStream API.