WO2021155642A1 - 数据处理方法、装置、分布式数据流编程框架及相关组件 - Google Patents
数据处理方法、装置、分布式数据流编程框架及相关组件 Download PDFInfo
- Publication number
- WO2021155642A1 WO2021155642A1 PCT/CN2020/087157 CN2020087157W WO2021155642A1 WO 2021155642 A1 WO2021155642 A1 WO 2021155642A1 CN 2020087157 W CN2020087157 W CN 2020087157W WO 2021155642 A1 WO2021155642 A1 WO 2021155642A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- data processing
- acceleration
- fpga
- target fpga
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种数据处理方法、一种数据处理装置、一种分布式数据流编程框架、一种电子设备及一种存储介质。该数据处理方法包括将数据处理任务划分为多个数据处理子任务(S101),在FPGA加速端中确定每个数据处理子任务对应的目标FPGA加速板卡(S102);向目标FPGA加速板卡传输待计算数据,并利用每个目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果(S103)。该方法能够避免FPGA加速端中FPGA加速板卡数量受主机接口的物理限制,提高数据处理效率。
Description
本申请要求于2020年2月5日提交中国专利局、申请号为202010080853.6、发明名称为“数据处理方法、装置、分布式数据流编程框架及相关组件”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请涉及云计算技术领域,特别涉及一种数据处理方法、装置、一种分布式数据流编程框架、一种电子设备及一种存储介质。
随着人工智能及大数据的快速发展,数据中心里的数据成倍增长,同时AI(Artificial Intelligence,人工智能)的快速发展也带来了对数据高性能计算的要求。这一方面导致数据呈指数增长发展,另一方面对这些数据处理需要的计算资源也相应的增长。传统的计算是用CPU来处理,随着技术的不断发展,CPU的性能已无法成倍的提升。可重构芯片如现场可编程门阵列(FPGA,Field Programmable Gate Array)具有加速许多工作负载的潜力,能够完成解密运算、图像处理、解压缩以及人工智能相关计算。相关技术中通过FPGA加速端实现对于通信密集及计算密集型任务的处理。但是相关技术中的FPGA加速端中的两个FPGA加速板卡之间需要数据交互时,需要FPGA加速板卡通过PCIE将数据传输到主机端,主机端再将数据传输给其他板卡,数据计算的效率较低,FPGA云服务器中支持多板卡设备的个数受主机端可支持PCIE板卡个数的物理限制。
因此,如何避免FPGA加速端中FPGA加速板卡数量受主机接口的物理限制,提高数据处理效率是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种数据处理方法、装置、一种分布式数据流编程框架、一种电子设备及一种存储介质,能够避免FPGA加速端中FPGA加 速板卡数量受主机接口的物理限制,提高数据处理效率。
为解决上述技术问题,本申请提供一种数据处理方法,应用于主机端,所述主机端连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,该数据处理方法包括:
将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;
向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
可选的,在向所述目标FPGA加速板卡传输待计算数据之后,还包括:
将所述待计算数据的数据地址和数据长度配置至所述目标FPGA加速板卡,以便所述目标FPGA加速板卡根据所述数据地址和所述数据长度存储所述待计算数据。
可选的,还包括:
将计算结果存放地址配置至所述目标FPGA加速板卡,以便所述目标PFGA加速卡将中间计算数据和/或所述最终处理结果存储至所述计算结果存放地址。
可选的,还包括:
从所有所述目标FPGA加速板卡中选取第一目标FPGA加速板卡;
向所述第一目标FPGA加速板卡传输所有所述数据处理子任务和任务分配信息;其中,所述任务分配信息包括所述数据处理子任务与所述目标FPGA加速板卡的对应关系;
利用所述第一目标FPGA加速板卡根据所述任务分配信息将所述数据处理子任务传输至对应的目标FPGA加速板卡。
可选的,向所述目标FPGA加速板卡传输待计算数据包括:
从所有所述目标FPGA加速板卡中选取第二目标FPGA加速板卡;
向所述第二目标FPGA加速板卡传输所有所述待计算数据和数据分配信息;其中,所述数据分配信息包括所述待计算数据与所述目标FPGA加速板卡的对应关系;
利用所述第二目标FPGA加速板卡根据所述数据分配信息将所述待计算数据传输至对应的FPGA加速板卡。
可选的,向所述目标FPGA加速板卡传输待计算数据包括:
通过自定义RDMA传输的方式向所述目标FPGA加速板卡传输对应的待计算数据;
相应的,还包括:
利用预设传输方式向所述目标FPGA加速板卡传输对应的数据处理子任务;其中,所述预设传输方式包括流式传输或整体打包传输。
可选的,还包括:
当所述目标FPGA加速板卡基于网络向其他目标FPGA加速板卡传输所述中间计算数据时,向所述其他目标FPGA加速板卡传输所述中间计算数据的数据地址和数据长度,以便所述其他目标FPGA加速板卡根据所述中间计算数据的数据地址和数据长度存储所述中间计算数据。
可选的,所述目标FPGA加速板卡之间通过MAC接口传输数据,所述主机端与所述目标FPGA加速板卡之间通过PCIE接口传输数据,远端设备与所述目标FPGA加速板卡之间通过MAC接口传输数据。
可选的,当所述主机端和所述目标FPGA加速板卡为局域网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据在MAC层完成组包操作;
当所述主机端和所述目标FPGA加速板卡为公网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据在UDP的payload层完成组包操作,所述目标FPGA加速板卡之间的通信数据在UDP的payload层完成组包操作。
本申请还提供了一种数据处理装置,所述数据处理装置连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,所述数据处理装置包括:
任务分配模块,用于将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;
任务执行模块,用于向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
本申请还提供了一种分布式数据流编程框架,包括CPU加速栈和FPGA加速栈;
所述CPU加速栈,用于为数据处理任务的划分提供底层支持,还用于为数据处理子任务的调度提供主机端编程接口;
所述FPGA加速栈,用于提供与所述主机端编程接口对应的加速接口,还用于在执行所述数据处理子任务时提供加速数据控制程序和kernel控制程序;
其中,当所述分布式数据流编程框架工作时,所述CPU加速栈将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数据;所述FPGA加速栈利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
可选的,所述FPGA加速栈包括:
静态区,用于执行所述CPU加速栈下发的数据处理子任务,还用于将数据处理结果发送至所述CPU加速栈或其他目标FPGA加速板卡;
FPGA加速引擎,用于向本地加速单元或其他目标FPGA加速板卡的加速单元传输所述数据处理子任务进行加速计算操作。
本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述数据处理方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述数据处理方法执行的步骤。
本申请提供了一种数据处理方法,应用于主机端,所述主机端连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,该数据处理方法包括:将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
本申请先将数据处理任务划分为多个数据处理子任务,再从FPGA加速端中确定每一数据处理子任务对应的目标FPGA加速板卡,利用目标FPGA加速板卡执行对应的数据处理子任务。在目标FPGA加速板卡处理数据处理子任务时,可以将其他目标FPGA加速板卡的数据处理结果作为输入数据,也可以将自身计算得到的数据处理结果传输至其他目标FPGA加速板卡。目标FPGA加速板卡之间通过网络传输数据处理结果,而不是先发送至主机端再经由主机端进行转发。可见,本申请能够避免FPGA加速端中FPGA加速板卡数量受主机接口的物理限制,提高数据处理效率。本申请同时还提供了一种数据处理装置、一种分布式数据流编程框架、一种电子设备和一种存储介质,具有上述有益效果,在此不再赘述。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对 实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种数据处理方法的流程图;
图2为本申请实施例所提供的一种数据处理子任务的分配方法的流程图;
图3为本申请实施例所提供的一种待计算数据的传输方法的流程图;
图4为本申请实施例所提供的一种可重构数据中心架构图;
图5为本申请实施例所提供的一种可重构数据中心加速框架图;
图6为本申请实施例所提供的一种CPU加速栈的架构示意图;
图7为本申请实施例所提供的一种FPGA加速栈功能结构图;
图8为本申请实施例所提供的一种FPGA加速栈框架图;
图9为本申请实施例所提供的一种FPGA云平台计算原理示意图。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种数据处理方法的流程图。
具体步骤可以包括:
S101:将数据处理任务划分为多个数据处理子任务;
其中,本实施例可以应用于与FPGA加速端连接的主机端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,主机端中的CPU(Central Processing Unit,中央处理器)可以用于实现对于数据处理子任务的划分。
具体的,本实施例可以根据数据处理任务确定待计算数据以及所有对于待计算数据的计算操作,本实施例可以按照计算操作的数量和/或计算操作的种类将数据处理任务划分为多个数据处理子任务。例如一项数据处理任务包括9步计算操作,可以将第1~3项计算操作作为第一数据处理子任务,将第4~6项计算操作作为第二数据处理子任务,将第7~9项计算操作作为第三数据处理子任务。再例如一项数据处理任务包括词法分析、语义分析和哈希映射三种计算操作,可以将所有的词法分析操作作为第四数据处理子任务,可以将所有的语法分析操作作为第五数据处理子任务,可以将所有的哈希映射操作作为第六数据处理子任务。
可以理解的是,在得到多个数据处理子任务之后,可以生成每一数据处理子任务的对应的固件,以便烧录至对应的FPGA加速板卡,使FPGA加速板卡通过执行固件执行相应的数据处理操作。
S102:在FPGA加速端中确定每个数据处理子任务对应的目标FPGA加速板卡;
其中,FPGA加速端中可以包括多个FPGA加速板卡,本实施例可以根据数据处理子任务的子任务数量从FPGA加速端中选择相同数量的FPGA加速板卡。在确定了目标FPGA加速板卡之后,还可以确定每一目标FPGA加速板卡与数据处理子任务之间的对应关系,并基于该对应关系将数据处理子任务传输至对应的目标FPGA加速板卡,即:将数据处理子任务对应的固件烧录至相应的目标FPGA加速板卡中。
S103:向目标FPGA加速板卡传输待计算数据,并利用每个目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;
其中,本实施例可以根据数据处理任务确定对应的待计算数据,并向目标FPGA加速板卡传输待计算数据。可以理解的是,目标FPGA加速板卡执行数据处理子任务时的源数据可以为待计算数据,也可以为其他目标FPGA加速板卡的中间计算结果,还可以为待计算数据和中间计算结果。每个目标FPGA加速板卡执行对应的数据处理子任务得到的数据处理结果可以包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述 中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
作为一种可行的实施方式,在向所述目标FPGA加速板卡传输待计算数据之后,还可以将所述待计算数据的数据地址和数据长度配置至所述目标FPGA加速板卡,以便所述目标FPGA加速板卡根据所述数据地址和所述数据长度存储所述待计算数据。在上述实施方式中,主机端通过向目标FPGA加速板卡传输待计算数据的数据地址和数据长度,使得目标FPGA加速板卡根据该数据地址和数据长度存储待计算数据。
作为另一种可行的实施方式,主机端还可以将计算结果存放地址配置至所述目标FPGA加速板卡,以便所述目标PFGA加速卡将中间计算数据和/或最终处理结果存储至所述计算结果存放地址。在上述实施方式中,主机端通过向目标FPGA加速板卡传输计算结果存放地址,使得目标FPGA加速板卡根据该计算结果存放地址存储中间计算数据和/或最终处理结果,其他目标FPGA加速板卡可以根据计算结果存放地址读取中间计算数据,主机端可以根据计算结果存放地址读取最终处理结果。
当目标FPGA加速板卡基于网络向其他目标FPGA加速板卡传输中间计算数据时,可以向所述其他目标FPGA加速板卡传输所述中间计算数据的数据地址和数据长度,以便所述其他目标FPGA加速板卡根据所述中间计算数据的数据地址和数据长度存储所述中间计算数据。具体的,目标FPGA加速板卡之间可以通过MAC接口传输中间计算数据,主机端与所述目标FPGA加速板卡之间通过PCIE接口传输最终处理结果和/或待计算数据,远端设备与所述目标FPGA加速板卡之间通过MAC接口传输数据。
本实施例先将数据处理任务划分为多个数据处理子任务,再从FPGA加速端中确定每一数据处理子任务对应的目标FPGA加速板卡,利用目标FPGA加速板卡执行对应的数据处理子任务。在目标FPGA加速板卡处理数据处理子任务时,可以将其他目标FPGA加速板卡的数据处理结果作为输入数据,也可以将自身计算得到的数据处理结果传输至其他目标FPGA加速板卡。目标FPGA加速板卡之间通过网络传输数据处理结果,而不是先发送至主机端再经由主机端进行转发。可见,本实施例能够避免FPGA加速端中FPGA加速板卡数量受主机接口的物理限制,提高数据处理效率。
请参见图2,图2为本申请实施例所提供的一种数据处理子任务的分配方法的流程图,本实施例是对图1对应实施例确定数据处理子任务之后的进一步介绍,可以将本实施例与图1对应的实施例相结合得到进一步的实施方式,本实施例可以包括以下步骤:
S201:从所有所述目标FPGA加速板卡中选取第一目标FPGA加速板卡;
S202:向所述第一目标FPGA加速板卡传输所有所述数据处理子任务和任务分配信息;
S203:利用所述第一目标FPGA加速板卡根据所述任务分配信息将所述数据处理子任务传输至对应的目标FPGA加速板卡。
其中,本实施例的执行主体可以为与FPGA加速端连接的主机端,从所有选中的目标FPGA加速板卡中确定第一目标FPGA加速板卡,以便向第一目标FPGA加速板卡传输所有的数据处理子任务。主机端在向第一目标FPGA加速板卡传输所有数据处理子任务的同时还向第一目标FPGA加速板卡传输任务分配信息。任务分配信息中存储有数据处理子任务与目标FPGA加速板卡的对应关系,第一目标FPGA加速板卡可以利用该对应关系将所述数据处理子任务传输至对应的目标FPGA加速板卡。
当然,除了图2对应实施例所描述的利用一张目标FPGA加速板卡分配所有数据处理子任务的操作之外,主机端也可以分配向每一目标FPGA目标加速板卡传输对应的数据处理子任务。作为一种可行的实施方式,主机端可以利用流式传输或整体打包传输的方式向所述目标FPGA加速板卡传输对应的数据处理子任务。
请参见图3,图3为本申请实施例所提供的一种待计算数据的传输方法的流程图,本实施例是对图1对应实施例中S103的进一步介绍,可以将本实施例与图1对应的实施例相结合得到进一步的实施方式,本实施例可以包括以下步骤:
S301:从所有所述目标FPGA加速板卡中选取第二目标FPGA加速板 卡;
S302:向所述第二目标FPGA加速板卡传输所有所述待计算数据和数据分配信息;
其中,所述数据分配信息包括所述待计算数据与所述目标FPGA加速板卡的对应关系;
S303:利用所述第二目标FPGA加速板卡根据所述数据分配信息将所述待计算数据传输至对应的FPGA加速板卡。
其中,本实施例的执行主体可以为与FPGA加速端连接的主机端,从所有选中的目标FPGA加速板卡中确定第二目标FPGA加速板卡,以便向第二目标FPGA加速板卡传输所有的待计算数据。主机端在向第二目标FPGA加速板卡传输所有数据处理子任务的同时还向第一目标FPGA加速板卡传输数据分配信息。数据分配信息中存储各个待计算数据与目标FPGA加速板卡的对应关系,第二目标FPGA加速板卡可以利用该对应关系将待计算数据传输至对应的目标FPGA加速板卡。作为一种可行的实施方式,主机端可以通过自定义RDMA(Remote Direct Memory Access,远程直接数据存取)传输的方式向所述目标FPGA加速板卡传输对应的待计算数据。
进一步的,当所述主机端和所述目标FPGA加速板卡为局域网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据(如待计算数据和/或最终处理结果)在MAC层完成组包操作。当所述主机端和所述目标FPGA加速板卡为公网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据(如待计算数据和/或最终处理结果)在UDP(User Datagram Protocol,用户数据报协议)的payload层完成组包操作,所述目标FPGA加速板卡之间的通信数据(如待计算数据和/或中间计算结果)在UDP的payload层完成组包操作。其中,payload层指用户数据报协议的负载层,负载指数据传输中需要传输的信息。
请参见图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中的光模块为光纤接口模块。
图4所示的可重构数据中心具有以下特点:主机端的CPU、主机端内的FPGA加速板卡、以及FPGA盘柜内的FPGA加速板卡协同工作。主机端的CPU负责逻辑处理,FPGA盘柜内的FPGA加速板卡负责通信密集及计算密集型任务。可重构数据中心通过网络共享存储资源,节点间采用分布式拓扑。可重构器件相关逻辑功能可分布式加载,并且支持标准的以太网接口及协议。
传统CPU分布式平台下的任务划分调度、软件流水线构造及数据通信等处理方式无法直接应用到该可重构数据中心,针对可重构数据中心中异构计算资源的并行结构以及可重构特性,以数据流编程为基础,本申请提供的面向可重构数据中心的分布式数据流编程框架,提供分布式并行编程接口,完成计算任务到可重构设备的映射。分布式数据流编程框架由CPU加速栈、FPGA加速栈以及映射模型组成。
CPU加速栈为并行任务模型划分、调度提供HOST端编程接口(API),并提供底层支持,包括轻量级高可靠协议模块、可重配数据中心内存管理模块、FPGA加速器驱动模块。
FPGA加速栈为实现具体计算任务提供加速数据控制、kernel控制等IP,HOST端API可提供的功能,FPGA IP提供完全相同的接口,从而实现统一的分布式多引擎加速栈。多引擎加速栈通过上述接口主要实现对FPGA进行远程加载及更新,加载offload到FPGA上的算法应用,加载算 法参数、控制数据搬移路径、启动停止应用等,完成对FPGA云平台各指令的控制。FPGA加速栈可以提供与所述主机端编程接口对应的加速接口,还可以在执行所述数据处理子任务时提供加速数据控制程序和kernel控制程序。FPGA板卡在执行数据处理子任务时,FPGA加速栈可以利用加速数据控制程序实现数据的分配与搬运,以便FPGA板卡获取需要处理的原始数据并将数据处理结果存储至特定的区域中。Kernel控制程序指FPGA板卡的内核控制程序,FPGA加速栈可以利用Kernel控制程序实现对于原始数据的计算得到相应的数据处理结果。当所述分布式数据流编程框架工作时,CPU加速栈将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数据;所述FPGA加速栈利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。FPGA加速栈可以包括静态区,用于执行所述CPU加速栈下发的数据处理子任务,还用于将数据处理结果发送至所述CPU加速栈或其他目标FPGA加速板卡;FPGA加速引擎,用于向本地加速单元或其他目标FPGA加速板卡的加速单元传输所述数据处理子任务进行加速计算操作。
请参见图5,图5为本申请实施例所提供的一种可重构数据中心加速框架图。图5中的FPGA加速器即本文所提到的FPGA加速板卡。FPGA分布式异构系统可以按用户需求完成逻辑子网划分,整个子网内由多个计算任务节点组成,节点之间通过自定义的高可靠轻量级传输协议,实现服务器节点与FPGA加速单元之间、FPGA节点与FPGA节点之间的数据传输、控制指令的通信。每个计算任务包括服务器节点上运行的逻辑控制模块、FPGA上运行的加速计算模块。服务器节点的逻辑控制模块,利用可扩展的分布式编程框架提供的FPGA云平台函数库实现,FPGA上运行的加速计算模块利用RTL进行实现并利用分布式编程框架提供的IP层控制 接口,完成可重构数据中心的并行计算任务。图5中NIC为网卡,User Application指用户应用程序,PCIe(peripheral component interconnect express)指高速串行计算机扩展总线标准,MAC(Medium Access Control)指介质访问控制协议,KERNEL指FPGA加速板卡的内核,FPGA OF BOX指设置有多个FPGA加速板卡的FPGA加速端,Data Flow指FPGA加速板卡之间进行数据流传输的过程,Control Flow指FPGA加速端对于各个FPGA加速板卡的控制流程,Switch为转换器。
请参见图6,图6为本申请实施例所提供的一种CPU加速栈的架构示意图。CPU加速栈可分为底层FPGA加速器驱动模块、RDC SDK(Reconfigurable Data Center Software Development Kit,可重构数据中心软件开发包)、授权管理模块、内存管理层、流表匹配层、加速数据管理模块、加速控制管理模块、RLTL(Relay Layer-Transfer Layer,中继层与传输层)协议支持层。用户通过RDC SDK(可重构数据中心软件开发包)可完成应用数据搬移、Kernel更新以及运行监控等任务。授权管理模块主要根据用户的不同需求完成基于FPGA的工作组管理及授权机制,完成基于芯片ID的安全校验机制,提高用户网表/BIT文件的安全性。流表匹配模块主要是利用根据协议解析相关内容并匹配到相关功能模型。加速数据及控制管理主要完成对控制流及数据流的管理。
请参见表1,表1为可重构数据中心软件开发包接口功能说明表,当前SDK支持用户向板卡DDR(Double Data Rate,双倍速率)存储器指定地址搬移数据,使用RDMA(Remote Direct Memory Access,远程直接数据存取)进行数据搬移,执行PR(一种操作系统命令)加载,以及配置Kernel参数等。
表1可重构数据中心软件开发包接口功能说明表
面向可重构数据中心的SDK | 功能详细说明 |
icfTransterData | 用户指定板卡DDR地址 |
icfTransterDataRDMA | RDMA搬移接口 |
icfCreateProgramToFPGA | PR流式加载到FPGA的接口 |
icfLoadProgramToFPGA | PR加载到FPGA的指令接口 |
icfLoadProgramToFlash | 加载到Flash的指令接口 |
icfConfigKernel | 配置kernel参数接口 |
icfConfigKernelReturn | 配置kernel返回值接口 |
icfStartKernel | 启动kernel接口 |
icfEndKernel | 强制终止kernel接口 |
请参见图7,图7为本申请实施例所提供的一种FPGA加速栈功能结构图,图7中Match引擎指匹配引擎,用于进行数据流的分配;Actions指FPGA加速栈的控制操作,RDMA(Remote Direct Memory Access)指远程直接数据存取;池KEY指存储池的密钥,PR加载指操作系统命令加载,FLASH指闪存,vFPGA指用户加速引擎。所述FPGA加速板卡的加速堆栈包括:静态区,用于执行所述数据计算指令、与所述主机端进行信息交互并提供物理接口;FPGA加速引擎,用于通向加速单元传输所述待计算数据进行加速计算操作。所述FPGA加速引擎用于通过PCIE接口传输所述待计算数据进行本地加速计算操作;还用于通过PCIE接口和MAC接口传输所述待计算数据进行远程加速计算操作。所述静态区与所述FPGA加速引擎通过目标总线进行数据交互;其中,所述目标总线包括BUSA、BUSC、BUSD和BUSE中的任一种总线或任几种总线的组合。
FPGA加速栈由静态区和用户应用加速引擎组成。静态部分包括控制面及数据面两部分,控制面主要是配合主机完成路由、流量控制、授权等 管理功能,执行主机下发的控制命令,上报FPGA本地的信息,完成与主机的交互处理。数据面主要是各类物理接口包括10/100G MAC以及PCIE通道等。
具体的,FPGA加速引擎可通过PCIE接口传输给加速单元进行本地加速,也可以通过经PCIE->MAC接口输出给其他板卡进行远程加速;动态可重配置加速单元可通过PR技术实现远程动态重配置;路由转发模块的转发路由表软件可配置,FPGA内部通过查找路由转发表实现路由选择。
请参见图8,图8为本申请实施例所提供的一种FPGA加速栈框架图,表2为光纤接口功能表,表2所示静态区和用户应用加速引擎通过BUSA、BUSB、BUSC、BUSD、BUSE总线进行交互,表2中FIM指FPGA Interface Manager(FPGA接口管理)
表2 FPGA接口管理功能表
下面通过在实际应用中的实施例说明上述实施例描述的流程。请参见图9,图9为本申请实施例所提供的一种FPGA云平台计算原理示意图。
在该实例中包括用户使用的HOST端,FPGA云平台分配给用户的4张板卡分别为FPGA加速板卡1(以下简称FPGA1)、FPGA加速板卡2(以 下简称FPGA2)、FPGA加速板卡3(以下简称FPGA3)和FPGA加速板卡4(以下简称FPGA4)。
各FPGA加速板卡中的Kernel主要功能如下:Kernel1是将从HOST端搬移的数据a、b分别进行+1和+2操作;Kernel2将a+1的结果与从HOST端搬移到FPGA2的数据c进行相加或相减或相乘或相除。Kernel3将b+2的结果与从HOST端搬移到FPGA3的数据d进行相加或相减或相乘或相除。Kernel4将Kernel2与Kernel3输出的结果相乘,得到的结果传递给HOST端。
本实施例的实例功能流程如下: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。Kernel4将结果相乘,并将结果按HOST端要求存储到本地,HOST将运算结果搬移至HOST端。
图9对应的实施例中FPGA加速板卡的计算流程如下:
步骤1.HOST以流式的方式向FPGA1加载Kernel1;
标准接口:icfCreateProgramToFPGA();
步骤2.HOST分别将Kernel2、Kernel3、Kernel4的aocx文件搬移到FPGA2;
标准接口:icfTransterDataRDMA();
步骤3.HOST向FPGA2发送指令将Kernelif2加载至FPGA2;
标准接口:icfLoadProgramToFPGA();
步骤4.FPGA2以流式的方式向FPGA3加载Kernel1;
标准接口:FPGA IP core提供接口;
步骤5.FPGA2将Kernel4的aocx文件搬移到FPGA2;
标准接口:需FPGA IP core提供接口;
步骤6.FPGA2向FPGA4发送指令将Kernel4加载至FPGA4;
标准接口:需FPGA IP core提供接口;
其中,步骤1至步骤6为FPGA Kernel加载过程,包括从HOST端进行加载(步骤1~3为HOST端代码)以及和FPGA端进行加载(步骤4~6为FPGA2工程)。
步骤7.HOST以RDMA的方式搬移数据A到FPGA1;
标准接口:icfTransterDataRDMA();
步骤8.HOST以直接传输的方式搬移数据B到FPGA1;
标准接口:icfTransterData();
步骤9.HOST将A在FPGA的地址以及数据长度配置给FPGA1;
标准接口:icfConfigKernelParam();
步骤10.HOST将B在FPGA的地址以及数据长度配置给FPGA1;
标准接口:icfConfigKernelParam();
步骤11.HOST将kernel1-1的计算结果A1存放地址配置给FPGA1;
标准接口:icfConfigKernelReturn();
步骤12.HOST将kernel1-2的计算结果A2存放地址配置给FPGA1;
标准接口:icfConfigKernelReturn();
步骤13.HOST端启动kernel1-1;
标准接口:icfStartKernel();
步骤14.HOST端启动kernel1-2;
标准接口:icfStartKernel();
其中,步骤7至步骤14为HOST端代码利用软件应用层接口进行实现与FPGA1之间的交互,并控制FPGA1启动kernel。
步骤15.FPGA1以RDMA的方式将A1搬移到FPGA2;
标准接口:FPGA IP core提供;
步骤16.HOST以RDMA的方式搬移数据c到FPGA2;
标准接口:icfTransterDataRDMA();
步骤17.FPGA1将A1在FPGA2的地址以及数据长度配置给FPGA2;
标准接口:FPGA IP core提供;
步骤18.HOST将c在FPGA2的地址以及数据长度配置给FPGA2;
标准接口:icfConfigKernelParam();
步骤19.FPGA1将kernel2的计算结果A2存放地址配置给FPGA2;
标准接口:需FPGA IP core提供;
步骤20.FPGA1启动FPGA2的kernel2并传形参A1、c;
标准接口:需FPGA IP core提供;
其中,步骤15至步骤20为FPGA1及HOST利用其提供接口与FPGA2之间进行交互,并由FPGA1控制FPGA2启动kernel。
步骤21.FPGA1以直接传输的方式将B1搬移到FPGA3;
步骤22.HOST以直接传输的方式搬移数据d到FPGA3;
步骤23.FPGA1将B1在FPGA3的地址以及数据长度配置给FPGA3;
步骤24.HOST将d在FPGA3的地址以及数据长度配置给FPGA3;
步骤25.FPGA1将kernel3的计算结果B2存放地址配置给FPGA3;
步骤26.FPGA1启动FPGA3的kernel3并传形式数B1、d;
其中,步骤21至步骤26为FPGA1及HOST利用其提供接口与FPGA3之间进行交互,并由FPGA1控制FPGA3启动kernel。
步骤27.FPGA2以RDMA的方式将A2搬移到FPGA4;
步骤28.FPGA3以直接传输的方式将B2搬移到FPGA4;
步骤29.FPGA2将A2在FPGA4的地址以及数据长度配置给FPGA4;
步骤30.FPGA3将B2在FPGA4的地址以及数据长度配置给FPGA4;
步骤31.FPGA2将kernel4的计算结果AB3存放地址配置给FPGA4;
步骤32.FPGA2启动FPGA4的kernel4并传形式数A2、B2;
其中,步骤27至步骤32为FPGA2及FPGA3利用其提供接口与FPGA4之间进行交互,并由FPGA2控制FPGA4启动kernel。
步骤33.FPGA4启动FPGA3的kernel3并传形式数B1、d。
本申请实施例还提供一种数据处理装置,该所述数据处理装置连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,所述数据处理装置包括:
任务分配模块,用于将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;
任务执行模块,用于向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
本实施例先将数据处理任务划分为多个数据处理子任务,再从FPGA加速端中确定每一数据处理子任务对应的目标FPGA加速板卡,利用目标FPGA加速板卡执行对应的数据处理子任务。在目标FPGA加速板卡处理数据处理子任务时,可以将其他目标FPGA加速板卡的数据处理结果作为输入数据,也可以将自身计算得到的数据处理结果传输至其他目标FPGA加速板卡。目标FPGA加速板卡之间通过网络传输数据处理结果,而不是先发送至主机端再经由主机端进行转发。可见,本实施例能够避免FPGA加速端中FPGA加速板卡数量受主机接口的物理限制,提高数据处理效率。
由于装置部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描 述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (14)
- 一种数据处理方法,其特征在于,应用于主机端,所述主机端连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,所述数据处理方法包括:将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
- 根据权利要求1所述数据处理方法,其特征在于,在向所述目标FPGA加速板卡传输待计算数据之后,还包括:将所述待计算数据的数据地址和数据长度配置至所述目标FPGA加速板卡,以便所述目标FPGA加速板卡根据所述数据地址和所述数据长度存储所述待计算数据。
- 根据权利要求1所述数据处理方法,其特征在于,还包括:将计算结果存放地址配置至所述目标FPGA加速板卡,以便所述目标PFGA加速卡将中间计算数据和/或所述最终处理结果存储至所述计算结果存放地址。
- 根据权利要求1所述数据处理方法,其特征在于,还包括:从所有所述目标FPGA加速板卡中选取第一目标FPGA加速板卡;向所述第一目标FPGA加速板卡传输所有所述数据处理子任务和任务分配信息;其中,所述任务分配信息包括所述数据处理子任务与所述目标FPGA加速板卡的对应关系;利用所述第一目标FPGA加速板卡根据所述任务分配信息将所述数据处理子任务传输至对应的目标FPGA加速板卡。
- 根据权利要求1所述数据处理方法,其特征在于,向所述目标FPGA 加速板卡传输待计算数据包括:从所有所述目标FPGA加速板卡中选取第二目标FPGA加速板卡;向所述第二目标FPGA加速板卡传输所有所述待计算数据和数据分配信息;其中,所述数据分配信息包括所述待计算数据与所述目标FPGA加速板卡的对应关系;利用所述第二目标FPGA加速板卡根据所述数据分配信息将所述待计算数据传输至对应的FPGA加速板卡。
- 根据权利要求1所述数据处理方法,其特征在于,向所述目标FPGA加速板卡传输待计算数据包括:通过自定义RDMA传输的方式向所述目标FPGA加速板卡传输对应的待计算数据;相应的,还包括:利用预设传输方式向所述目标FPGA加速板卡传输对应的数据处理子任务;其中,所述预设传输方式包括流式传输或整体打包传输。
- 根据权利要求1所述数据处理方法,其特征在于,还包括:当所述目标FPGA加速板卡基于网络向其他目标FPGA加速板卡传输所述中间计算数据时,向所述其他目标FPGA加速板卡传输所述中间计算数据的数据地址和数据长度,以便所述其他目标FPGA加速板卡根据所述中间计算数据的数据地址和数据长度存储所述中间计算数据。
- 根据权利要求1所述数据处理方法,其特征在于,所述目标FPGA加速板卡之间通过MAC接口传输数据,所述主机端与所述目标FPGA加速板卡之间通过PCIE接口传输数据,远端设备与所述目标FPGA加速板卡之间通过MAC接口传输数据。
- 根据权利要求1所述数据处理方法,其特征在于,当所述主机端和所述目标FPGA加速板卡为局域网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据在MAC层完成组包操作;当所述主机端和所述目标FPGA加速板卡为公网中的设备时,所述主机端与所述目标FPGA加速板卡之间的通信数据在UDP的payload层完成组包操作,所述目标FPGA加速板卡之间的通信数据在UDP的payload层完成组 包操作。
- 一种数据处理装置,其特征在于,所述数据处理装置连接FPGA加速端,所述FPGA加速端包括多个FPGA加速板卡,所述FPGA加速板卡之间通过网络连接,所述数据处理装置包括:任务分配模块,用于将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;任务执行模块,用于向所述目标FPGA加速板卡传输待计算数据,并利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
- 一种分布式数据流编程框架,其特征在于,包括CPU加速栈和FPGA加速栈;所述CPU加速栈,用于为数据处理任务的划分提供底层支持,还用于为数据处理子任务的调度提供主机端编程接口;所述FPGA加速栈,用于提供与所述主机端编程接口对应的加速接口,还用于在执行所述数据处理子任务时提供加速数据控制程序和kernel控制程序;其中,当所述分布式数据流编程框架工作时,所述CPU加速栈将数据处理任务划分为多个数据处理子任务,并在所述FPGA加速端中确定每个所述数据处理子任务对应的目标FPGA加速板卡;向所述目标FPGA加速板卡传输待计算数据;所述FPGA加速栈利用每个所述目标FPGA加速板卡执行对应的数据处理子任务得到数据处理结果;其中,所述数据处理结果包括中间计算数据或所述数据处理任务的最终处理结果,每个所述数据处理子任务的源数据包括所述待计算数据和/或所述中间计算数据,所述中间计算数据通过所述目标FPGA加速板卡之间的网络进行传输。
- 根据权利要求11所述分布式数据流编程框架,其特征在于,所述 FPGA加速栈包括:静态区,用于执行所述CPU加速栈下发的数据处理子任务,还用于将数据处理结果发送至所述CPU加速栈或其他目标FPGA加速板卡;FPGA加速引擎,用于向本地加速单元或其他目标FPGA加速板卡的加速单元传输所述数据处理子任务进行加速计算操作。
- 一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1至9任一项所述数据处理方法的步骤。
- 一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1至9任一项所述数据处理方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/781,317 US20230004433A1 (en) | 2020-02-05 | 2020-04-27 | Data processing method and apparatus, distributed data flow programming framework, and related component |
EP20917386.3A EP4095703A4 (en) | 2020-02-05 | 2020-04-27 | DATA PROCESSING METHOD AND DEVICE, DISTRIBUTED DATA FLOW PROGRAMMING FRAMEWORK AND ASSOCIATED ASSEMBLIES |
JP2022532624A JP7400105B2 (ja) | 2020-02-05 | 2020-04-27 | データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010080853.6 | 2020-02-05 | ||
CN202010080853.6A CN111324558B (zh) | 2020-02-05 | 2020-02-05 | 数据处理方法、装置、分布式数据流编程框架及相关组件 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021155642A1 true WO2021155642A1 (zh) | 2021-08-12 |
Family
ID=71170924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2020/087157 WO2021155642A1 (zh) | 2020-02-05 | 2020-04-27 | 数据处理方法、装置、分布式数据流编程框架及相关组件 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230004433A1 (zh) |
EP (1) | EP4095703A4 (zh) |
JP (1) | JP7400105B2 (zh) |
CN (1) | CN111324558B (zh) |
WO (1) | WO2021155642A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112087471A (zh) * | 2020-09-27 | 2020-12-15 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法及fpga云平台 |
CN112631778B (zh) * | 2020-12-27 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种基于fpga云的计算优化方法、系统、存储介质及设备 |
CN113065299B (zh) * | 2021-02-23 | 2024-01-09 | 杭州电子科技大学 | 一种基于fpga云的图像处理硬件逻辑hdl模块的线上验证方法 |
CN113268356B (zh) * | 2021-07-20 | 2021-10-29 | 西安芯瞳半导体技术有限公司 | 基于LINUX系统的多GPU板卡bounding的系统、方法及介质 |
CN114138481A (zh) * | 2021-11-26 | 2022-03-04 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置及介质 |
CN116149861B (zh) * | 2023-03-07 | 2023-10-20 | 中科计算技术西部研究院 | 一种基于vpx结构的高速通信方法 |
CN116228515B (zh) * | 2023-05-06 | 2023-08-18 | 苏州仰思坪半导体有限公司 | 硬件加速系统、方法及相关装置 |
CN116599892B (zh) * | 2023-07-17 | 2023-10-03 | 浪潮电子信息产业股份有限公司 | 一种服务器系统、路由方法、装置及电子设备和存储介质 |
CN117171075B (zh) * | 2023-10-27 | 2024-02-06 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739833A (zh) * | 2018-12-18 | 2019-05-10 | 山东超越数控电子股份有限公司 | 一种基于fpga的国产平台数据库加速系统及方法 |
US20190213029A1 (en) * | 2018-01-08 | 2019-07-11 | Huazhong University Of Science And Technology | Fpga-based method for network function accelerating and system thereof |
CN110069441A (zh) * | 2019-03-21 | 2019-07-30 | 中国科学院计算技术研究所 | 一种用于流计算的fpga网络及流计算系统与方法 |
CN110399221A (zh) * | 2019-07-23 | 2019-11-01 | 江苏鼎速网络科技有限公司 | 数据处理方法、系统及终端设备 |
CN110619595A (zh) * | 2019-09-17 | 2019-12-27 | 华中科技大学 | 一种基于多fpga加速器互联的图计算优化方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7073158B2 (en) | 2002-05-17 | 2006-07-04 | Pixel Velocity, Inc. | Automated system for designing and developing field programmable gate arrays |
CN103345461B (zh) * | 2013-04-27 | 2016-01-20 | 电子科技大学 | 基于fpga的带有加速器的多核处理器片上网络系统 |
US10326448B2 (en) | 2013-11-15 | 2019-06-18 | Scientific Concepts International Corporation | Code partitioning for the array of devices |
CN105183683B (zh) * | 2015-08-31 | 2018-06-29 | 浪潮(北京)电子信息产业有限公司 | 一种多fpga芯片加速卡 |
WO2017120270A1 (en) | 2016-01-04 | 2017-07-13 | Gray Research LLC | Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications |
CN106354574A (zh) * | 2016-08-30 | 2017-01-25 | 浪潮(北京)电子信息产业有限公司 | 一种用于大数据K‑Mean聚类算法的加速系统和方法 |
CN107273331A (zh) * | 2017-06-30 | 2017-10-20 | 山东超越数控电子有限公司 | 一种基于cpu+gpu+fpga架构的异构计算系统和方法 |
CN108776648A (zh) * | 2018-05-28 | 2018-11-09 | 郑州云海信息技术有限公司 | 数据传输方法、系统及fpga异构加速卡和存储介质 |
CN108776649A (zh) * | 2018-06-11 | 2018-11-09 | 山东超越数控电子股份有限公司 | 一种基于cpu+fpga异构计算系统及其加速方法 |
CN109787918A (zh) * | 2019-01-08 | 2019-05-21 | 郑州云海信息技术有限公司 | 基于网络传输的数据加速方法、装置、系统及一种加速卡 |
CN110083558A (zh) * | 2019-06-03 | 2019-08-02 | 苏州长江睿芯电子科技有限公司 | 一种用于自适应可编程存储计算加速卡装置 |
CN110519090B (zh) * | 2019-08-23 | 2022-11-04 | 苏州浪潮智能科技有限公司 | 一种fpga云平台的加速卡分配方法、系统及相关组件 |
CN110618871B (zh) * | 2019-09-21 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种fpga云平台加速资源的分配方法与系统 |
-
2020
- 2020-02-05 CN CN202010080853.6A patent/CN111324558B/zh active Active
- 2020-04-27 JP JP2022532624A patent/JP7400105B2/ja active Active
- 2020-04-27 EP EP20917386.3A patent/EP4095703A4/en active Pending
- 2020-04-27 WO PCT/CN2020/087157 patent/WO2021155642A1/zh unknown
- 2020-04-27 US US17/781,317 patent/US20230004433A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190213029A1 (en) * | 2018-01-08 | 2019-07-11 | Huazhong University Of Science And Technology | Fpga-based method for network function accelerating and system thereof |
CN109739833A (zh) * | 2018-12-18 | 2019-05-10 | 山东超越数控电子股份有限公司 | 一种基于fpga的国产平台数据库加速系统及方法 |
CN110069441A (zh) * | 2019-03-21 | 2019-07-30 | 中国科学院计算技术研究所 | 一种用于流计算的fpga网络及流计算系统与方法 |
CN110399221A (zh) * | 2019-07-23 | 2019-11-01 | 江苏鼎速网络科技有限公司 | 数据处理方法、系统及终端设备 |
CN110619595A (zh) * | 2019-09-17 | 2019-12-27 | 华中科技大学 | 一种基于多fpga加速器互联的图计算优化方法 |
Non-Patent Citations (1)
Title |
---|
See also references of EP4095703A4 |
Also Published As
Publication number | Publication date |
---|---|
CN111324558B (zh) | 2021-08-10 |
JP2022549527A (ja) | 2022-11-25 |
EP4095703A4 (en) | 2023-07-19 |
EP4095703A1 (en) | 2022-11-30 |
CN111324558A (zh) | 2020-06-23 |
US20230004433A1 (en) | 2023-01-05 |
JP7400105B2 (ja) | 2023-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021155642A1 (zh) | 数据处理方法、装置、分布式数据流编程框架及相关组件 | |
US10951458B2 (en) | Computer cluster arrangement for processing a computation task and method for operation thereof | |
CN108319563B (zh) | 一种基于fpga的网络功能加速方法和系统 | |
EP3283974B1 (en) | Systems and methods for executing software threads using soft processors | |
JP7404390B2 (ja) | コヒーレントアクセラレーションのためのドメイン支援プロセッサピア | |
WO2016112701A9 (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
Pourhabibi et al. | Cerebros: Evading the rpc tax in datacenters | |
CN104820657A (zh) | 一种基于嵌入式异构多核处理器上的核间通信方法及并行编程模型 | |
US10498814B2 (en) | Network storage node and network storage system | |
He et al. | EasyNet: 100 Gbps network for HLS | |
Kidane et al. | NoC based virtualized accelerators for cloud computing | |
Douglis et al. | Fleet—fast lanes for expedited execution at 10 terabits: Program overview | |
TWI442248B (zh) | 處理資料之處理器-伺服器混合系統 | |
Mbongue et al. | Deploying multi-tenant FPGAs within Linux-based cloud infrastructure | |
US10169275B2 (en) | System, method, and recording medium for topology-aware parallel reduction in an accelerator | |
CN104156663A (zh) | 一种硬件虚拟端口及处理器系统 | |
Kidane et al. | NoC based virtualized FPGA as cloud Services | |
US11789790B2 (en) | Mechanism to trigger early termination of cooperating processes | |
US20060095724A1 (en) | Message-passing processor | |
Giorgi et al. | Modeling multi-board communication in the axiom cyber-physical system | |
US11171881B2 (en) | Multiplexed resource allocation architecture | |
Werner et al. | Virtualized on-chip distributed computing for heterogeneous reconfigurable multi-core systems | |
Balle et al. | Inter-kernel links for direct inter-FPGA communication | |
US20240061805A1 (en) | Host endpoint adaptive compute composability | |
WO2022193108A1 (zh) | 一种集成芯片及数据搬运方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20917386 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2022532624 Country of ref document: JP Kind code of ref document: A |
|
ENP | Entry into the national phase |
Ref document number: 2020917386 Country of ref document: EP Effective date: 20220822 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |