RunGraphWithStreamAsync
【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge
头文件/库文件
- 头文件:#include <ge/ge_api.h>
- 库文件:libge_runner.so
功能说明
异步运行指定ID对应的Graph图,输出运行结果。该接口包括了编译,加载和运行Graph的操作。
此函数与RunGraph均为运行指定ID对应的图,并输出结果,区别于RunGraph的是,该接口:
- 异步运行。
- inputs和outputs均为Device上的内存空间,且需要在运行前由用户分配内存大小。如下两种情况如果不分配输出内存,ouputs传空:
- 用户通过RegisterExternalAllocator设置了外置allocator,如果没有分配输出内存,由GE调用外置allocator的接口分配内存,用户需要在外置allocator析构前释放这块内存。
- 用户没有设置外置allocator,GE将使用内置allocator分配内存,内存的生命周期与图的生命周期保持一致,用户需要在图卸载前(Session析构前或GEFinalize调用前)主动释放此内存,比如通过调用outputs.clear()方法。若未及时释放,将引发未定义行为。
函数原型
Status RunGraphWithStreamAsync(uint32_t graph_id, void *stream, const std::vector<Tensor> &inputs,std::vector<Tensor> &outputs)参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| graph_id | 输入 | 要运行图对应的ID。 |
| stream | 输入 | 指定图在哪个Stream上运行。 |
| inputs | 输入 | 计算图输入Tensor,为Device上的内存空间。 如果通过options指定了ge.exec.hostInputIndexes参数,对应索引的Tensor可以为Host上的内存空间。 |
| outputs | 输出 | 计算图输出Tensor,为Device上的内存空间。 |
返回值说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| - | Status | SUCCESS:异步运行图成功。 FAILED:异步运行图失败。 |
约束说明
调用该接口前,请先分配好Tensor需要使用的内存。
Tensor在Device侧的存储地址,必须32字节对齐,否则可能会出现未定义错误。
调用该接口前,需要通过acl提供的aclrtCreateStream接口创建Stream,且只支持Stream为默认Context的场景。
得到输出运行结果前,需要通过aclrtSynchronizeStream接口保证Stream上的任务已经执行完。
接口详细说明请参见《Runtime运行时 API》中的“Stream管理”。
调用示例
请参见异步运行Graph。
【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考