---
title: DataFlow简介
description: "DataFlow是一套面向异构系统的应用开发和执行框架，提供了一套API来帮助用户快速表达业务逻辑。框架屏蔽异构硬件和组网的差异，并以异步流水方式提升应用的整体性能和吞吐量。同时，DataFlow提供了简单灵活的部署策略，用户可以方便地调整每个业务实例的个数以及部署位置，从而提升应用的资源利用率，降低用户的使用成本。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/dataflowdevg/dfdevp_23_0006.html
sourcePath: /source/zh/canncommercial/900/others/dataflowdevg/dfdevp_23_0006.html
indexId: a134bdbb89151924be4b9eb2bd3d77c3bf94150d38069957fa3e91aab59daabc69
---
# DataFlow简介

DataFlow是一套面向异构系统的应用开发和执行框架，提供了一套API来帮助用户快速表达业务逻辑。框架屏蔽异构硬件和组网的差异，并以异步流水方式提升应用的整体性能和吞吐量。同时，DataFlow提供了简单灵活的部署策略，用户可以方便地调整每个业务实例的个数以及部署位置，从而提升应用的资源利用率，降低用户的使用成本。

下图是一个应用DataFlow使能异步流水提升吞吐的示例：


示例应用由3个计算功能组成，其中计算功能1和计算功能3为用户自定义函数，计算功能2为计算图执行，原始流程中3个计算流程串行执行。

DataFlow通过FlowGraph来承载整个计算流，每个计算功能对应图上的一个FlowNode节点，并通过FuncProcessPoint或者GraphProcessPoint来承载节点功能。节点间通过异步数据流连接，当FlowGraph有多组数据输入时，多个FlowNode能够同时处理不同的数据，即将原始的串行执行流程转换为了异步流水的执行过程。

DataFlow各个节点的关系如下所示：


-   FlowGraph
：DataFlow的Graph，由输入节点FlowData和计算节点FlowNode构成，是DAG（Directed Acyclic Graph）图，数据流有向且不允许有成环表达。
-   FlowData
：FlowGraph的输入节点。FlowData定义了输入节点的名称和类型。
- FlowNode：FlowGraph的计算节点。FlowNode定义了计算节点的名称、输入个数、输出个数。支持如下两种类型。

  -     FuncProcessPoint
：Func的计算处理点，通过    UDF
（User Defined Function）实现用户自定义功能。
  -     GraphProcessPoint
：Graph的计算处理点，通过IR构图实现用户的计算逻辑。

DataFlow支持用户通过FuncProcessPoint和GraphProcessPoint编写自定义处理函数，通过DataFlow构图以FlowModel的方式运行。

更多DataFlow信息请参考DataFlow框架介绍。
