昇腾社区首页
中文
注册

DataFlow框架介绍

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;但同一个节点的多个输出发给同一个输入。

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

异构Runtime

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

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

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

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