数据处理方法、装置、分布式数据流编程框架及相关组件转让专利

申请号 : CN202010080853.6

文献号 : CN111324558B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 阚宏伟吴楠李仁刚王彦伟

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请公开了一种数据处理方法,应用于主机端,所述主机端连接FPGA加速端,FPGA加速端包括多个FPGA加速板卡,FPGA加速板卡之间通过网络连接,数据处理方法包括将数据处理任务划分为多个数据处理子任务,并在FPGA加速端中确定每个数据处理子任务对应的目标FPGA加速板卡;向目标FPGA加速板卡传输待计算数据,并利用每个目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果。本申请能够避免FPGA加速端中FPGA加速板卡数量受主机接口的物理限制,提高数据处理效率。本申请还公开了一种数据处理装置、一种分布式数据流编程框架、一种电子设备及一种存储介质,具有以上有益效果。

权利要求 :

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任一项所述数据处理方法的步骤。

说明书 :

数据处理方法、装置、分布式数据流编程框架及相关组件

技术领域

[0001] 本申请涉及云计算技术领域,特别涉及一种数据处理方法、装置、一种分布式数据流编程框架、一种电子设备及一种存储介质。

背景技术

[0002] 随着人工智能及大数据的快速发展,数据中心里的数据成倍增长,同时AI(Artificial Intelligence,人工智能)的快速发展也带来了对数据高性能计算的要求。这
一方面导致数据呈指数增长发展,另一方面对这些数据处理需要的计算资源也相应的增
长。传统的计算是用CPU来处理,随着技术的不断发展,CPU的性能已无法成倍的提升。可重
构芯片如现场可编程门阵列(FPGA,Field Programmable Gate Array)具有加速许多工作
负载的潜力,能够完成解密运算、图像处理、解压缩以及人工智能相关计算。相关技术中通
过FPGA加速端实现对于通信密集及计算密集型任务的处理。但是相关技术中的FPGA加速端
中的两个FPGA加速板卡之间需要数据交互时,需要FPGA加速板卡通过PCIE将数据传输到主
机端,主机端再将数据传输给其他板卡,数据计算的效率较低,FPGA云服务器中支持多板卡
设备的个数受主机端可支持PCIE板卡个数的物理限制。
[0003] 因此,如何避免FPGA加速端中FPGA加速板卡数量受主机接口的物理限制,提高数据处理效率是本领域技术人员目前需要解决的技术问题。

发明内容

[0004] 本申请的目的是提供一种数据处理方法、装置、一种分布式数据流编程框架、一种电子设备及一种存储介质,能够避免FPGA加速端中FPGA加速板卡数量受主机接口的物理限
制,提高数据处理效率。
[0005] 为解决上述技术问题,本申请提供一种数据处理方法,应用于主机端,所述主机端连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网
络连接,该状态预警方法包括:
[0006] 将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;
[0007] 向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据
或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算
数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络
进行传输。
[0008] 可选的,在向所述目标FPGA加速板卡传输待计算数据之后,还包括:
[0009] 将所述待计算数据的数据地址和数据长度配置至所述目标FPGA加速板卡,以便所述目标FPGA加速板卡根据所述数据地址和所述数据长度存储所述待计算数据。
[0010] 可选的,还包括:
[0011] 将计算结果存放地址配置至所述目标FPGA加速板卡,以便所述目标PFGA加速卡将中间计算数据和/或所述最终处理结果存储至所述计算结果存放地址。
[0012] 可选的,还包括:
[0013] 从所有所述目标FPGA加速板卡中选取第一目标FPGA加速板卡;
[0014] 向所述第一目标FPGA加速板卡传输所有所述数据处理子任务和任务分配信息;其中,所述任务分配信息包括所述数据处理子任务与所述目标FPGA加速板卡的对应关系;
[0015] 利用所述第一目标FPGA加速板卡根据所述任务分配信息将所述数据处理子任务传输至对应的目标FPGA加速板卡。
[0016] 可选的,向所述目标FPGA加速板卡传输待计算数据包括:
[0017] 从所有所述目标FPGA加速板卡中选取第二目标FPGA加速板卡;
[0018] 向所述第二目标FPGA加速板卡传输所有所述待计算数据和数据分配信息;其中,所述数据分配信息包括所述待计算数据与所述目标FPGA加速板卡的对应关系;
[0019] 利用所述第二目标FPGA加速板卡根据所述数据分配信息将所述待计算数据传输至对应的FPGA加速板卡。
[0020] 可选的,向所述目标FPGA加速板卡传输待计算数据包括:
[0021] 通过自定义RDMA传输的方式向所述目标FPGA加速板卡传输对应的待计算数据;
[0022] 相应的,还包括:
[0023] 利用预设传输方式向所述目标FPGA加速板卡传输对应的数据处理子任务;其中,所述预设传输方式包括流式传输或整体打包传输。
[0024] 可选的,还包括:
[0025] 当所述目标FPGA加速板卡基于网络向其他目标FPGA加速板卡传输所述中间计算数据时,向所述其他目标FPGA加速板卡传输所述中间计算数据的数据地址和数据长度,以
便所述其他目标FPGA加速板卡根据所述中间计算数据的数据地址和数据长度存储所述中
间计算数据。
[0026] 可选的,所述目标FPGA加速板卡之间通过MAC接口传输数据,所述主机端与所述目标FPGA加速板卡之间通过PCIE接口传输数据,远端设备与所述目标FPGA加速板卡之间通过
MAC接口传输数据。
[0027] 可选的,当所述主机端和所述目标FPGA加速板卡为局域网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据在MAC层完成组包操作;
[0028] 当所述主机端和所述目标FPGA加速板卡为公网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据在UDP的payload层完成组包操作,所述目标FPGA加速板卡
之间的通信数据在UDP的payload层完成组包操作。
[0029] 本申请还提供了一种数据处理装置,所述数据处理装置连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,所述数据处理
装置包括:
[0030] 任务分配模块,用于将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;
[0031] 任务执行模块,用于向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结
果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源
数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA
加速板卡之间的网络进行传输。
[0032] 本申请还提供了一种分布式数据流编程框架,包括CPU加速栈和FPGA加速栈;
[0033] 所述CPU加速栈,用于为数据处理任务的划分提供底层支持,还用于为数据处理子任务的调度提供主机端编程接口;
[0034] 所述FPGA加速栈,用于提供与所述主机端编程接口对应的加速接口,还用于在执行所述数据处理子任务时提供加速数据控制程序和kernel控制程序;
[0035] 其中,当所述分布式数据流编程框架工作时,所述CPU加速栈将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标
FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数据;所述FPGA加速栈利用每个所述
目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结
果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源
数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA
加速板卡之间的网络进行传输。
[0036] 可选的,所述FPGA加速栈包括:
[0037] 静态区,用于执行所述CPU加速栈下发的数据处理子任务,还用于将数据处理结果发送至所述CPU加速栈或其他目标FPGA加速板卡;
[0038] FPGA加速引擎,用于向本地加速单元或其他目标FPGA加速板卡的加速单元传输所述数据处理子任务进行加速计算操作。
[0039] 本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述数据处理方法执行的步骤。
[0040] 本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述数据处理方法执行的步
骤。
[0041] 本申请提供了一种数据处理方法,应用于主机端,所述主机端连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,该状态预警
方法包括:将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个
所述数据处理子任务对应的目标FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数
据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其
中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述
数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数
据通过所述目标FPGA加速板卡之间的网络进行传输。
[0042] 本申请先将数据处理任务划分为多个数据处理子任务,再从FPGA加速端中确定每一数据处理子任务对应的目标FPGA加速板卡,利用目标FPGA加速板卡执行对应的数据处理
子任务。在目标FPGA加速板卡处理数据处理子任务时,可以将其他目标FPGA加速板卡的数
据处理结果作为输入数据,也可以将自身计算得到的数据处理结果传输至其他目标FPGA加
速板卡。目标FPGA加速板卡之间通过网络传输数据处理结果,而不是先发送至主机端再经
由主机端进行转发。可见,本申请能够避免FPGA加速端中FPGA加速板卡数量受主机接口的
物理限制,提高数据处理效率。本申请同时还提供了一种数据处理装置、一种分布式数据流
编程框架、一种电子设备和一种存储介质,具有上述有益效果,在此不再赘述。

附图说明

[0043] 为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人
员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044] 图1为本申请实施例所提供的一种数据处理方法的流程图;
[0045] 图2为本申请实施例所提供的一种数据处理子任务的分配方法的流程图;
[0046] 图3为本申请实施例所提供的一种待计算数据的传输方法的流程图;
[0047] 图4为本申请实施例所提供的一种可重构数据中心架构图;
[0048] 图5为本申请实施例所提供的一种可重构数据中心加速框架图;
[0049] 图6为本申请实施例所提供的一种CPU加速栈的架构示意图;
[0050] 图7为本申请实施例所提供的一种FPGA加速栈功能结构图;
[0051] 图8为本申请实施例所提供的一种FPGA加速栈框架图;
[0052] 图9为本申请实施例所提供的一种FPGA云平台计算原理示意图。

具体实施方式

[0053] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员
在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0054] 下面请参见图1,图1为本申请实施例所提供的一种数据处理方法的流程图。
[0055] 具体步骤可以包括:
[0056] S101:将数据处理任务划分为多个数据处理子任务;
[0057] 其中,本实施例可以应用于与FPGA加速端连接的主机端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,主机端中的CPU(Central 
Processing Unit,中央处理器)可以用于实现对于数据处理子任务的划分。
[0058] 具体的,本实施例可以根据数据处理任务确定待计算数据以及所有对于待计算数据的计算操作,本实施例可以按照计算操作的数量和/或计算操作的种类将数据处理任务
划分为多个数据处理子任务。例如一项数据处理任务包括9步计算操作,可以将第1~3项计
算操作作为第一数据处理子任务,将第4~6项计算操作作为第二数据处理子任务,将第7~
9项计算操作作为第三数据处理子任务。再例如一项数据处理任务包括词法分析、语义分析
和哈希映射三种计算操作,可以将所有的词法分析操作作为第四数据处理子任务,可以将
所有的语法分析操作作为第五数据处理子任务,可以将所有的哈希映射操作作为第六数据
处理子任务。
[0059] 可以理解的是,在得到多个数据处理子任务之后,可以生成每一数据处理子任务的对应的固件,以便烧录至对应的FPGA加速板卡,使FPGA加速板卡通过执行固件执行相应
的数据处理操作。
[0060] S102:在FPGA加速端中确定每个数据处理子任务对应的目标FPGA加速板卡;
[0061] 其中,FPGA加速端中可以包括多个FPGA加速板卡,本实施例可以根据数据处理子任务的子任务数量从FPGA加速端中选择相同数量的FPGA加速板卡。在确定了目标FPGA加速
板卡之后,还可以确定每一目标FPGA加速板卡与数据处理子任务之间的对应关系,并基于
该对应关系将数据处理子任务传输至对应的目标FPGA加速板卡,即:将数据处理子任务对
应的固件烧录至相应的目标FPGA加速板卡中。
[0062] S103:向目标FPGA加速板卡传输待计算数据,并利用每个目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;
[0063] 其中,本实施例可以根据数据处理任务确定对应的待计算数据,并向目标FPGA加速板卡传输待计算数据。可以理解的是,目标FPGA加速板卡执行数据处理子任务时的源数
据可以为待计算数据,也可以为其他目标FPGA加速板卡的中间计算结果,还可以为待计算
数据和中间计算结果。每个目标FPGA加速板卡执行对应的数据处理子任务得到的数据处理
结果可以包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任
务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目
标FPGA加速板卡之间的网络进行传输。
[0064] 作为一种可行的实施方式,在向所述目标FPGA加速板卡传输待计算数据之后,还可以将所述待计算数据的数据地址和数据长度配置至所述目标FPGA加速板卡,以便所述目
标FPGA加速板卡根据所述数据地址和所述数据长度存储所述待计算数据。在上述实施方式
中,主机端通过向目标FPGA加速板卡传输待计算数据的数据地址和数据长度,使得目标
FPGA加速板卡根据该数据地址和数据长度存储待计算数据。
[0065] 作为另一种可行的实施方式,主机端还可以将计算结果存放地址配置至所述目标FPGA加速板卡,以便所述目标PFGA加速卡将中间计算数据和/或最终处理结果存储至所述
计算结果存放地址。在上述实施方式中,主机端通过向目标FPGA加速板卡传输计算结果存
放地址,使得目标FPGA加速板卡根据该计算结果存放地址存储中间计算数据和/或最终处
理结果,其他目标FPGA加速板卡可以根据计算结果存放地址读取中间计算数据,主机端可
以根据计算结果存放地址读取最终处理结果。
[0066] 当目标FPGA加速板卡基于网络向其他目标FPGA加速板卡传输中间计算数据时,可以向所述其他目标FPGA加速板卡传输所述中间计算数据的数据地址和数据长度,以便所述
其他目标FPGA加速板卡根据所述中间计算数据的数据地址和数据长度存储所述中间计算
数据。具体的,目标FPGA加速板卡之间可以通过MAC接口传输中间计算数据,主机端与所述
目标FPGA加速板卡之间通过PCIE接口传输最终处理结果和/或待计算数据,远端设备与所
述目标FPGA加速板卡之间通过MAC接口传输数据。
[0067] 本实施例先将数据处理任务划分为多个数据处理子任务,再从FPGA加速端中确定每一数据处理子任务对应的目标FPGA加速板卡,利用目标FPGA加速板卡执行对应的数据处
理子任务。在目标FPGA加速板卡处理数据处理子任务时,可以将其他目标FPGA加速板卡的
数据处理结果作为输入数据,也可以将自身计算得到的数据处理结果传输至其他目标FPGA
加速板卡。目标FPGA加速板卡之间通过网络传输数据处理结果,而不是先发送至主机端再
经由主机端进行转发。可见,本实施例能够避免FPGA加速端中FPGA加速板卡数量受主机接
口的物理限制,提高数据处理效率。
[0068] 请参见图2,图2为本申请实施例所提供的一种数据处理子任务的分配方法的流程图,本实施例是对图1对应实施例确定数据处理子任务之后的进一步介绍,可以将本实施例
与图1对应的实施例相结合得到进一步的实施方式,本实施例可以包括以下步骤:
[0069] S201:从所有所述目标FPGA加速板卡中选取第一目标FPGA加速板卡;
[0070] S202:向所述第一目标FPGA加速板卡传输所有所述数据处理子任务和任务分配信息;
[0071] S203:利用所述第一目标FPGA加速板卡根据所述任务分配信息将所述数据处理子任务传输至对应的目标FPGA加速板卡。
[0072] 其中,本实施例的执行主体可以为与FPGA加速端连接的主机端,从所有选中的目标FPGA加速板卡中确定第一目标FPGA加速板卡,以便向第一目标FPGA加速板卡传输所有的
数据处理子任务。主机端在向第一目标FPGA加速板卡传输所有数据处理子任务的同时还向
第一目标FPGA加速板卡传输任务分配信息。任务分配信息中存储有数据处理子任务与目标
FPGA加速板卡的对应关系,第一目标FPGA加速板卡可以利用该对应关系将所述数据处理子
任务传输至对应的目标FPGA加速板卡。
[0073] 当然,除了图2对应实施例所描述的利用一张目标FPGA加速板卡分配所有数据处理子任务的操作之外,主机端也可以分配向每一目标FPGA目标加速板卡传输对应的数据处
理子任务。作为一种可行的实施方式,主机端可以利用流式传输或整体打包传输的方式向
所述目标FPGA加速板卡传输对应的数据处理子任务。
[0074] 请参见图3,图3为本申请实施例所提供的一种待计算数据的传输方法的流程图,本实施例是对图1对应实施例中S103的进一步介绍,可以将本实施例与图1对应的实施例相
结合得到进一步的实施方式,本实施例可以包括以下步骤:
[0075] S301:从所有所述目标FPGA加速板卡中选取第二目标FPGA加速板卡;
[0076] S302:向所述第二目标FPGA加速板卡传输所有所述待计算数据和数据分配信息;
[0077] 其中,所述数据分配信息包括所述待计算数据与所述目标FPGA加速板卡的对应关系;
[0078] S303:利用所述第二目标FPGA加速板卡根据所述数据分配信息将所述待计算数据传输至对应的FPGA加速板卡。
[0079] 其中,本实施例的执行主体可以为与FPGA加速端连接的主机端,从所有选中的目标FPGA加速板卡中确定第二目标FPGA加速板卡,以便向第二目标FPGA加速板卡传输所有的
待计算数据。主机端在向第二目标FPGA加速板卡传输所有数据处理子任务的同时还向第一
目标FPGA加速板卡传输数据分配信息。数据分配信息中存储各个待计算数据与目标FPGA加
速板卡的对应关系,第二目标FPGA加速板卡可以利用该对应关系将待计算数据传输至对应
的目标FPGA加速板卡。作为一种可行的实施方式,主机端可以通过自定义RDMA(Remote 
Direct Memory Access,远程直接数据存取)传输的方式向所述目标FPGA加速板卡传输对
应的待计算数据。
[0080] 进一步的,当所述主机端和所述目标FPGA加速板卡为局域网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据(如待计算数据和/或最终处理结果)在MAC
层完成组包操作。当所述主机端和所述目标FPGA加速板卡为公网中的设备时,所述主机端
与所述目标FPGA加速板卡之间的通信数据(如待计算数据和/或最终处理结果)在UDP(User 
Datagram Protocol,用户数据报协议)的payload层完成组包操作,所述目标FPGA加速板卡
之间的通信数据(如待计算数据和/或中间计算结果)在UDP的payload层完成组包操作。
[0081] 请参见图4,图4为本申请实施例所提供的一种可重构数据中心架构图,可重构数据中心可以包括主机端和FPGA盘柜(即FPGA加速端)。本实施例所公开的可重构数据中心基
于网络将FPGA资源进行池化,FPGA加速板卡间通过网络(10G网络、40G网络或100G网络)进
行连接,一方面保留机卡绑定的形式,即一台服务器上配一张或多张FPGA加速器,另一方面
引入了BOX OF FPGA(FPGA盘柜)模式。在FPGA盘柜里各类型的FPGA加速板卡(可以包括
Intel芯片和Xilinx芯片)通过网络进行数据交互。FPGA盘柜里的FPGA加速板卡与主机端上
配置的FPGA加速板卡也通过网络进行互联。通过上述方式解耦FPGA与CPU的紧耦合,通信数
据无需经主机端的CPU转发,使用MAC层或UDP之上的轻量化高可靠协议进行传输,从而降低
系统吞吐延迟。图4中的光模块为光纤接口模块。
[0082] 图4所示的可重构数据中心具有以下特点:主机端的CPU、主机端内的FPGA加速板卡、以及FPGA盘柜内的FPGA加速板卡协同工作。主机端的CPU负责逻辑处理,FPGA盘柜内的
FPGA加速板卡负责通信密集及计算密集型任务。可重构数据中心通过网络共享存储资源,
节点间采用分布式拓扑。可重构器件相关逻辑功能可分布式加载,并且支持标准的以太网
接口及协议。
[0083] 传统CPU分布式平台下的任务划分调度、软件流水线构造及数据通信等处理方式无法直接应用到该可重构数据中心,针对可重构数据中心中异构计算资源的并行结构以及
可重构特性,以数据流编程为基础,本申请提供的面向可重构数据中心的分布式数据流编
程框架,提供分布式并行编程接口,完成计算任务到可重构设备的映射。分布式数据流编程
框架由CPU加速栈、FPGA加速栈以及映射模型组成。
[0084] CPU加速栈为并行任务模型划分、调度提供HOST端编程接口(API),并提供底层支持,包括轻量级高可靠协议模块、可重配数据中心内存管理模块、FPGA加速器驱动模块。
[0085] FPGA加速栈为实现具体计算任务提供加速数据控制、kernel控制等IP,HOST端API可提供的功能,FPGA IP提供完全相同的接口,从而实现统一的分布式多引擎加速栈。多引
擎加速栈通过上述接口主要实现对FPGA进行远程加载及更新,加载offload到FPGA上的算
法应用,加载算法参数、控制数据搬移路径、启动停止应用等,完成对FPGA云平台各指令的
控制。
[0086] 请参见图5,图5为本申请实施例所提供的一种可重构数据中心加速框架图。图5中的FPGA加速器即本文所提到的FPGA加速板卡。FPGA分布式异构系统可以按用户需求完成逻
辑子网划分,整个子网内由多个计算任务节点组成,节点之间通过自定义的高可靠轻量级
传输协议,实现服务器节点与FPGA加速单元之间、FPGA节点与FPGA节点之间的数据传输、控
制指令的通信。每个计算任务包括服务器节点上运行的逻辑控制模块、FPGA上运行的加速
计算模块。服务器节点的逻辑控制模块,利用可扩展的分布式编程框架提供的FPGA云平台
函数库实现,FPGA上运行的加速计算模块利用RTL进行实现并利用分布式编程框架提供的
IP层控制接口,完成可重构数据中心的并行计算任务。图5中NIC为网卡。
[0087] 请参见图6,图6为本申请实施例所提供的一种CPU加速栈的架构示意图。CPU加速栈可分为底层FPGA加速器驱动模块、RDC SDK(可重构数据中心软件开发包)、授权管理模
块、内存管理层、流表匹配层、加速数据管理模块、加速控制管理模块、RLTL协议支持层。用
户通过RDC SDK(可重构数据中心软件开发包)可完成应用数据搬移、Kernel更新以及运行
监控等任务。授权管理模块主要根据用户的不同需求完成基于FPGA的工作组管理及授权机
制,完成基于芯片ID的安全校验机制,提高用户网表/BIT文件的安全性。流表匹配模块主要
是利用根据协议解析相关内容并匹配到相关功能模型。加速数据及控制管理主要完成对控
制流及数据流的管理。
[0088] 请参见表1,表1为可重构数据中心软件开发包接口功能说明表,当前SDK支持用户向板卡DDR指定地址搬移数据,使用RDMA进行数据搬移,执行PR加载,以及配置Kernel参数
等。
[0089] 表1可重构数据中心软件开发包接口功能说明表
[0090] 面向可重构数据中心的SDK 功能详细说明icfTransterData 用户指定板卡DDR地址
icfTransterDataRDMA RDMA搬移接口
icfCreateProgramToFPGA PR流式加载到FPGA的接口
icfLoadProgramToFPGA PR加载到FPGA的指令接口
icfLoadProgramToFlash 加载到Flash的指令接口
icfConfigKernel 配置kernel参数接口
icfConfigKernelReturn 配置kernel返回值接口
icfStartKernel 启动kernel接口
icfEndKernel 强制终止kernel接口
[0091] 请参见图7,图7为本申请实施例所提供的一种FPGA加速栈功能结构图,所述FPGA加速板卡的加速堆栈包括:静态区,用于执行所述数据计算指令、与所述主机端进行信息交
互并提供物理接口;FPGA加速引擎,用于通向加速单元传输所述待计算数据进行加速计算
操作。所述FPGA加速引擎用于通过PCIE接口传输所述待计算数据进行本地加速计算操作;
还用于通过PCIE接口和MAC接口传输所述待计算数据进行远程加速计算操作。所述静态区
与所述FPGA加速引擎通过目标总线进行数据交互;其中,所述目标总线包括BUSA、BUSC、
BUSD和BUSE中的任一种总线或任几种总线的组合。
[0092] FPGA加速栈由静态区和用户应用加速引擎组成。静态部分包括控制面及数据面两部分,控制面主要是配合主机完成路由、流量控制、授权等管理功能,执行主机下发的控制
命令,上报FPGA本地的信息,完成与主机的交互处理。数据面主要是各类物理接口包括10/
100G MAC以及PCIE通道等。
[0093] 具体的,FPGA加速引擎可通过PCIE接口传输给加速单元进行本地加速,也可以通过经PCIE‑>MAC接口输出给其他板卡进行远程加速;动态可重配置加速单元可通过PR技术
实现远程动态重配置;路由转发模块的转发路由表软件可配置,FPGA内部通过查找路由转
发表实现路由选择。
[0094] 请参见图8,图8为本申请实施例所提供的一种FPGA加速栈框架图,表2为光纤接口功能表,表2所示静态区和用户应用加速引擎通过BUSA、BUSB、BUSC、BUSD、BUSE总线进行交
互,表2中FIM指FPGA Interface Manager(FPGA接口管理)
[0095] 表2 FPGA接口管理功能表
[0096]
[0097] 下面通过在实际应用中的实施例说明上述实施例描述的流程。请参见图9,图9为本申请实施例所提供的一种FPGA云平台计算原理示意图。
[0098] 在该实例中包括用户使用的HOST端,FPGA云平台分配给用户的4张板卡分别为FPGA加速板卡1(以下简称FPGA1)、FPGA加速板卡2(以下简称FPGA2)、FPGA加速板卡3(以下
简称FPGA3)和FPGA加速板卡4(以下简称FPGA4)。
[0099] 各FPGA加速板卡中的Kernel主要功能如下:Kernel1是将从HOST端搬移的数据a、b分别进行+1和+2操作;Kernel2将a+1的结果与从HOST端搬移到FPGA2的数据c进行相加或相
减或相乘或相除。Kernel3将b+2的结果与从HOST端搬移到FPGA3的数据d进行相加或相减或
相乘或相除。Kernel4将Kernel2与Kernel3输出的结果相乘,得到的结果传递给HOST端。
[0100] 本实施例的实例功能流程如下:HOST端通过标准的网卡向FPGA1搬移数据a和b,Kernel1对a进行加1,对b进行加2,并将a+1的结果搬移给FPGA2,将b+1的结果搬移到FPGA3。
HOST端分别向FPGA2与FPGA3搬移数据c、d,Kernel2对(a+1)与c进行算法(+‑*/可选),
Kernel3对(b+2)与d进行算法(+‑*/可选),并将运算结果搬移给FPGA4。Kernel 4将结果相
乘,并将结果按HOST端要求存储到本地,HOST将运算结果搬移至HOST端。
[0101] 图9对应的实施例中FPGA加速板卡的计算流程如下:
[0102] 步骤1.HOST以流式的方式向FPGA1加载Kernel1;
[0103] 标准接口:icfCreateProgramToFPGA();
[0104] 步骤2.HOST分别将Kernel2、Kernel3、Kernel4的aocx文件搬移到FPGA2;
[0105] 标准接口:icfTransterDataRDMA();
[0106] 步骤3.HOST向FPGA2发送指令将Kernelif2加载至FPGA2;
[0107] 标准接口:icfLoadProgramToFPGA();
[0108] 步骤4.FPGA2以流式的方式向FPGA3加载Kernel1;
[0109] 标准接口:FPGA IP core提供接口;
[0110] 步骤5.FPGA2将Kernel4的aocx文件搬移到FPGA2;
[0111] 标准接口:需FPGA IP core提供接口;
[0112] 步骤6.FPGA2向FPGA4发送指令将Kernel4加载至FPGA4;
[0113] 标准接口:需FPGA IP core提供接口;
[0114] 其中,步骤1至步骤6为FPGA Kernel加载过程,包括从HOST端进行加载(步骤1~3为HOST端代码)以及和FPGA端进行加载(步骤4~6为FPGA2工程)
[0115] 步骤7.HOST以RDMA的方式搬移数据A到FPGA1;
[0116] 标准接口:icfTransterDataRDMA();
[0117] 步骤8.HOST以直接传输的方式搬移数据B到FPGA1;
[0118] 标准接口:icfTransterData();
[0119] 步骤9.HOST将A在FPGA的地址以及数据长度配置给FPGA1;
[0120] 标准接口:icfConfigKernelParam();
[0121] 步骤10.HOST将B在FPGA的地址以及数据长度配置给FPGA1;
[0122] 标准接口:icfConfigKernelParam();
[0123] 步骤11.HOST将kernel1‑1的计算结果A1存放地址配置给FPGA1;
[0124] 标准接口:icfConfigKernelReturn();
[0125] 步骤12.HOST将kernel1‑2的计算结果A2存放地址配置给FPGA1;
[0126] 标准接口:icfConfigKernelReturn();
[0127] 步骤13.HOST端启动kernel1‑1;
[0128] 标准接口:icfStartKernel();
[0129] 步骤14.HOST端启动kernel1‑2;
[0130] 标准接口:icfStartKernel();
[0131] 其中,步骤7至步骤14为HOST端代码利用软件应用层接口进行实现与FPGA1之间的交互,并控制FPGA1启动kernel。
[0132] 步骤15.FPGA1以RDMA的方式将A1搬移到FPGA2;
[0133] 标准接口:FPGA IP core提供;
[0134] 步骤16.HOST以RDMA的方式搬移数据c到FPGA2;
[0135] 标准接口:icfTransterDataRDMA();
[0136] 步骤17.FPGA1将A1在FPGA2的地址以及数据长度配置给FPGA2;
[0137] 标准接口:FPGA IP core提供;
[0138] 步骤18.HOST将c在FPGA2的地址以及数据长度配置给FPGA2;
[0139] 标准接口:icfConfigKernelParam();
[0140] 步骤19.FPGA1将kernel2的计算结果A2存放地址配置给FPGA2;
[0141] 标准接口:需FPGA IP core提供;
[0142] 步骤20.FPGA1启动FPGA2的kernel2并传形参A1、c;
[0143] 标准接口:需FPGA IP core提供;
[0144] 其中,步骤15至步骤20为FPGA1及HOST利用其提供接口与FPGA2之间进行交互,并由FPGA1控制FPGA2启动kernel。
[0145] 步骤21.FPGA1以直接传输的方式将B1搬移到FPGA3;
[0146] 步骤22.HOST以直接传输的方式搬移数据d到FPGA3;
[0147] 步骤23.FPGA1将B1在FPGA3的地址以及数据长度配置给FPGA3;
[0148] 步骤24.HOST将d在FPGA3的地址以及数据长度配置给FPGA3;
[0149] 步骤25.FPGA1将kernel3的计算结果B2存放地址配置给FPGA3;
[0150] 步骤26.FPGA1启动FPGA3的kernel3并传形式数B1、d;
[0151] 其中,步骤21至步骤26为FPGA1及HOST利用其提供接口与FPGA3之间进行交互,并由FPGA1控制FPGA3启动kernel。
[0152] 步骤27.FPGA2以RDMA的方式将A2搬移到FPGA4;
[0153] 步骤28.FPGA3以直接传输的方式将B2搬移到FPGA4;
[0154] 步骤29.FPGA2将A2在FPGA4的地址以及数据长度配置给FPGA4;
[0155] 步骤30.FPGA3将B2在FPGA4的地址以及数据长度配置给FPGA4;
[0156] 步骤31.FPGA2将kernel4的计算结果AB3存放地址配置给FPGA4;
[0157] 步骤32.FPGA2启动FPGA4的kernel4并传形式数A2、B2;
[0158] 其中,步骤27至步骤32为FPGA2及FPGA3利用其提供接口与FPGA4之间进行交互,并由FPGA2控制FPGA4启动kernel。
[0159] 步骤33.FPGA4启动FPGA3的kernel3并传形式数B1、d。
[0160] 本申请实施例还提供一种数据处理装置,该所述数据处理装置连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,所述数据
处理装置包括:
[0161] 任务分配模块,用于将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;
[0162] 任务执行模块,用于向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结
果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源
数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA
加速板卡之间的网络进行传输。
[0163] 本实施例先将数据处理任务划分为多个数据处理子任务,再从FPGA加速端中确定每一数据处理子任务对应的目标FPGA加速板卡,利用目标FPGA加速板卡执行对应的数据处
理子任务。在目标FPGA加速板卡处理数据处理子任务时,可以将其他目标FPGA加速板卡的
数据处理结果作为输入数据,也可以将自身计算得到的数据处理结果传输至其他目标FPGA
加速板卡。目标FPGA加速板卡之间通过网络传输数据处理结果,而不是先发送至主机端再
经由主机端进行转发。可见,本实施例能够避免FPGA加速端中FPGA加速板卡数量受主机接
口的物理限制,提高数据处理效率。
[0164] 由于装置部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
[0165] 本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read‑
Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种
可以存储程序代码的介质。
[0166] 本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的
步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
[0167] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而
言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明
即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还
可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围
内。
[0168] 还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作
之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那
些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者
设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。