DataFlow框架结构
图1 DataFlow框架结构
DataFlow结构可以分为3层,各层介绍如下。
- DataFlow API:负责异构计算流表达,App开发人员使用DataFlow API表达业务的数据流,生成基于Graph IR的计算图。数据流表达详细描述请参见数据流表达。
- 异构并行编译器:负责异构计算图编译,将计算图基于异构计算单元的组成关系和连接拓扑进行图切分、图优化和图部署,生成各个异构计算单元的执行Bin。
- 异构Runtime:根据异构计算图编译输出的结果,将执行Bin调度到对应的异构执行单元上执行。异构Runtime详细描述请参见异构Runtime。
数据流表达
- 数据流图表达的规则和约束如下。
- FlowGraph是DAG(Directed Acyclic Graph)图,数据流有向且不允许有成环表达。
- 不支持无输入或无输出的FlowGraph。
- 节点间流转的数据可能存在多节点共享,要保证不可变的,因此不允许计算节点修改输入数据,必要时需要做拷贝处理。
- 数据流支持1对多,表示复制相同数据后分发给多个Node;但同一个节点的多个输出发给同一个输入。

- 支持表达调用graphPP执行,实现控制流表达如循环迭代,分支控制逻辑如下。

异构Runtime
异构Runtime针对CPU、NPU异构节点提供不同的执行器,包括如下。
- CPU图执行器:部署在CPU节点,用于执行计算图。
- NPU图执行器:部署于NPU,用于执行计算图。
- UDF执行器:自定义Func执行引擎,可灵活部署于CPU节点或使用NPU上的AICPU。
各执行器以独立进程方式部署,每个执行进程间采用如下数据通信方式交互数据:在同一节点内采用共享内存、共享队列;跨节点使用RDMA/UB高性能通信。
执行器间数据流的生产、消费关系;1对多分发关系;跨节点数据通信统一由FlowGW(数据流网关)代理并转发。
