CANN/ge DataFlow接口列表
DataFlow接口列表
【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge
您可以在“${INSTALL_DIR}/include/flow_graph”路径下查看对应接口的头文件。
${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。
| 接口分类 | 头文件路径 | 简介 | 对应的库文件 |
|---|---|---|---|
| FlowOperator类 | flow_graph.h | FlowOperator类是DataFlow Graph的节点基类,继承于GE的Operator。不支持在外部单独构造使用。 | NA |
| FlowData类 | flow_graph.h | 继承于FlowOperator类,为DataFlow Graph中的数据节点,每个FlowData对应一个输入。 | libflow_graph.so |
| FlowNode类 | flow_graph.h | 继承于FlowOperator类,DataFlow Graph中的计算节点。 | libflow_graph.so |
| FlowGraph类 | flow_graph.h | DataFlow的graph,由输入节点FlowData和计算节点FlowNode构成。 | libflow_graph.so |
| ProcessPoint类 | process_point.h | ProcessPoint是一个虚基类,无法实例化对象。 | NA |
| FunctionPp类 | process_point.h | 继承于ProcessPoint类,用来表示Function的计算处理点。 | libflow_graph.so |
| GraphPp类 | process_point.h | 继承自ProcessPoint类,用来表示Graph的计算处理点。 | libflow_graph.so |
| DataFlowInputAttr结构体 | flow_attr.h | 定义timeBatch和countBatch两种功能实现UDF组batch能力。 | libflow_graph.so |
[!NOTE]说明 头文件中出现的char_t类型是char类型的别名。
DataFlow构图接口
表 1DataFlow构图接口
| 接口名称 | 简介 |
|---|---|
| FlowOperator类 | FlowOperator类是DataFlow Graph的节点基类,继承于GE的Operator。 |
| FlowData的构造函数和析构函数 | FlowData构造函数和析构函数,构造函数会返回一个FlowData节点。 |
| FlowNode构造函数和析构函数 | FlowNode构造函数和析构函数,构造函数返回一个FlowNode节点。 |
| SetInput | 给FlowNode设置输入,表示将src_op的第src_index个输出作为FlowNode的第dst_index个输入,返回设置好输入的FlowNode节点。 |
| AddPp | 给FlowNode添加映射的ProcessPoint,当前一个FlowNode仅能添加一个ProcessPoint,添加后会默认将FlowNode的输入输出和ProcessPoint的输入输出按顺序进行映射。 |
| MapInput | 给FlowNode映射输入,表示将FlowNode的第node_input_index个输入给到ProcessPoint的第pp_input_index个输入,并且给ProcessPoint的该输入设置上attrs里的所有属性,返回映射好的FlowNode节点。该函数可选,不被调用时会默认按顺序映射FlowNode和ProcessPoint的输入。 |
| MapOutput | 给FlowNode映射输出,表示将ProcessPoint的第pp_output_index个输出给到FlowNode的第node_output_index个输出,返回映射好的FlowNode节点。 |
| SetBalanceScatter | 设置节点balance scatter属性,具有balance scatter属性的UDF可以使用balance options设置负载均衡输出。 |
| SetBalanceGather | 设置节点balance gather属性,具有balance gather属性的UDF可以使用balance options设置负载均衡亲和输出。 |
| FlowGraph构造函数和析构函数 | FlowGraph构造函数和析构函数,构造函数会返回一张空的FlowGraph图。 |
| SetInputs | 设置FlowGraph的输入节点,会自动根据节点的输出连接关系构建出一张FlowGraph图,并返回该图。 |
| SetOutputs | 设置FlowGraph的输出节点,并返回该图。 |
| SetOutputs(index) | 设置FlowGraph中的FlowNode和FlowNode输出index的关联关系,并返回该图。常用于设置FlowNode部分输出场景,比如FlowNode1有2个输出,但是作为FlowNode2输入的时候只需要FlowNode1的一个输出,这种情况下可以设置FlowNode1的一个输出index。 |
| SetContainsNMappingNode | 设置FlowGraph是否包含n_mapping节点。 |
| SetInputsAlignAttrs | 设置FlowGraph中的输入对齐属性。 |
| const ge::Graph &ToGeGraph() const-const.md) | 将FlowGraph转换到GE的Graph。 |
| SetGraphPpBuilderAsync | 设置FlowGraph中的GraphPp的Builder是否异步执行。 |
| SetExceptionCatch | 设置用户异常捕获功能是否开启。 |
| ProcessPoint析构函数 | ProcessPoint析构函数。 |
| GetProcessPointType | 获取ProcessPoint的类型。 |
| GetProcessPointName | 获取ProcessPoint的名称。 |
| GetCompileConfig | 获取ProcessPoint编译配置的文件。 |
| Serialize(ProcessPoint类) | ProcessPoint的序列化方法。由ProcessPoint的子类去实现该方法的功能。 |
| FunctionPp构造函数和析构函数 | FunctionPp的构造函数和析构函数,构造函数会返回一个FunctionPp对象。 |
| SetCompileConfig(FunctionPp类) | 设置FunctionPp的json配置文件名字和路径,该配置文件用于将FunctionPp和UDF进行映射。 |
| AddInvokedClosure (添加调用的GraphPp).md) | 添加FunctionPp调用的GraphPp,返回添加好的FunctionPp。 |
| AddInvokedClosure (添加调用的ProcessPoint子类).md) | 添加FunctionPp调用的GraphPp,返回添加好的FunctionPp。 |
| AddInvokedClosure (添加调用的FlowGraphPp).md) | 添加FunctionPp调用的FlowGraphPp,返回添加好的FunctionPp。 |
| SetInitParam | 设置FunctionPp的初始化参数,返回设置好的FunctionPp。 |
| Serialize(FunctionPp类) | FunctionPp的序列化方法。 |
| GetInvokedClosures | 获取FunctionPp调用的GraphPp。 |
| GraphPp构造函数和析构函数 | GraphPp构造函数和析构函数,构造函数会返回一个GraphPp对象。 |
| SetCompileConfig(GraphPp类) | 设置GraphPp的json配置文件路径和文件名。配置文件用于AscendGraph的描述和编译。 |
| Serialize(GraphPp类) | GraphPp的序列化方法。 |
| GetGraphBuilder(GraphPp类) | 获取GraphPp中Graph的创建函数。 |
| FlowGraphPp构造函数和析构函数 | FlowGraphPp构造函数和析构函数,构造函数会返回一个FlowGraphPp对象。 |
| Serialize(FlowGraphPp类) | FlowGraphPp的序列化方法。 |
| GetGraphBuilder(FlowGraphPp类) | 获取FlowGraphPp中Graph的创建函数。 |
| TimeBatch | TimeBatch功能是基于UDF为前提的。 正常模型每次处理一个数据,当需要一次处理一批数据时,就需要将这批数据组成一个Batch,最基本的Batch方式是将这批N个数据直接拼接,然后shape前加N,而某些场景需要将某段或者某几段时间数据组成一个batch,并且按特定的维度拼接,则可以通过使用TimeBatch功能来组Batch。 |
| CountBatch | CountBatch功能是指基于UDF为计算处理点将多个数据按batchSize组成batch。 |
DataFlow运行接口
表 2DataFlow运行接口
| 接口名称 | 简介 |
|---|---|
| FeedDataFlowGraph(feed所有输入) | 将所有数据输入到Graph图。 |
| FeedDataFlowGraph(按索引feed输入) | 将数据按索引输入到Graph图。 |
| FeedDataFlowGraph(feed所有FlowMsg) | 将数据输入到Graph图。 |
| FeedDataFlowGraph(按索引feed FlowMsg) | 将数据按索引输入到Graph图。 |
| FeedRawData | 将原始数据输入到Graph图。 |
| FetchDataFlowGraph(获取所有输出数据) | 获取图输出数据。 |
| FetchDataFlowGraph(按索引获取输出数据) | 按索引获取图输出数据。 |
| FetchDataFlowGraph(获取所有输出FlowMsg) | 获取图输出数据。 |
| FetchDataFlowGraph(按索引获取输出FlowMsg) | 按索引获取图输出数据。 |
| DataFlowInfo数据类型构造函数和析构函数 | DataFlowInfo构造函数和析构函数。 |
| SetUserData(DataFlowInfo数据类型) | 设置用户信息。 |
| GetUserData(DataFlowInfo数据类型) | 获取用户信息。 |
| SetStartTime(DataFlowInfo数据类型) | 设置数据的开始时间戳。 |
| GetStartTime(DataFlowInfo数据类型) | 获取数据的开始时间戳。 |
| SetEndTime(DataFlowInfo数据类型) | 设置数据的结束时间戳。 |
| GetEndTime(DataFlowInfo数据类型) | 获取数据的结束时间戳。 |
| SetFlowFlags(DataFlowInfo数据类型) | 设置数据中的flags。 |
| GetFlowFlags(DataFlowInfo数据类型) | 获取数据中的flags。 |
| SetTransactionId(DataFlowInfo数据类型) | 设置DataFlow数据传输使用的事务ID。 |
| GetTransactionId(DataFlowInfo数据类型) | 获取DataFlow数据传输使用的事务ID。 |
| FlowMsg数据类型构造函数和析构函数 | FlowMsg构造函数和析构函数。 |
| GetMsgType(FlowMsg数据类型) | 获取FlowMsg的消息类型。 |
| SetMsgType(FlowMsg数据类型) | 设置FlowMsg的消息类型。 |
| GetTensor(FlowMsg数据类型) | 获取FlowMsg中的Tensor指针。 |
| GetRetCode(FlowMsg数据类型) | 获取输入FlowMsg中的错误码。 |
| SetRetCode(FlowMsg数据类型) | 设置FlowMsg中的错误码。 |
| SetStartTime(FlowMsg数据类型) | 设置FlowMsg消息头中的开始时间戳。 |
| GetStartTime(FlowMsg数据类型) | 获取FlowMsg消息中的开始时间戳。 |
| SetEndTime(FlowMsg数据类型) | 设置FlowMsg消息头中的结束时间戳。 |
| GetEndTime(FlowMsg数据类型) | 获取FlowMsg消息中的结束时间戳。 |
| SetFlowFlags(FlowMsg数据类型) | 设置FlowMsg消息头中的flags。 |
| GetFlowFlags(FlowMsg数据类型) | 获取FlowMsg消息头中的flags。 |
| GetTransactionId(FlowMsg数据类型) | 获取FlowMsg消息中的事务ID。 |
| SetTransactionId(FlowMsg数据类型) | 设置FlowMsg消息中的事务ID。 |
| SetUserData(FlowMsg数据类型) | 设置用户信息。 |
| GetUserData(FlowMsg数据类型) | 获取用户信息。 |
| GetRawData(FlowMsg数据类型) | 获取RawData类型的数据对应的数据指针和数据大小。 |
| AllocTensor(FlowBufferFactory数据类型) | 根据shape、data type和对齐大小申请Tensor。 |
| AllocTensorMsg(FlowBufferFactory数据类型) | 根据shape、data type和对齐大小申请FlowMsg。 |
| AllocRawDataMsg(FlowBufferFactory数据类型) | 根据输入的size申请一块连续内存,用于承载raw data类型的数据。 |
| AllocEmptyDataMsg(FlowBufferFactory数据类型) | 申请空数据的MsgType类型的message。 |
| ToFlowMsg(tensor) | 根据输入的Tensor转换成用于承载Tensor的FlowMsg。 |
| ToFlowMsg(raw data) | 根据输入的raw data转换成用于承载raw data的FlowMsg。 |
【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
