下载
中文
注册

什么是FlowOperator

FlowOperator是FlowGraph的节点基类,衍生类有FlowData和FlowNode两种类型。

什么是FlowData

FlowData是FlowGraph的输入节点。FlowData定义输入节点的名称和index。详细信息请参考FlowData类

什么是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来实现。

    UDF实现可以使用C++,也可以使用Python。C++请参考UDF开发,Python请参考DataFlow开发指南(Python)中的"专题>UDF开发"。

    1
    2
    3
    auto function_pp = dflow::FunctionPp("func_pp")
                       .SetCompileConfig("add_func_config.json")
                       .SetInitParam("out_type", ge::DT_UINT32);