CN114138481A - 一种数据处理方法、装置及介质 - Google Patents
一种数据处理方法、装置及介质 Download PDFInfo
- Publication number
- CN114138481A CN114138481A CN202111425760.3A CN202111425760A CN114138481A CN 114138481 A CN114138481 A CN 114138481A CN 202111425760 A CN202111425760 A CN 202111425760A CN 114138481 A CN114138481 A CN 114138481A
- Authority
- CN
- China
- Prior art keywords
- accelerator card
- fpga accelerator
- result data
- calculation
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000004364 calculation method Methods 0.000 claims abstract description 187
- 238000000034 method Methods 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 67
- 230000001133 acceleration Effects 0.000 claims description 33
- 238000013507 mapping Methods 0.000 claims description 25
- 230000005055 memory storage Effects 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
Abstract
本申请公开了一种数据处理方法、装置及介质,包括:第一目标FPGA加速卡获取与自身连接的目标主机发送的计算开始命令,对待处理数据进行计算,得到中间结果数据,根据自身的配置信息将中间结果数据、下一步计算类型信息发送至下一个FPGA加速卡,下一个FPGA加速卡对中间结果数据进行计算,得到新中间结果数据,将新中间结果数据以及下一步计算类型信息发送至下一个FPGA加速卡,直到最后一个参与计算的第二目标FPGA加速卡计算完成,得到最终结果数据;通过第二目标FPGA加速卡将最终结果数据返回至目标主机,以完成针对待处理数据的分布式计算。能够降低多块FPGA加速卡进行分布式计算时的计算延迟,从而提升计算效率。
Description
技术领域
本申请涉及FPGA云平台技术领域,特别涉及一种数据处理方法、装置及介质。
背景技术
随着FPGA(即Field Programmable Gate Array,现场可编程与门阵列)处理能力的不断增强,越来越多的数据中心开始使用FPGA进行加速,以提高计算能力和灵活性。为了管理这些数量和种类越来越多的FPGA加速卡,FPGA云平台应用而生,以期解决当前FPGA加速卡部署、维护和管理难的问题。
目前,在云平台的管理下,由于单块FPGA加速卡逻辑资源有限,在复杂的计算任务通过一块FPGA加速卡无法实现时,需要将复杂的计算任务分为多个计算步骤,每个步骤分配给一块FPGA加速卡计算,多个FPGA加速卡按顺序计算完成后,返回主机最终结果。其中,多块FPGA加速卡间的数据传输和计算步骤之间的切换都由主机运行的软件完成,这样,多卡的分布式计算相对于单卡计算延迟会很大,计算效率低。
发明内容
有鉴于此,本申请的目的在于提供一种数据处理方法、装置及介质,能够降低多块FPGA加速卡进行分布式计算时的计算延迟,从而提升计算效率。其具体方案如下:
第一方面,本申请公开了一种数据处理方法,包括:
当第一目标FPGA加速卡获取到与自身连接的目标主机发送的计算开始命令,则对待处理数据进行计算,得到中间结果数据;
通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,以便下一个FPGA加速卡对所述中间结果数据进行计算,得到新的中间结果数据,并根据自身的配置信息将所述新的中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,直到最后一个参与计算的第二目标FPGA加速卡计算完成,得到最终结果数据;
通过所述第二目标FPGA加速卡将所述最终结果数据返回至所述第一目标FPGA加速卡;
通过第一目标FPGA加速卡将所述最终结果数据发送至所述目标主机,以完成针对所述待处理数据的分布式计算。
可选的,在第一目标FPGA加速卡获取到与自身连接的目标主机发送的计算开始命令之前,还包括:
通过所述目标主机获取参与计算的全部FPGA加速卡的配置信息,并将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡;
通过所述目标主机与其他主机通信,分别向所述其他主机发送所述其他主机各自对应的配置信息,以便所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡;
其中,所述全部FPGA加速卡中的非第二目标FPGA加速卡的配置信息均包括预设地址映射关系、下一个参与计算的FPGA加速卡的网络地址信息、下一步计算的计算类型信息,并且,所述预设地址映射关系为中间结果数据在自身的内存存储物理地址范围以及下一个参与计算的FPGA加速卡的内存存储物理地址范围之间的映射关系;所述第二目标FPGA加速卡的配置信息包括所述第一目标FPGA加速卡的网络地址信息,最终结果数据在自身的内存存储物理地址范围以及在所述目标主机的内存存储物理地址。
可选的,所述将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡,包括:
将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡的内部寄存器;
所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡,包括:
所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡的内部寄存器。
可选的,所述对待处理数据进行计算,得到中间结果数据,包括:
调用所述第一目标FPGA加速卡自身的kernel对待处理数据进行计算,得到中间结果数据,以便该kernel将所述中间结果数据写入所述第一目标FPGA加速卡的内存。
可选的,还包括:
在kernel向所述内存进行数据写入时,根据所述预设映射关系检测当前写入地址是否在所述中间结果数据在自身的内存存储物理地址范围内;
若是,则触发所述通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡的步骤。
可选的,所述通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,以便下一个FPGA加速卡对所述中间结果数据进行计算,得到新的中间结果数据,包括:
通过所述第一目标FPGA加速卡将所述中间结果数据转为数据包,并根据自身的配置信息在所述中间结果数据的最后一个数据包中添加下一步计算的计算类型信息;
将所述数据包发送至下一个FPGA加速卡,以便下一个FPGA加速卡接收到最后一个数据包时,根据最后一个数据包中的计算类型信息生成kernel调用命令,并利用所述kernel调用命令调用自身的kernel对所述中间结果数据进行相应的计算,得到新的中间结果数据。
可选的,所述通过所述第二目标FPGA加速卡将所述最终结果数据返回至所述第一目标FPGA加速卡,包括:
通过所述第二目标FPGA加速卡检测kernel计算完成后发给PCIE的中断信号;
当检测到所述中断信号,则将所述最终结果数据发送至所述第一目标FPGA加速卡。
第二方面,本申请公开了数据处理装置,应用于FPGA云平台,包括参与分布式计算的多个FPGA加速卡,以及分别与所述多个FPGA加速卡连接的主机,多个FPGA加速卡中包括第一目标FPGA加速卡、第二目标FPGA加速卡,其中,
所述第一目标FPGA加速卡,用于当获取到与自身连接的目标主机发送的计算开始命令,则对待处理数据进行计算,得到中间结果数据;根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,以便下一个FPGA加速卡对所述中间结果数据进行计算,得到新的中间结果数据,并根据自身的配置信息将所述新的中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,直到最后一个参与计算的第二目标FPGA加速卡计算完成,得到最终结果数据;
所述第二目标FPGA加速卡,用于将所述最终结果数据返回至所述第一目标FPGA加速卡;
所述第一目标FPGA加速卡,用于将所述最终结果数据发送至所述目标主机,以完成针对所述待处理数据的分布式计算。
可选的,所述目标主机,还用于获取参与计算的全部FPGA加速卡的配置信息,并将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡;与其他主机通信,分别向所述其他主机发送所述其他主机各自对应的配置信息,以便所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡;
其中,所述全部FPGA加速卡中的非第二目标FPGA加速卡的配置信息均包括预设地址映射关系、下一个参与计算的FPGA加速卡的网络地址信息、下一步计算的计算类型信息,并且,所述预设地址映射关系为中间结果数据在自身的内存存储物理地址范围以及下一个参与计算的FPGA加速卡的内存存储物理地址范围之间的映射关系;所述第二目标FPGA加速卡的配置信息包括所述第一目标FPGA加速卡的网络地址信息,最终结果数据在自身的内存存储物理地址范围以及在所述目标主机的内存存储物理地址。
第三方面,本申请实施例公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的数据处理方法。
可见,本申请当第一目标FPGA加速卡获取到与自身连接的目标主机发送的计算开始命令,则对待处理数据进行计算,得到中间结果数据,然后通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,以便下一个FPGA加速卡对所述中间结果数据进行计算,得到新的中间结果数据,并根据自身的配置信息将所述新的中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,直到最后一个参与计算的第二目标FPGA加速卡计算完成,得到最终结果数据,之后通过所述第二目标FPGA加速卡将所述最终结果数据返回至所述第一目标FPGA加速卡,最后通过第一目标FPGA加速卡将所述最终结果数据发送至所述目标主机,以完成针对所述待处理数据的分布式计算。也即,本申请通过对参与分布式计算的各个FPGA加速卡进行配置,实现中间结果数据的自动传输、以及中间计算步骤对应的加速卡的自动计算以及最终结果数据的自动返回,避免了主机软件参与分布式计算过程,能够降低多块FPGA加速卡进行分布式计算时的计算延迟,从而提升计算效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种数据处理方法流程图;
图2为本申请提供的一种具体的FGPA云平台分布式计算主机和加速卡的结构示意图;
图3为本申请提供的一种FPGA加速卡静态区结构示意图;
图4为本申请提供的一种具体的FPGA加速卡结构示意图;
图5为本申请提供的一种具体的FPGA加速卡结构示意图;
图6为本申请提供的一种具体的数据处理方案实施架构图;
图7为本申请提供的一种数据处理装置结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,在云平台的管理下,由于单块FPGA加速卡逻辑资源有限,在复杂的计算任务通过一块FPGA加速卡无法实现时,需要将复杂的计算任务分为多个计算步骤,每个步骤分配给一块FPGA加速卡计算,多个FPGA加速卡按顺序计算完成后,返回主机最终结果。其中,多块FPGA加速卡间的数据传输和计算步骤之间的切换都由主机运行的软件完成,这样,多卡的分布式计算相对于单卡计算延迟会很大,计算效率低。为此本申请实施例提供了一种数据处理方案,能够降低多块FPGA加速卡进行分布式计算时的计算延迟,从而提升计算效率。
参见图1所示,本申请实施例公开了一种数据处理方法,包括:
步骤S11:当第一目标FPGA加速卡获取到与自身连接的目标主机发送的计算开始命令,则对待处理数据进行计算,得到中间结果数据。
在具体的实施方式中,在第一目标FPGA加速卡获取到与自身连接的目标主机发送的计算开始命令之前,还包括:通过所述目标主机获取参与计算的全部FPGA加速卡的配置信息,并将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡;通过所述目标主机与其他主机通信,分别向所述其他主机发送所述其他主机各自对应的配置信息,以便所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡;
其中,所述全部FPGA加速卡中的非第二目标FPGA加速卡的配置信息均包括预设地址映射关系、下一个参与计算的FPGA加速卡的网络地址信息、下一步计算的计算类型信息,并且,所述预设地址映射关系为中间结果数据在自身的内存存储物理地址范围以及下一个参与计算的FPGA加速卡的内存存储物理地址范围之间的映射关系;所述第二目标FPGA加速卡的配置信息包括所述第一目标FPGA加速卡的网络地址信息,最终结果数据在自身的内存存储物理地址范围以及在所述目标主机的内存存储物理地址。
进一步的,在具体的实施方式中,本申请实施例可以将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡的内部寄存器;所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡的内部寄存器。其中,内部寄存器为BSP(即BoardSupport Package,板级支持包)中的内部寄存器。
也即,本申请实施例在计算开始之前,可以通过第一个参与分布式计算FPGA加速卡连接的目标主机对各个参与分布式计算的FPGA加速卡进行配置,在具体的实施方式中,目标主机通过PCI-E(即peripheral component interconnect express,一种高速串行计算机扩展总线标准)总线将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡的内部寄存器,通过网络与其他主机通信,分别向其他主机发送其他主机各自对应的配置信息,以便其他主机通过PCI-E总线将相应的配置信息配置至与自身连接的FPGA加速卡。配置完成后,目标主机向第一目标FPGA加速卡发送开始计计算命令。
并且,本申请实施例中,调用所述第一目标FPGA加速卡自身的kernel对待处理数据进行计算,得到中间结果数据,以便该kernel将所述中间结果数据写入所述第一目标FPGA加速卡的内存。同理,下一FPGA加速卡同样调用自身的kernel对待处理数据进行计算,得到相应的中间结果数据。
步骤S12:通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,以便下一个FPGA加速卡对所述中间结果数据进行计算,得到新的中间结果数据,并根据自身的配置信息将所述新的中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,直到最后一个参与计算的第二目标FPGA加速卡计算完成,得到最终结果数据。
在具体的实施方式中,本申请实施例在kernel向所述内存进行数据写入时,根据所述预设映射关系检测当前写入地址是否在所述中间结果数据在自身的内存存储物理地址范围内;若是,则触发所述通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡的步骤。
通过所述第一目标FPGA加速卡将所述中间结果数据转为数据包,并根据自身的配置信息在所述中间结果数据的最后一个数据包中添加下一步计算的计算类型信息;将所述数据包发送至下一个FPGA加速卡,以便下一个FPGA加速卡接收到最后一个数据包时,根据最后一个数据包中的计算类型信息生成kernel调用命令,并利用所述kernel调用命令调用自身的kernel对所述中间结果数据进行相应的计算,得到新的中间结果数据。
在具体的实施方式中,kernel将所述中间结果数据写入所述第一目标FPGA加速卡的内存,第一目标FPGA加速卡中的BSP向本卡的MAC(即Media Access Control,媒体介入控制层)模块发起RDMA(即Remote Direct Memory Access,远程直接数据存取)命令,MAC模块根据配置信息将加速卡本地内存中的中间结果数据转换成RDMA数据包传输到下一加速卡内存,在发送中间结果数据的最后一个数据包中,数据包头部带有下一步计算的计算类型信息,下一加速卡接收到中间结果数据的最后一个数据包后,根据计算类型信息调用kernel进行相应的计算,下一加速卡kernel计算产生中间结果数据的同时,自动发起RDMA写命令传输给下一个加速卡,以此类推,直到计算的最后一个加速卡。最后一块加速卡kernel计算完成后将计算结果根据BSP中的配置信息,反馈给目标主机内存。
步骤S13:通过所述第二目标FPGA加速卡将所述最终结果数据返回至所述第一目标FPGA加速卡。
在具体的实施方式中,本申请实施例通过所述第二目标FPGA加速卡检测kernel计算完成后发给PCIE的中断信号;当检测到所述中断信号,则将所述最终结果数据发送至所述第一目标FPGA加速卡。
步骤S14:通过第一目标FPGA加速卡将所述最终结果数据发送至所述目标主机,以完成针对所述待处理数据的分布式计算。
也即,第二目标FPGA加速卡根据配置信息,即第一目标FPGA加速卡的网络地址信息,以及最终结果数据在自身的内存存储物理地址范围以及在所述目标主机的内存存储物理地址,将最终结果数据发送至目标主机。
参见图2所示,图2为本申请实施例提供的一种具体的FGPA云平台分布式计算主机和加速卡的结构示意图。在云平台的管理下,将复杂的计算任务分配给FPGA资源池中的某一个或者某几个FPGA中进行加速。资源池内的加速卡通过PCI-E与服务器连接,加速卡之间通过以太网进行数据传输。图2中以3个加速卡和3个主机为例,包括主机1、FPGA加速卡1,主机2、FPGA加速卡2,主机3、FPGA加速卡3。FPGA加速卡内部采用支持OpenCL编程的通用架构,分为静态区(BSP)和计算单元(kernel)两个部分。参见图3所示,图3为本申请实施例提供的一种FPGA加速卡静态区结构示意图。静态区包括与主机CPU单元连接的PCI-E模块、与网络连接的网络数据处理模块(MAC)、内存控制器(DDR_controller)等模块。主机通过PCI-E调用kernel开始计算,并获得计算完成信息。主机可以通过PCI-E和MAC模块与网络上的其他主机收发信息,也可以通过PCI-E向MAC发起RDMA写命令,MAC模块将本地加速卡内存数据转化为RDMA数据包传输给以太网上的其他加速卡内存。Kernel是由用户开发的计算单元,可以用OpenCL(即Open Computing Language,开放运算语言)编写,也可以用传统RTL(即register transfer language,寄存器传递语言)语言开发。Kernel可以通过BSP中的内存控制器读写FPGA加速卡内存。
需要指出的是,现有技术中,将复杂计算任务分为2个或多个计算步骤,每个步骤分配给一块FPGA加速卡计算,多个FPGA加速卡按顺序计算完成后,返回主机最终结果。以2个计算步骤为例,第一主机通过PCI-E发送指令使第一FPGA加速卡开始计算,kernel计算完成通过PCI-E发送中断信号给第一主机,第一主机得到第一块FPGA加速卡计算完成信息后,通过PCI-E向MAC发送RDMA写命令,将第一加速卡内存中的中间结果数据传输给第二加速卡内存,第一主机确认数据传输完成后,通知第二主机进行下一步计算,第二主机通过PCI-E发送指令使第二加速卡开始计算,kernel计算完成通过PCI-E发送中断信号给第二主机,第二主机发送消息通知第一主机计算结束。从前述分布式计算过程可以看出,多块卡间数据传输和计算步骤之间切换都由主机运行的软件完成,延迟会很大。本申请提出的方案,在不改变计算单元(kernel)的前提下,可以大幅降低FPGA云平台分布式计算的延迟。
参见图4所示,本申请实施例提供了一种具体的FPGA加速卡结构示意图。本申请实施例通过BSP中的内存检测模块以及命令合并模块实现。
内存检测模块处于kernel和内存控制器之间,可以透传kernel读写内存操作。内部包含内存映射表,记录中间结果数据在本卡内存存储物理地址和下一加速卡存储物理地址的映射关系,以及下一步计算类型信息和下一加速卡网络地址信息。当kernel将数据写入加速卡内存时,内存检测模块将写地址和本卡中间结果数据的内存存储物理地址的寄存器设置对比,数据写地址属于中间结果数据在本卡的内存存储物理地址范围以内,则判定kernel写入的数据为中间结果数据;通过查内存映射表得到存入下一加速卡内存的物理地址和加速卡网络地址信息。内存检测模块向MAC模块发出RDMA写命令,MAC模块从本卡内存读取中间结果数据,组成RDMA网络数据包发送到下一加速卡。内存检测模块检测到kernel写入中间结果数据的最后一个数据时,向MAC发出带有下一步计算类型的RDMA写命令,MAC发出的最后一个中间结果数据包,数据包头部带有下一步计算类型信息。
命令合并模块处于PCI-E总线和kernel之间,PCI-E总线操作可以通过命令合并模块透传到kernel。命令合并模块可以解析MAC模块接收的RDMA数据包,得到中间结果数据的最后一包数据是否到来信息和下一步计算类型。当中间结果数据的最后一包数据到来时,将其中包含的计算类型信息转化为调用kernel开始计算的PCI-E总线写寄存器命令,发送给kernel,使kernel开始计算。命令合并模块会检测kernel计算完成后发给PCI-E的中断信号,当命令合并模块属于计算过程的最后一块加速卡,并被设置目标主机内存存储计算结果的物理地址和第一目标FPGA加速卡的网络地址信息时,将kernel计算完成的中断信号转换为RDMA写命令发给MAC模块,MAC模块将计算结果通过网络发送至第一主机的内存。
这样,在不改变FPGA加速卡计算单元设计的前提下,使多步骤分布式计算不依赖主机软件的调度,实现了自动传输中间结果数据和自动进行下一步计算以及自动返回结果的功能。在不增加开发工作量的情况下,使FPGA云平台可以分布式进行复杂的大型计算,而不大幅增加计算的延迟。
下面以两步分布式计算为例,阐述本申请提供的数据处理方案:
参见图5所示,图5为本申请实施例提供的一种具体的FPGA加速卡结构示意图,使用的FPGA加速卡为浪潮f10a加速卡。本加速卡的FPGA为intel的arria10器件,与FPGA连接的有两个10G以太网光口,以及两个4GB的SDRAM作为存储器,可以通过PCI-E连接服务器的CPU。
参见图6所示,图6为本申请实施例提供的一种具体的数据处理方案实施架构图。计算的两个步骤分别由网络连接的两个FPGA加速卡完成。两块FPGA加速卡分别通过PCI-E与主机连接。首先第一主机通过PCI-E设置第一FPGA加速卡的BSP寄存器,确定第一步计算产生的中间结果数据在本加速卡内存存储物理地址范围、第二主机网络地址和中间结果数据在第二主机内存中的物理地址范围,以及第二步计算类型信息。第一主机通过网络将配置信息传递给第二主机,第二主机通过PCI-E配置第二FPGA加速卡的BSP寄存器,确定第一FPGA加速卡网络地址和最终结果数据在本卡以及第一主机内存中的存储物理地址。第一主机通过PCI-E调用第一FPGA加速卡的kernel开始计算,kernel将计算结果写入本卡内存,BSP中的内存检测模块检测kernel写本卡内存操作,并判断出写地址在设置的中间结果数据的存储物理地址范围之内,通过查表得到中间结果数据在第二FPGA加速卡的内存物理地址,向MAC模块发送RDMA写命令。MAC模块根据RDMA写命令,将本卡内存中的中间结果数据组成RDMA网络数据包发送到第二FPGA加速卡的MAC模块,第二FPGA加速卡的MAC模块将RDMA数据包中的中间结果数据写入第二FPGA加速卡中相应的内存物理地址中。当第一FPGA加速卡的BSP中的内存检测模块检测kernel写入中间结果数据的最后一个数据时,向MAC模块发送带有下一步计算类型信息的RDMA写命令,MAC模块发出带有下一步计算类型信息的最后一个中间结果数据包。当中间结果数据的最后一包到达第二FPGA加速卡MAC后,命令合并模块检测到中间结果最后一包到达并且得到下一步计算类型信息,将此信息转化为PCI-E总线写寄存器命令发送给kernel。第二块加速卡kernel开始计算,计算完成后,kernel发出中断信号。命令合并模块将kernel计算完成中断信号,转换为RDMA写命令发送给MAC模块。MAC模块将最终结果数据转化为RDMA数据包发送给第一FPGA加速卡的MAC模块,第一FPGA加速卡的MAC模块通过PCI-E将最终结果数据发送至第一主机内存中,第一主机软件轮询第一主机内存的计算结果缓存区,得到最终结果数据,分布式计算完成。
可见,本申请实施例通过对参与分布式计算的各个FPGA加速卡进行配置,实现中间结果数据的自动传输、以及中间计算步骤对应的加速卡的自动计算以及最终结果数据的自动返回,避免了主机软件参与分布式计算过程,能够降低多块FPGA加速卡进行分布式计算时的计算延迟,从而提升计算效率。
参见图7所示,本申请实施例提供了一种数据处理装置,应用于FPGA云平台,包括参与分布式计算的多个FPGA加速卡,以及分别与所述多个FPGA加速卡连接的主机,多个FPGA加速卡中包括第一目标FPGA加速卡11、第二目标FPGA加速卡12,其中,
所述第一目标FPGA加速卡11,用于当获取到与自身连接的目标主机发送的计算开始命令,则对待处理数据进行计算,得到中间结果数据;根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,以便下一个FPGA加速卡对所述中间结果数据进行计算,得到新的中间结果数据,并根据自身的配置信息将所述新的中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,直到最后一个参与计算的第二目标FPGA加速卡12计算完成,得到最终结果数据;
所述第二目标FPGA加速卡12,用于将所述最终结果数据返回至所述第一目标FPGA加速卡11;
所述第一目标FPGA加速卡11,用于将所述最终结果数据发送至所述目标主机,以完成针对所述待处理数据的分布式计算。
可见,本申请实施例通过对参与分布式计算的各个FPGA加速卡进行配置,实现中间结果数据的自动传输、以及中间计算步骤对应的加速卡的自动计算以及最终结果数据的自动返回,避免了主机软件参与分布式计算过程,能够降低多块FPGA加速卡进行分布式计算时的计算延迟,从而提升计算效率。
在具体的实施方式中,所述目标主机,还用于获取参与计算的全部FPGA加速卡的配置信息,并将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡;与其他主机通信,分别向所述其他主机发送所述其他主机各自对应的配置信息,以便所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡;
其中,所述全部FPGA加速卡中的非第二目标FPGA加速卡的配置信息均包括预设地址映射关系、下一个参与计算的FPGA加速卡的网络地址信息、下一步计算的计算类型信息,并且,所述预设地址映射关系为中间结果数据在自身的内存存储物理地址范围以及下一个参与计算的FPGA加速卡的内存存储物理地址范围之间的映射关系;所述第二目标FPGA加速卡的配置信息包括所述第一目标FPGA加速卡的网络地址信息,最终结果数据在自身的内存存储物理地址范围以及在所述目标主机的内存存储物理地址。
并且,在具体的实施方式中,目标主机将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡的内部寄存器;所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡的内部寄存器。
第一目标FPGA加速卡调用自身的kernel对待处理数据进行计算,得到中间结果数据,以便该kernel将所述中间结果数据写入所述第一目标FPGA加速卡的内存。
进一步的,在kernel向所述内存进行数据写入时,第一目标FPGA加速卡根据所述预设映射关系检测当前写入地址是否在所述中间结果数据在自身的内存存储物理地址范围内;若是,则触发所述通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡的步骤。
并且,所述第一目标FPGA加速卡将所述中间结果数据转为数据包,并根据自身的配置信息在所述中间结果数据的最后一个数据包中添加下一步计算的计算类型信息;将所述数据包发送至下一个FPGA加速卡,以便下一个FPGA加速卡接收到最后一个数据包时,根据最后一个数据包中的计算类型信息生成kernel调用命令,并利用所述kernel调用命令调用自身的kernel对所述中间结果数据进行相应的计算,得到新的中间结果数据。
所述第二目标FPGA加速卡检测kernel计算完成后发给PCIE的中断信号;当检测到所述中断信号,则将所述最终结果数据发送至所述第一目标FPGA加速卡。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的数据处理方法。
关于上述数据处理方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种数据处理方法、装置及介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据处理方法,其特征在于,应用于FPGA云平台,包括:
当第一目标FPGA加速卡获取到与自身连接的目标主机发送的计算开始命令,则对待处理数据进行计算,得到中间结果数据;
通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,以便下一个FPGA加速卡对所述中间结果数据进行计算,得到新的中间结果数据,并根据自身的配置信息将所述新的中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,直到最后一个参与计算的第二目标FPGA加速卡计算完成,得到最终结果数据;
通过所述第二目标FPGA加速卡将所述最终结果数据返回至所述第一目标FPGA加速卡;
通过第一目标FPGA加速卡将所述最终结果数据发送至所述目标主机,以完成针对所述待处理数据的分布式计算。
2.根据权利要求1所述的数据处理方法,其特征在于,在第一目标FPGA加速卡获取到与自身连接的目标主机发送的计算开始命令之前,还包括:
通过所述目标主机获取参与计算的全部FPGA加速卡的配置信息,并将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡;
通过所述目标主机与其他主机通信,分别向所述其他主机发送所述其他主机各自对应的配置信息,以便所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡;
其中,所述全部FPGA加速卡中的非第二目标FPGA加速卡的配置信息均包括预设地址映射关系、下一个参与计算的FPGA加速卡的网络地址信息、下一步计算的计算类型信息,并且,所述预设地址映射关系为中间结果数据在自身的内存存储物理地址范围以及下一个参与计算的FPGA加速卡的内存存储物理地址范围之间的映射关系;所述第二目标FPGA加速卡的配置信息包括所述第一目标FPGA加速卡的网络地址信息,最终结果数据在自身的内存存储物理地址范围以及在所述目标主机的内存存储物理地址。
3.根据权利要求2所述的数据处理方法,其特征在于,所述将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡,包括:
将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡的内部寄存器;
所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡,包括:
所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡的内部寄存器。
4.根据权利要求2所述的数据处理方法,其特征在于,所述对待处理数据进行计算,得到中间结果数据,包括:
调用所述第一目标FPGA加速卡自身的kernel对待处理数据进行计算,得到中间结果数据,以便该kernel将所述中间结果数据写入所述第一目标FPGA加速卡的内存。
5.根据权利要求4所述的数据处理方法,其特征在于,还包括:
在kernel向所述内存进行数据写入时,根据所述预设映射关系检测当前写入地址是否在所述中间结果数据在自身的内存存储物理地址范围内;
若是,则触发所述通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡的步骤。
6.根据权利要求1至5任一项所述的数据处理方法,其特征在于,所述通过所述第一目标FPGA加速卡根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,以便下一个FPGA加速卡对所述中间结果数据进行计算,得到新的中间结果数据,包括:
通过所述第一目标FPGA加速卡将所述中间结果数据转为数据包,并根据自身的配置信息在所述中间结果数据的最后一个数据包中添加下一步计算的计算类型信息;
将所述数据包发送至下一个FPGA加速卡,以便下一个FPGA加速卡接收到最后一个数据包时,根据最后一个数据包中的计算类型信息生成kernel调用命令,并利用所述kernel调用命令调用自身的kernel对所述中间结果数据进行相应的计算,得到新的中间结果数据。
7.根据权利要求6所述的数据处理方法,其特征在于,所述通过所述第二目标FPGA加速卡将所述最终结果数据返回至所述第一目标FPGA加速卡,包括:
通过所述第二目标FPGA加速卡检测kernel计算完成后发给PCIE的中断信号;
当检测到所述中断信号,则将所述最终结果数据发送至所述第一目标FPGA加速卡。
8.一种数据处理装置,其特征在于,应用于FPGA云平台,包括参与分布式计算的多个FPGA加速卡,以及分别与所述多个FPGA加速卡连接的主机,多个FPGA加速卡中包括第一目标FPGA加速卡、第二目标FPGA加速卡,其中,
所述第一目标FPGA加速卡,用于当获取到与自身连接的目标主机发送的计算开始命令,则对待处理数据进行计算,得到中间结果数据;根据自身的配置信息将所述中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,以便下一个FPGA加速卡对所述中间结果数据进行计算,得到新的中间结果数据,并根据自身的配置信息将所述新的中间结果数据以及下一步计算的计算类型信息发送至下一个FPGA加速卡,直到最后一个参与计算的第二目标FPGA加速卡计算完成,得到最终结果数据;
所述第二目标FPGA加速卡,用于将所述最终结果数据返回至所述第一目标FPGA加速卡;
所述第一目标FPGA加速卡,用于将所述最终结果数据发送至所述目标主机,以完成针对所述待处理数据的分布式计算。
9.根据权利要求8所述的数据处理装置,其特征在于,
所述目标主机,还用于获取参与计算的全部FPGA加速卡的配置信息,并将所述第一目标FPGA加速卡对应的配置信息配置至所述第一目标FPGA加速卡;与其他主机通信,分别向所述其他主机发送所述其他主机各自对应的配置信息,以便所述其他主机将相应的配置信息配置至与自身连接的FPGA加速卡;
其中,所述全部FPGA加速卡中的非第二目标FPGA加速卡的配置信息均包括预设地址映射关系、下一个参与计算的FPGA加速卡的网络地址信息、下一步计算的计算类型信息,并且,所述预设地址映射关系为中间结果数据在自身的内存存储物理地址范围以及下一个参与计算的FPGA加速卡的内存存储物理地址范围之间的映射关系;所述第二目标FPGA加速卡的配置信息包括所述第一目标FPGA加速卡的网络地址信息,最终结果数据在自身的内存存储物理地址范围以及在所述目标主机的内存存储物理地址。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111425760.3A CN114138481A (zh) | 2021-11-26 | 2021-11-26 | 一种数据处理方法、装置及介质 |
PCT/CN2022/102531 WO2023093043A1 (zh) | 2021-11-26 | 2022-06-29 | 一种数据处理方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111425760.3A CN114138481A (zh) | 2021-11-26 | 2021-11-26 | 一种数据处理方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138481A true CN114138481A (zh) | 2022-03-04 |
Family
ID=80388853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111425760.3A Pending CN114138481A (zh) | 2021-11-26 | 2021-11-26 | 一种数据处理方法、装置及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114138481A (zh) |
WO (1) | WO2023093043A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114513545A (zh) * | 2022-04-19 | 2022-05-17 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
CN115277393A (zh) * | 2022-07-26 | 2022-11-01 | 浪潮电子信息产业股份有限公司 | 一种传输配置信息的方法、装置及介质 |
WO2023093043A1 (zh) * | 2021-11-26 | 2023-06-01 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置及介质 |
CN116644010A (zh) * | 2023-06-09 | 2023-08-25 | 广东浪潮智慧计算技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN117971906A (zh) * | 2024-04-02 | 2024-05-03 | 山东浪潮科学研究院有限公司 | 一种多卡协同数据库查询方法、装置、设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117807118A (zh) * | 2023-12-05 | 2024-04-02 | 中科驭数(北京)科技有限公司 | 数据聚合处理方法、装置、设备及存储介质 |
CN118034614B (zh) * | 2024-04-11 | 2024-07-05 | 西安智多晶微电子有限公司 | 一种fpga片上非易失性存储器的读写方法及装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776144B2 (en) * | 2017-01-08 | 2020-09-15 | International Business Machines Corporation | Address space management with respect to a coherent accelerator processor interface architecture |
CN108776649A (zh) * | 2018-06-11 | 2018-11-09 | 山东超越数控电子股份有限公司 | 一种基于cpu+fpga异构计算系统及其加速方法 |
CN111090611B (zh) * | 2018-10-24 | 2024-08-27 | 上海雪湖信息科技有限公司 | 一种基于fpga的小型异构分布式计算系统 |
CN110069441A (zh) * | 2019-03-21 | 2019-07-30 | 中国科学院计算技术研究所 | 一种用于流计算的fpga网络及流计算系统与方法 |
CN109976912A (zh) * | 2019-03-27 | 2019-07-05 | 湖南理工学院 | 一种基于fpga的分布式计算的实现方法及系统 |
CN111324558B (zh) * | 2020-02-05 | 2021-08-10 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、分布式数据流编程框架及相关组件 |
CN111736966B (zh) * | 2020-05-11 | 2022-04-19 | 深圳先进技术研究院 | 基于多板fpga异构系统的任务部署方法及设备 |
CN111625368A (zh) * | 2020-05-22 | 2020-09-04 | 中国科学院空天信息创新研究院 | 一种分布式计算系统、方法及电子设备 |
CN112187966B (zh) * | 2020-09-17 | 2023-04-28 | 浪潮(北京)电子信息产业有限公司 | 一种加速卡及其mac地址生成方法、装置和存储介质 |
CN112087471A (zh) * | 2020-09-27 | 2020-12-15 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法及fpga云平台 |
CN114138481A (zh) * | 2021-11-26 | 2022-03-04 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置及介质 |
-
2021
- 2021-11-26 CN CN202111425760.3A patent/CN114138481A/zh active Pending
-
2022
- 2022-06-29 WO PCT/CN2022/102531 patent/WO2023093043A1/zh unknown
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023093043A1 (zh) * | 2021-11-26 | 2023-06-01 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置及介质 |
CN114513545A (zh) * | 2022-04-19 | 2022-05-17 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
CN114513545B (zh) * | 2022-04-19 | 2022-07-12 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
WO2023201987A1 (zh) * | 2022-04-19 | 2023-10-26 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
CN115277393A (zh) * | 2022-07-26 | 2022-11-01 | 浪潮电子信息产业股份有限公司 | 一种传输配置信息的方法、装置及介质 |
CN116644010A (zh) * | 2023-06-09 | 2023-08-25 | 广东浪潮智慧计算技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN117971906A (zh) * | 2024-04-02 | 2024-05-03 | 山东浪潮科学研究院有限公司 | 一种多卡协同数据库查询方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023093043A1 (zh) | 2023-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114138481A (zh) | 一种数据处理方法、装置及介质 | |
WO2022095348A1 (zh) | 一种计算资源的远程映射方法、装置、设备及存储介质 | |
KR102520983B1 (ko) | 이진화 알고리즘 기반의 액셀러레이션 제어 시스템, 칩 및 로봇 | |
CN114003392B (zh) | 一种数据加速计算方法及相关装置 | |
CA2987807C (en) | Computer device and method for reading/writing data by computer device | |
CN112100097B (zh) | 多测试通道优先级自适应仲裁方法和存储器访问控制器 | |
WO2018076882A1 (zh) | 存储设备的操作方法及物理服务器 | |
CN112100090A (zh) | 数据访问请求处理方法、装置、介质及内存映射控制器 | |
CN112947857B (zh) | 一种数据搬移方法、装置、设备及计算机可读存储介质 | |
WO2022032990A1 (zh) | 一种命令信息传输方法、系统、装置及可读存储介质 | |
CN115576654B (zh) | 一种请求处理方法、装置、设备及存储介质 | |
CN112433812A (zh) | 一种虚拟机跨集群迁移方法、系统、设备及计算机介质 | |
CN112087471A (zh) | 一种数据传输方法及fpga云平台 | |
US9898421B2 (en) | Memory access processing method, memory chip, and system based on memory chip interconnection | |
JP6373876B2 (ja) | データアクセスシステム、メモリ共有装置及びデータ読み取り方法 | |
US20240205170A1 (en) | Communication method based on user-mode protocol stack, and corresponding apparatus | |
CN114285676A (zh) | 智能网卡、智能网卡的网络存储方法和介质 | |
CN116594951B (zh) | 一种基于fpga的数据传输系统及方法 | |
CN117155802A (zh) | 一种乱序传输模拟方法、装置、系统及电子设备 | |
CN112612424B (zh) | 一种NVMe提交队列控制装置及方法 | |
US20240061581A1 (en) | Data I/O Processing Method and Apparatus, Storage Medium, and Device | |
CN113032307A (zh) | 一种集成器件访问请求处理方法及相关组件 | |
CN113961489A (zh) | 数据访问的方法、装置、设备及存储介质 | |
WO2017067382A1 (zh) | 磁盘状态检测方法、磁盘扩展器及磁盘控制系统 | |
CN116743587B (zh) | 一种基于异构计算加速卡的虚拟网络接口实现方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |