什么是FlowOperator
FlowOperator是FlowGraph的节点基类,衍生类有FlowData和FlowNode两种类型。
什么是FlowNode
FlowNode是FlowGraph的计算节点。FlowNode定义了计算节点的名称、输入个数、输出个数,FlowNode的实际计算逻辑由AddPp方法添加的ProcessPoint决定,ProcessPoint可以是FunctionPp,也可以是GraphPp。详细信息请参考FlowNode类。
- GraphPp
GraphPp的主要函数原型包括如下。
1 2
GraphPp(const char *pp_name, const GraphBuilder &builder) // GraphPp构造函数。 GraphPp &SetCompileConfig(const char *json_file) // 设置GraphPp的json配置文件路径和文件名。用于GraphPp和AscendGraph的映射。
以Add功能为例,介绍如何构建一个GraphPp。如下示例中,Add有两个输入data0和data1,GraphPp和AscendGraph的映射是通过GraphPp的构造方法里的BuildGraph参数传递的,add_graph_config.json用于配置AscendGraph的编译信息。1 2 3 4 5 6 7 8 9 10 11
ge::Graph BuildGraph() { auto data0 = op::Data("data0").set_attr_index(0); auto data1 = op::Data("data1").set_attr_index(1); auto add = op::Add("add").set_input_x1(data0).set_input_x2(data1); ge::Graph graph("Graph"); graph.SetInputs({data0, data1}).SetOutputs({add}); return graph; } auto graph_pp = dflow::GraphPp("graph_pp", BuildGraph) .SetCompileConfig("add_graph_config.json");
- FunctionPp
FunctionPp的主要函数原型包括如下。
1 2 3
FunctionPp(const char_t *pp_name) // FunctionPp构造函数。 FunctionPp &SetCompileConfig(const char *json_file) // 用于FunctionPp和UDF的映射,json_file里配置了UDF的编译信息。 FunctionPp &SetInitParam(const char *attr_name, const ge::DataType &value) // 设置FunctionPp的初始化参数。
以Add功能为例,介绍如何构建一个FunctionPp。如下示例中,FunctionPp的名称叫"func_pp",FunctionPp的功能通过UDF实现,FunctionPp和UDF的映射通过add_func_config.json来实现。1 2 3
auto function_pp = dflow::FunctionPp("func_pp") .SetCompileConfig("add_func_config.json") .SetInitParam("out_type", ge::DT_UINT32);