数据处理方法、装置、分布式数据流编程框架及相关组件转让专利
申请号 : CN202010080853.6
文献号 : CN111324558B
文献日 : 2021-08-10
发明人 : 阚宏伟 , 吴楠 , 李仁刚 , 王彦伟
申请人 : 苏州浪潮智能科技有限公司
摘要 :
权利要求 :
1.一种数据处理方法,其特征在于,应用于主机端,所述主机端连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,所述数据处理方法包括:
将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;
向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输;
其中,所述主机端和所述FPGA加速端为可重构数据中心的设备;所述可重构数据中心的分布式数据流编程框架包括CPU加速栈和FPGA加速栈;
所述CPU加速栈,用于为数据处理任务的划分提供底层支持,还用于为数据处理子任务的调度提供主机端编程接口;所述CPU加速栈包括可重构数据中心软件开发包,所述可重构数据中心软件开发包的接口功能包括:用户指定板卡DDR地址、RDMA搬移接口、PR流式加载到FPGA的接口、PR加载到FPGA的指令接口、加载到Flash的指令接口、配置kernel参数接口、配置kernel返回值接口、启动kernel接口和强制终止kernel接口;
所述FPGA加速栈,用于提供与所述主机端编程接口对应的加速接口,还用于在执行所述数据处理子任务时提供加速数据控制程序和kernel控制程序。
2.根据权利要求1所述数据处理方法,其特征在于,在向所述目标FPGA加速板卡传输待计算数据之后,还包括:
将所述待计算数据的数据地址和数据长度配置至所述目标FPGA加速板卡,以便所述目标FPGA加速板卡根据所述数据地址和所述数据长度存储所述待计算数据。
3.根据权利要求1所述数据处理方法,其特征在于,还包括:将计算结果存放地址配置至所述目标FPGA加速板卡,以便所述目标FPGA加速板卡将中间计算数据和/或所述最终处理结果存储至所述计算结果存放地址。
4.根据权利要求1所述数据处理方法,其特征在于,还包括:从所有所述目标FPGA加速板卡中选取第一目标FPGA加速板卡;
向所述第一目标FPGA加速板卡传输所有所述数据处理子任务和任务分配信息;其中,所述任务分配信息包括所述数据处理子任务与所述目标FPGA加速板卡的对应关系;
利用所述第一目标FPGA加速板卡根据所述任务分配信息将所述数据处理子任务传输至对应的目标FPGA加速板卡。
5.根据权利要求1所述数据处理方法,其特征在于,向所述目标FPGA加速板卡传输待计算数据包括:
从所有所述目标FPGA加速板卡中选取第二目标FPGA加速板卡;
向所述第二目标FPGA加速板卡传输所有所述待计算数据和数据分配信息;其中,所述数据分配信息包括所述待计算数据与所述目标FPGA加速板卡的对应关系;
利用所述第二目标FPGA加速板卡根据所述数据分配信息将所述待计算数据传输至对应的FPGA加速板卡。
6.根据权利要求1所述数据处理方法,其特征在于,向所述目标FPGA加速板卡传输待计算数据包括:
通过自定义RDMA传输的方式向所述目标FPGA加速板卡传输对应的待计算数据;
相应的,还包括:
利用预设传输方式向所述目标FPGA加速板卡传输对应的数据处理子任务;其中,所述预设传输方式包括流式传输或整体打包传输。
7.根据权利要求1所述数据处理方法,其特征在于,还包括:当所述目标FPGA加速板卡基于网络向其他目标FPGA加速板卡传输所述中间计算数据时,向所述其他目标FPGA加速板卡传输所述中间计算数据的数据地址和数据长度,以便所述其他目标FPGA加速板卡根据所述中间计算数据的数据地址和数据长度存储所述中间计算数据。
8.根据权利要求1所述数据处理方法,其特征在于,所述目标FPGA加速板卡之间通过MAC接口传输数据,所述主机端与所述目标FPGA加速板卡之间通过PCIE接口传输数据,远端设备与所述目标FPGA加速板卡之间通过MAC接口传输数据。
9.根据权利要求1所述数据处理方法,其特征在于,当所述主机端和所述目标FPGA加速板卡为局域网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据在MAC层完成组包操作;
当所述主机端和所述目标FPGA加速板卡为公网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据在UDP的payload层完成组包操作,所述目标FPGA加速板卡之间的通信数据在UDP的payload层完成组包操作。
10.一种数据处理装置,其特征在于,所述数据处理装置连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,所述数据处理装置包括:
任务分配模块,用于将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;
任务执行模块,用于向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输;
其中,所述数据处理装置和所述FPGA加速端为可重构数据中心的设备;所述可重构数据中心的分布式数据流编程框架包括CPU加速栈和FPGA加速栈;
所述CPU加速栈,用于为数据处理任务的划分提供底层支持,还用于为数据处理子任务的调度提供主机端编程接口;所述CPU加速栈包括可重构数据中心软件开发包,所述可重构数据中心软件开发包的接口功能包括:用户指定板卡DDR地址、RDMA搬移接口、PR流式加载到FPGA的接口、PR加载到FPGA的指令接口、加载到Flash的指令接口、配置kernel参数接口、配置kernel返回值接口、启动kernel接口和强制终止kernel接口;
所述FPGA加速栈,用于提供与所述主机端编程接口对应的加速接口,还用于在执行所述数据处理子任务时提供加速数据控制程序和kernel控制程序。
11.一种分布式数据流编程框架,其特征在于,包括CPU加速栈和FPGA加速栈;
所述CPU加速栈,用于为数据处理任务的划分提供底层支持,还用于为数据处理子任务的调度提供主机端编程接口;所述CPU加速栈包括可重构数据中心软件开发包,所述可重构数据中心软件开发包的接口功能包括:用户指定板卡DDR地址、RDMA搬移接口、PR流式加载到FPGA的接口、PR加载到FPGA的指令接口、加载到Flash的指令接口、配置kernel参数接口、配置kernel返回值接口、启动kernel接口和强制终止kernel接口;
所述FPGA加速栈,用于提供与所述主机端编程接口对应的加速接口,还用于在执行所述数据处理子任务时提供加速数据控制程序和kernel控制程序;
其中,当所述分布式数据流编程框架工作时,所述CPU加速栈将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数据;所述FPGA加速栈利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
12.根据权利要求11所述分布式数据流编程框架,其特征在于,所述FPGA加速栈包括:静态区,用于执行所述CPU加速栈下发的数据处理子任务,还用于将数据处理结果发送至所述CPU加速栈或其他目标FPGA加速板卡;
FPGA加速引擎,用于向本地加速单元或其他目标FPGA加速板卡的加速单元传输所述数据处理子任务进行加速计算操作。
13.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1至9任一项所述数据处理方法的步骤。
14.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1至9任一项所述数据处理方法的步骤。
说明书 :
数据处理方法、装置、分布式数据流编程框架及相关组件
技术领域
背景技术
一方面导致数据呈指数增长发展,另一方面对这些数据处理需要的计算资源也相应的增
长。传统的计算是用CPU来处理,随着技术的不断发展,CPU的性能已无法成倍的提升。可重
构芯片如现场可编程门阵列(FPGA,Field Programmable Gate Array)具有加速许多工作
负载的潜力,能够完成解密运算、图像处理、解压缩以及人工智能相关计算。相关技术中通
过FPGA加速端实现对于通信密集及计算密集型任务的处理。但是相关技术中的FPGA加速端
中的两个FPGA加速板卡之间需要数据交互时,需要FPGA加速板卡通过PCIE将数据传输到主
机端,主机端再将数据传输给其他板卡,数据计算的效率较低,FPGA云服务器中支持多板卡
设备的个数受主机端可支持PCIE板卡个数的物理限制。
发明内容
制,提高数据处理效率。
络连接,该状态预警方法包括:
或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算
数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络
进行传输。
便所述其他目标FPGA加速板卡根据所述中间计算数据的数据地址和数据长度存储所述中
间计算数据。
MAC接口传输数据。
之间的通信数据在UDP的payload层完成组包操作。
装置包括:
果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源
数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA
加速板卡之间的网络进行传输。
FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数据;所述FPGA加速栈利用每个所述
目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结
果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源
数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA
加速板卡之间的网络进行传输。
骤。
方法包括:将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个
所述数据处理子任务对应的目标FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数
据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其
中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述
数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数
据通过所述目标FPGA加速板卡之间的网络进行传输。
子任务。在目标FPGA加速板卡处理数据处理子任务时,可以将其他目标FPGA加速板卡的数
据处理结果作为输入数据,也可以将自身计算得到的数据处理结果传输至其他目标FPGA加
速板卡。目标FPGA加速板卡之间通过网络传输数据处理结果,而不是先发送至主机端再经
由主机端进行转发。可见,本申请能够避免FPGA加速端中FPGA加速板卡数量受主机接口的
物理限制,提高数据处理效率。本申请同时还提供了一种数据处理装置、一种分布式数据流
编程框架、一种电子设备和一种存储介质,具有上述有益效果,在此不再赘述。
附图说明
员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
具体实施方式
本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员
在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
Processing Unit,中央处理器)可以用于实现对于数据处理子任务的划分。
划分为多个数据处理子任务。例如一项数据处理任务包括9步计算操作,可以将第1~3项计
算操作作为第一数据处理子任务,将第4~6项计算操作作为第二数据处理子任务,将第7~
9项计算操作作为第三数据处理子任务。再例如一项数据处理任务包括词法分析、语义分析
和哈希映射三种计算操作,可以将所有的词法分析操作作为第四数据处理子任务,可以将
所有的语法分析操作作为第五数据处理子任务,可以将所有的哈希映射操作作为第六数据
处理子任务。
的数据处理操作。
板卡之后,还可以确定每一目标FPGA加速板卡与数据处理子任务之间的对应关系,并基于
该对应关系将数据处理子任务传输至对应的目标FPGA加速板卡,即:将数据处理子任务对
应的固件烧录至相应的目标FPGA加速板卡中。
据可以为待计算数据,也可以为其他目标FPGA加速板卡的中间计算结果,还可以为待计算
数据和中间计算结果。每个目标FPGA加速板卡执行对应的数据处理子任务得到的数据处理
结果可以包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任
务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目
标FPGA加速板卡之间的网络进行传输。
标FPGA加速板卡根据所述数据地址和所述数据长度存储所述待计算数据。在上述实施方式
中,主机端通过向目标FPGA加速板卡传输待计算数据的数据地址和数据长度,使得目标
FPGA加速板卡根据该数据地址和数据长度存储待计算数据。
计算结果存放地址。在上述实施方式中,主机端通过向目标FPGA加速板卡传输计算结果存
放地址,使得目标FPGA加速板卡根据该计算结果存放地址存储中间计算数据和/或最终处
理结果,其他目标FPGA加速板卡可以根据计算结果存放地址读取中间计算数据,主机端可
以根据计算结果存放地址读取最终处理结果。
其他目标FPGA加速板卡根据所述中间计算数据的数据地址和数据长度存储所述中间计算
数据。具体的,目标FPGA加速板卡之间可以通过MAC接口传输中间计算数据,主机端与所述
目标FPGA加速板卡之间通过PCIE接口传输最终处理结果和/或待计算数据,远端设备与所
述目标FPGA加速板卡之间通过MAC接口传输数据。
理子任务。在目标FPGA加速板卡处理数据处理子任务时,可以将其他目标FPGA加速板卡的
数据处理结果作为输入数据,也可以将自身计算得到的数据处理结果传输至其他目标FPGA
加速板卡。目标FPGA加速板卡之间通过网络传输数据处理结果,而不是先发送至主机端再
经由主机端进行转发。可见,本实施例能够避免FPGA加速端中FPGA加速板卡数量受主机接
口的物理限制,提高数据处理效率。
与图1对应的实施例相结合得到进一步的实施方式,本实施例可以包括以下步骤:
数据处理子任务。主机端在向第一目标FPGA加速板卡传输所有数据处理子任务的同时还向
第一目标FPGA加速板卡传输任务分配信息。任务分配信息中存储有数据处理子任务与目标
FPGA加速板卡的对应关系,第一目标FPGA加速板卡可以利用该对应关系将所述数据处理子
任务传输至对应的目标FPGA加速板卡。
理子任务。作为一种可行的实施方式,主机端可以利用流式传输或整体打包传输的方式向
所述目标FPGA加速板卡传输对应的数据处理子任务。
结合得到进一步的实施方式,本实施例可以包括以下步骤:
待计算数据。主机端在向第二目标FPGA加速板卡传输所有数据处理子任务的同时还向第一
目标FPGA加速板卡传输数据分配信息。数据分配信息中存储各个待计算数据与目标FPGA加
速板卡的对应关系,第二目标FPGA加速板卡可以利用该对应关系将待计算数据传输至对应
的目标FPGA加速板卡。作为一种可行的实施方式,主机端可以通过自定义RDMA(Remote
Direct Memory Access,远程直接数据存取)传输的方式向所述目标FPGA加速板卡传输对
应的待计算数据。
层完成组包操作。当所述主机端和所述目标FPGA加速板卡为公网中的设备时,所述主机端
与所述目标FPGA加速板卡之间的通信数据(如待计算数据和/或最终处理结果)在UDP(User
Datagram Protocol,用户数据报协议)的payload层完成组包操作,所述目标FPGA加速板卡
之间的通信数据(如待计算数据和/或中间计算结果)在UDP的payload层完成组包操作。
于网络将FPGA资源进行池化,FPGA加速板卡间通过网络(10G网络、40G网络或100G网络)进
行连接,一方面保留机卡绑定的形式,即一台服务器上配一张或多张FPGA加速器,另一方面
引入了BOX OF FPGA(FPGA盘柜)模式。在FPGA盘柜里各类型的FPGA加速板卡(可以包括
Intel芯片和Xilinx芯片)通过网络进行数据交互。FPGA盘柜里的FPGA加速板卡与主机端上
配置的FPGA加速板卡也通过网络进行互联。通过上述方式解耦FPGA与CPU的紧耦合,通信数
据无需经主机端的CPU转发,使用MAC层或UDP之上的轻量化高可靠协议进行传输,从而降低
系统吞吐延迟。图4中的光模块为光纤接口模块。
FPGA加速板卡负责通信密集及计算密集型任务。可重构数据中心通过网络共享存储资源,
节点间采用分布式拓扑。可重构器件相关逻辑功能可分布式加载,并且支持标准的以太网
接口及协议。
可重构特性,以数据流编程为基础,本申请提供的面向可重构数据中心的分布式数据流编
程框架,提供分布式并行编程接口,完成计算任务到可重构设备的映射。分布式数据流编程
框架由CPU加速栈、FPGA加速栈以及映射模型组成。
擎加速栈通过上述接口主要实现对FPGA进行远程加载及更新,加载offload到FPGA上的算
法应用,加载算法参数、控制数据搬移路径、启动停止应用等,完成对FPGA云平台各指令的
控制。
辑子网划分,整个子网内由多个计算任务节点组成,节点之间通过自定义的高可靠轻量级
传输协议,实现服务器节点与FPGA加速单元之间、FPGA节点与FPGA节点之间的数据传输、控
制指令的通信。每个计算任务包括服务器节点上运行的逻辑控制模块、FPGA上运行的加速
计算模块。服务器节点的逻辑控制模块,利用可扩展的分布式编程框架提供的FPGA云平台
函数库实现,FPGA上运行的加速计算模块利用RTL进行实现并利用分布式编程框架提供的
IP层控制接口,完成可重构数据中心的并行计算任务。图5中NIC为网卡。
块、内存管理层、流表匹配层、加速数据管理模块、加速控制管理模块、RLTL协议支持层。用
户通过RDC SDK(可重构数据中心软件开发包)可完成应用数据搬移、Kernel更新以及运行
监控等任务。授权管理模块主要根据用户的不同需求完成基于FPGA的工作组管理及授权机
制,完成基于芯片ID的安全校验机制,提高用户网表/BIT文件的安全性。流表匹配模块主要
是利用根据协议解析相关内容并匹配到相关功能模型。加速数据及控制管理主要完成对控
制流及数据流的管理。
等。
icfTransterDataRDMA RDMA搬移接口
icfCreateProgramToFPGA PR流式加载到FPGA的接口
icfLoadProgramToFPGA PR加载到FPGA的指令接口
icfLoadProgramToFlash 加载到Flash的指令接口
icfConfigKernel 配置kernel参数接口
icfConfigKernelReturn 配置kernel返回值接口
icfStartKernel 启动kernel接口
icfEndKernel 强制终止kernel接口
互并提供物理接口;FPGA加速引擎,用于通向加速单元传输所述待计算数据进行加速计算
操作。所述FPGA加速引擎用于通过PCIE接口传输所述待计算数据进行本地加速计算操作;
还用于通过PCIE接口和MAC接口传输所述待计算数据进行远程加速计算操作。所述静态区
与所述FPGA加速引擎通过目标总线进行数据交互;其中,所述目标总线包括BUSA、BUSC、
BUSD和BUSE中的任一种总线或任几种总线的组合。
命令,上报FPGA本地的信息,完成与主机的交互处理。数据面主要是各类物理接口包括10/
100G MAC以及PCIE通道等。
实现远程动态重配置;路由转发模块的转发路由表软件可配置,FPGA内部通过查找路由转
发表实现路由选择。
互,表2中FIM指FPGA Interface Manager(FPGA接口管理)
简称FPGA3)和FPGA加速板卡4(以下简称FPGA4)。
减或相乘或相除。Kernel3将b+2的结果与从HOST端搬移到FPGA3的数据d进行相加或相减或
相乘或相除。Kernel4将Kernel2与Kernel3输出的结果相乘,得到的结果传递给HOST端。
HOST端分别向FPGA2与FPGA3搬移数据c、d,Kernel2对(a+1)与c进行算法(+‑*/可选),
Kernel3对(b+2)与d进行算法(+‑*/可选),并将运算结果搬移给FPGA4。Kernel 4将结果相
乘,并将结果按HOST端要求存储到本地,HOST将运算结果搬移至HOST端。
处理装置包括:
果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源
数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA
加速板卡之间的网络进行传输。
理子任务。在目标FPGA加速板卡处理数据处理子任务时,可以将其他目标FPGA加速板卡的
数据处理结果作为输入数据,也可以将自身计算得到的数据处理结果传输至其他目标FPGA
加速板卡。目标FPGA加速板卡之间通过网络传输数据处理结果,而不是先发送至主机端再
经由主机端进行转发。可见,本实施例能够避免FPGA加速端中FPGA加速板卡数量受主机接
口的物理限制,提高数据处理效率。
Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种
可以存储程序代码的介质。
步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明
即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还
可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围
内。
之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那
些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者
设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。