昇腾社区首页
中文
注册

DataFlow结构

DataFlow结构

图1 DataFlow结构

DataFlow分三层,各层介绍如下。

  • DataFlow API:负责异构计算流表达,App开发人员使用DataFlow API表达业务的数据流,生成基于Graph IR的计算图。数据流表达详细描述请参见数据流表达
  • 异构并行编译器:负责异构计算图编译,将计算图基于异构计算单元的组成关系和连接拓扑进行图切分、图优化和图部署,生成各个异构计算单元的执行Bin。
  • 异构Runtime:根据异构计算图编译输出的结果,将执行Bin调度到对应的异构执行单元上执行。异构Runtime详细描述请参见异构Runtime

数据流表达

图2 数据流表达示意图

上图中各个节点解释如下。

  • FlowData:数据节点,每个FlowData对应一个输入。
  • FlowNode:逻辑计算节点的抽象表示。可以关联具体的ProcessPoint实现,ProcessPoint可分为FunctionPp (UDF的计算处理点)、GraphPP(Graph的计算处理点)。
  • FlowOutput:数据输出。
  • Edge:表示数据流连边。
  • FlowGraph:由一系列输入节点FlowData和计算节点FlowNode以及数据流连边Edge构成的DAG图。
  • 数据流图表达的规则和约束如下。
    • FlowGraph是DAG(Directed Acyclic Graph)图,数据流有向且不允许有成环表达。
    • 不支持无输入,也不支持无输入且无输出的FlowGraph。
    • 节点间流转的数据要保证不可变的,因此不允许计算节点修改输入数据。
    • 数据流支持1对多,表示复制相同数据后分发给多个Node;但不支持多对1。

    • 支持以子图表达为调用闭包,实现控制流表达如循环迭代,分支控制逻辑如下。

异构Runtime

异构Runtime针对CPU、NPU异构节点提供不同的执行器,包括如下。

  • CPU图执行器:部署在CPU节点,用于执行计算图。
  • NPU图执行器:部署于NPU,用于执行计算图。
  • UDF执行器:自定义Func执行引擎,可灵活部署于CPU节点或使用NPU上的AICPU。

各执行器以独立进程方式部署,每个执行进程间采用如下数据通信方式交互数据:在同一节点内采用共享内存、共享队列;跨节点使用RDMA/UB高性能通信。

执行器间数据流的生产、消费关系;1对多分发关系;跨节点数据通信统一由FlowGW(数据流网关)代理并转发。

上图中的Q表示队列。