ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

CANN/GE异步运行图API

CANN/GE异步运行图API RunGraphAsync【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge产品支持情况产品是否支持Atlas A3 训练系列产品 / Atlas A3 推理系列产品√Atlas A2 训练系列产品 / Atlas A2 推理系列产品√头文件/库文件头文件#include ge/ge_api_v2.h库文件libge_runner_v2.so功能说明异步运行指定ID对应的Graph图输出运行结果。本接口与RunGraph/RunGraphWithStreamAsync互斥若在调用本接口前未执行LoadGraph完成图加载则本接口将自动调用LoadGraph以完成加载。本接口与RunGraph均为执行指定id对应的图并输出结果区别于RunGraph的是该接口异步运行。用户通过回调函数RunAsyncCallbackV2获取图计算结果即用户自行定义函数RunAsyncCallbackV2。该回调函数当Status为SUCCESS时即可处理数据。函数原型Status RunGraphAsync(uint32_t graph_id, const std::vectorgert::Tensor inputs, RunAsyncCallbackV2 callback)参数说明参数名输入/输出说明graph_id输入子图对应的ID。inputs输入计算图输入数据可以位于Host也可以位于Device上。如果数据位于Host上而执行在device上用户输入进入数据队列时需要对每个输入做一次内存的申请和拷贝输入较大或者较多时可能存在性能瓶颈。callback输出当前子图对应的回调函数输出是GE申请的Host内存。using Status uint32_t; using RunAsyncCallbackV2 std::functionvoid(Status, std::vectorgert::Tensor );返回值说明参数名类型说明-StatusGE_CLI_GE_NOT_INITIALIZEDGE未初始化。SUCCESS异步运行图成功。FAILED异步运行图失败。约束说明无调用示例调用接口AddGraph加载子图。std::map AscendString, AscendString options; ge::GeSession *session new GeSession(options); uint32_t graph_id 0; ge::Graph graph; Status ret session-AddGraph(graph_id, graph);用户自定义RunAsyncCallbackV2来决定如何处理数据例如void CallBack(Status result, std::vectorgert::Tensor out_tensor) { if(result ge::SUCCESS) { // 读取out_tensor数据 用户根据需求处理数据 for(auto tensor : out_tensor) { auto data tensor.GetAddr(); int64_t length tensor.GetSize(); } } }定义好指定图的输入数据const std::vectorgert::Tensor inputs。调用接口RunGraphAsync(graph_id, inputs, CallBack)。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表