---
title: DataFlow框架介绍
description: "图1 DataFlow框架结构"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/dataflowdevg/dfdevp_23_0031.html
sourcePath: /source/zh/canncommercial/900/others/dataflowdevg/dfdevp_23_0031.html
indexId: 5738916c1f227c4fd1f5e46eacd06ec81fa52c315761b3ca48662577a68e8f5969
---
# DataFlow框架介绍

#### DataFlow框架结构

图1 DataFlow框架结构

DataFlow结构可以分为3层，各层介绍如下。

- DataFlow API：负责异构计算流表达，App开发人员使用DataFlowAPI表达业务的数据流，生成基于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（数据流网关）代理并转发。
