---
title: 什么是FlowOperator
description: "FlowOperator是FlowGraph的节点基类，衍生类有FlowData和FlowNode两种类型。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/dataflowdevg/dfdevc_23_0006.html
sourcePath: /source/zh/canncommercial/900/others/dataflowdevg/dfdevc_23_0006.html
indexId: 20a3040c771270fb272e541a60d2465bc578a53172d4241c66e4b3872698fea669
---
# 什么是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。 1 2 3 auto function_pp = dflow::FunctionPp("func_pp") .SetCompileConfig("add_func_config.json") .SetInitParam("out_type", ge::DT_UINT32);
