使用DataFlow API构建graph
- 构建FlowGraph。通过FlowNode和FunctionPp构建graph。示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
// 构造DataFlow的FlowGraph图 dflow::FlowGraph flow_graph("flow_graph"); // 构造输入节点 auto data0 = dflow::FlowData("Data0", 0); auto data1 = dflow::FlowData("Data1", 1); auto node0 = dflow::FlowNode("node0", 2, 1).SetInput(0, data0).SetInput(1, data1); // function_pp auto pp0 = dflow::FunctionPp("func_pp0") .SetCompileConfig("./add_func.json") .SetInitParam("out_type", ge::DT_UINT32); node0.AddPp(&pp0);
- 运行graph。有如下两种方式。
- Session run方式,示例如下:
1 2 3 4 5 6 7 8 9 10
// 创建session ge::Session* session1 = new Session(options); assert(session1 != NULL); ret = session1->AddGraph(graphId, graph); if (!ret) { return; } // 运行graph ret = session1->RunGraph(graphId, input, output); if (!ret) { return; } GEFinalize(); return;
- Dataflow方式,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
// dataflow异步接口执行graph: ge::DataFlowInfo dataFlowInfo; dataFlowInfo.SetStartTime(0); dataFlowInfo.SetEndTime(5); std::vector<ge::Tensor> inputsData = {inputTensor, inputTensor}; geRet = session->FeedDataFlowGraph(0, inputsData, dataFlowInfo, 3000); if (geRet != ge::SUCCESS) { std::cout << "TEST====Feed input data failed============." << std::endl; ge::GEFinalize(); return -1; } // 获取输出 std::vector<ge::Tensor> outputsData; geRet = session->FetchDataFlowGraph(0, outputsData, dataFlowInfo, 3000); if (geRet != ge::SUCCESS) { std::cout << "TEST====Fetch output data failed." << std::endl; ge::GEFinalize(); return -1; }
- Session run方式,示例如下:
父主题: UDF开发