掌桥专利:专业的专利平台
掌桥专利
首页

一种联邦学习数据传输方法、计算机设备、系统及存储介质

文献发布时间:2023-06-19 10:06:57


一种联邦学习数据传输方法、计算机设备、系统及存储介质

技术领域

本发明涉及计算机技术领域,特别是涉及一种数据传输方法、计算机设备、系统及存储介质。

背景技术

联邦学习是一种分布式机器学习框架,需要不同参与方实现共同建模。不同参与方必须先对数据进行同态加密的数学运算,计算量非常复杂,同时涉及到计算实时性等要求,在实际应用中逐渐以中央处理器(CPU,Central Processing Unit)结合现场可编程门阵列(FPGA,Field-Programmable Gate Array)的方式从硬件上优化异构计算系统,以大幅提升系统整体的计算能力。

为了实现不同参与方异构系统之间数据传输高带宽、低延迟和低资源利用率的效果,现有技术方案是:计算机设备1的应用程序需要通过快速的外设部件互连标准接口(PCIe,Peripheral Component Interconnect-Express)先将FPGA卡的内存中的数据从FPGA卡的内存搬移到计算机设备1的系统内存(即CPU的内存),然后再利用远程直接数据存取(RDMA,Remote Direct Memory Access)技术从计算机设备1的系统内存传输到计算机设备2的系统内存,计算机设备2的应用程序还要做一次通过PCIe将数据从计算机设备2的系统内存搬移到FPGA卡的内存的动作,才能完成整个数据的传输过程。

上述数据传输一个流程下来,与FPGA卡的内存的通信速率降低,总体吞吐率会降低,延迟也会增加。

发明内容

基于此,本申请提供一种数据传输方法、计算机设备、系统及存储介质,能够减少数据复制次数,降低通信延迟,从而能够提高多机间的通信速率。

第一方面,本申请提供一种数据传输方法,所述方法适用于发送端,所述方法包括:

获取接收端的目标内存的目的地址,所述目标内存包括第二CPU的内存或第二FPGA卡的内存;

将发送端的源内存中的数据从所述源内存直接通过发送端的第一RDMA卡发送至接收端的第二RDMA卡,所述源内存中的数据携带有所述目标内存的目的地址,以使所述第二RDMA卡根据所述目标内存的目的地址将所述源内存中的数据直接发送至所述目标内存,当源内存包括第一FPGA卡的内存时,所述目标内存包括第二FPGA卡的内存或第二CPU的内存,当源内存包括第一CPU的内存时,所述目标内存包括第二FPGA卡的内存。

第二方面,本申请提供一种数据传输方法,所述方法适用于接收端,所述方法包括:

使接收端的第二RDMA卡从发送端的第一RDMA卡接收发送端的源内存中的数据和携带的目标内存的目的地址,当源内存包括第一FPGA卡的内存时,所述目标内存包括第二FPGA卡的内存或第二CPU的内存,当源内存包括第一CPU的内存时,所述目标内存包括第二FPGA卡的内存;

使所述第二RDMA卡根据所述目标内存的目的地址将所述源内存中的数据直接发送至所述目标内存。

第三方面,本申请提供一种数据传输方法,所述方法包括:

获取接收端的目标内存的目的地址,所述目标内存包括第二CPU的内存或第二FPGA卡的内存;

将发送端的源内存中的数据从所述源内存直接通过发送端的第一RDMA卡发送至接收端的第二RDMA卡,所述源内存中的数据携带有所述目标内存的目的地址,当源内存包括第一FPGA卡的内存时,所述目标内存包括第二FPGA卡的内存或第二CPU的内存,当源内存包括第一CPU的内存时,所述目标内存包括第二FPGA卡的内存;

使接收端的第二RDMA卡从发送端的第一RDMA卡接收发送端的源内存中的数据和携带的目标内存的目的地址;

使所述第二RDMA卡根据所述目标内存的目的地址将所述源内存中的数据直接发送至所述目标内存。

第四方面,本申请提供一种计算机设备,所述计算机设备包括:存储器和总处理器;所述存储器用于存储计算机程序;所述总处理器用于执行所述计算机程序并在执行所述计算机程序时,实现如上第一方面所述的数据传输方法。

第五方面,本申请提供一种计算机设备,所述计算机设备包括:存储器和总处理器,所述存储器用于存储计算机程序;所述总处理器用于执行所述计算机程序并在执行所述计算机程序时,实现如上第二方面所述的数据传输方法。

第六方面,本申请提供一种计算机系统,所述计算机系统包括如上第四方面所述的计算机设备和如上第五方面所述的计算机设备。

第七方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上第一方面所述的数据传输方法。

第八方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上第二方面所述的数据传输方法。

本申请实施例提供了一种数据传输方法、计算机设备、系统及存储介质,发送端的方法包括:获取接收端的目标内存的目的地址;将发送端的源内存中的数据从所述源内存直接通过第一RDMA卡发送至第二RDMA卡,所述发送端的源内存中的数据携带有所述目标内存的目的地址;接收端的方法包括:使第二RDMA卡接收发送端的源内存中的数据和携带的目标内存的目的地址;使所述第二RDMA卡根据所述目标内存的目的地址将所述源内存中的数据直接发送至所述目标内存;当源内存包括第一FPGA卡的内存时,所述目标内存包括第二FPGA卡的内存或第二CPU的内存,当源内存包括第一CPU的内存时,所述目标内存包括第二FPGA卡的内存。由于源内存和目标内存至少有一个是FPGA卡的内存,发送端的源内存中的数据从源内存直接通过第一RDMA卡发送至第二RDMA卡,第二RDMA卡接收到后根据目标内存的目的地址将源内存中的数据直接发送至目标内存,即发送端和接收端之间与FPGA卡的内存的数据传输并没有经过系统内存(即CPU的内存)的中转,因此能够减少数据复制次数,降低通信延迟,从而能够提高多机间的通信速率,不会降低总体吞吐率;发送端和接收端各自贡献了一半的技术,各自为“能够减少数据复制次数,降低通信延迟,从而能够提高多机间的通信速率,不会降低总体吞吐率”提供一半的技术支持。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

图1是本申请数据传输方法一实施例的流程示意图;

图2是本申请数据传输方法另一实施例的流程示意图;

图3是本申请数据传输方法又一实施例的流程示意图;

图4是本申请数据传输方法中发送端和接收端的组成一实施例的示意图;

图5是图4的组成中数据传输方向一实施例的示意图;

图6是图4的组成中数据传输方向另一实施例的示意图;

图7是图4的组成中数据传输方向又一实施例的示意图;

图8是本申请数据传输方法又一实施例的流程示意图;

图9是本申请计算机设备一实施例的结构示意图;

图10是本申请计算机设备另一实施例的结构示意图。

主要元件及符号说明:

100、发送端或发送端计算机设备;

10、第一CPU;11、第一FPGA卡;12、第一RDMA卡;13、第一CPU的内存;14、第一FPGA卡的内存;

200、接收端或接收端计算机设备;

20、第二CPU;21、第二FPGA卡;22、第二RDMA卡;23、第二CPU的内存;24、第二FPGA卡的内存;

30、PCI总线或者PCIe总线;

1、存储器;2、总处理器。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。

为了实现不同参与方之间数据传输高带宽、低延迟和低资源利用率的效果,现有技术方案是:计算机设备1的应用程序需要通过PCIe先将FPGA卡的内存中的数据从FPGA卡的内存搬移到计算机设备1的CPU的内存,然后再利用RDMA技术从计算机设备1的CPU的内存传输到计算机设备2的CPU的内存,计算机设备2的应用程序还要做一次通过PCIe将数据从计算机设备2的CPU的内存搬移到FPGA卡的内存的动作,才能完成整个数据的传输过程。上述数据传输一个流程下来,与FPGA卡的内存的通信速率降低,总体吞吐率会降低,延迟也会增加。

本申请实施例提供了一种数据传输方法、计算机设备、系统及存储介质,发送端:获取接收端的目标内存的目的地址;将发送端的源内存中的数据从所述源内存直接通过第一RDMA卡发送至第二RDMA卡,所述源内存中的数据携带有所述目标内存的目的地址;接收端:使第二RDMA卡接收发送端的源内存中的数据和携带的目标内存的目的地址;使所述第二RDMA卡根据所述目标内存的目的地址将所述源内存中的数据直接发送至所述目标内存;当源内存包括第一FPGA卡的内存时,所述目标内存包括第二FPGA卡的内存或第二CPU的内存,当源内存包括第一CPU的内存时,所述目标内存包括第二FPGA卡的内存。由于源内存和目标内存至少有一个是FPGA卡的内存,发送端的源内存中的数据从源内存直接通过第一RDMA卡发送至第二RDMA卡,第二RDMA卡接收到后根据目标内存的目的地址将源内存中的数据直接发送至目标内存,即在发送端和接收端之间与FPGA卡的内存的数据传输并没有经过CPU的内存的中转,因此能够减少数据复制次数,降低通信延迟,从而能够提高多机间的通信速率,不会降低总体吞吐率;发送端和接收端各自贡献了一半的技术,各自为“能够减少数据复制次数,降低通信延迟,从而能够提高多机间的通信速率,总体吞吐率不会降低”提供一半的技术支持。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

本申请实施例的数据传输方法包括应用在发送端的数据传输方法(简称发送端方法)和应用在接收端的数据传输方法(简称接收端方法)。为了描述的方便,也为了便于更好理解本申请实施例的数据传输方法,下面将发送端方法和接收端方法结合起来一起进行详细说明。

需要说明的是,虽然将发送端方法和接收端方法结合起来一起说明,但是发送端方法和接收端方法是彼此独立的,发送端方法和接收端方法各自为“能够减少数据复制次数,降低通信延迟,从而能够提高多机间的通信速率,总体吞吐率不会降低”提供一半的技术支持;当发送端方法和接收端方法结合在一起时,能够减少数据复制次数,降低通信延迟,从而能够提高多机间的通信速率,不会降低总体吞吐率。

参见图1至图3,图1是本申请数据传输方法一实施例的流程示意图,图2是本申请数据传输方法另一实施例的流程示意图,图3是本申请数据传输方法又一实施例的流程示意图。需要说明的是,图1的方法是发送端方法,图2的方法是接收端方法,图3的方法是发送端方法和接收端方法结合在一起的方法。

参见图4,在一实施例中,发送端100包括第一CPU10、第一FPGA卡11以及第一RDMA卡12,发送端100还包括:第一CPU的内存13和第一FPGA卡的内存14;接收端200包括第二CPU20、第二FPGA卡21以及第二RDMA卡22,接收端200还包括第二CPU的内存23和第二FPGA卡的内存24。其中,第一CPU10、第一FPGA卡11以及第一RDMA卡12可以通过PCI总线或者PCIe总线30连接,第一CPU10与第一CPU的内存13连接,第一FPGA卡11与第一FPGA卡的内存14连接;第二CPU20、第二FPGA卡21以及第二RDMA卡22可以通过PCI总线或者PCIe总线30连接,第二CPU20与第二CPU的内存23连接,第二FPGA卡21与第二FPGA卡的内存24连接。

FPGA(Field Programmable Gate Array),现场可编程逻辑门阵列,是在PAL、GAL等可编程器件的基础上进一步发展的产物;它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA的基本结构包括可编程输入输出单元、可配置逻辑块、数字时钟管理模块、嵌入式块RAM、布线资源、内嵌专用硬核、底层内嵌功能单元。由于FPGA具有布线资源丰富、可重复编程和集成度高、投资较低的特点,在数字电路设计领域得到了广泛的应用。本实施例中,FPGA卡可以是指FPGA加速卡,FPGA加速卡的一个重要应用场合是减轻CPU的负担,把一些原来要在CPU上运行的工作量转移到FPGA的加速卡上,可用于从边缘/智能设备到云的产品中,并在大数据处理、AI、网络功能加速等领域扮演重要的角色。

RDMA(Remote Direct Memory Access),意思是远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能;它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。在实现上,RDMA实际上是一种智能网卡与软件架构充分优化的远端内存直接高速访问技术,通过将RDMA协议固化于硬件(即网卡)上形成RDMA卡,以及支持零拷贝(Zero-copy)和内核旁路(Kernel bypass)这两种途径来达到其高性能的远程直接数据存取的目标。

使用RDMA的优势如下:(1)零拷贝(Zero-copy):应用程序能够直接执行数据传输,在不涉及到网络软件栈的情况下,数据能够被直接发送到缓冲区或者能够直接从缓冲区里接收,而不需要被复制到网络层。(2)内核旁路(Kernel bypass):应用程序可以直接在用户态执行数据传输,不需要在内核态与用户态之间做上下文切换。(3)不需要CPU干预(No CPUinvolvement):应用程序可以访问远程主机内存而不消耗远程主机中的任何CPU;远程主机内存能够被读取而不需要远程主机上的进程(或CPU)参与;远程主机的CPU的缓存(cache)不会被访问的内存内容所填充。(4)消息基于事务(Message based transactions):数据被处理为离散消息而不是流,消除了应用程序将流切割为不同消息/事务的需求。(5)支持分散/聚合条目(Scatter/gather entries support):RDMA原生态支持分散/聚合;也就是说,读取多个内存缓冲区然后作为一个流发出去或者接收一个流然后写入到多个内存缓冲区里去。

本实施例中,发送端方法包括:步骤S101和步骤S102;接收端方法包括:步骤S201和步骤S202。本实施例中,发送端方法和接收端方法结合在一起的方法中,目标内存和源内存中,至少有一个是FPGA卡的内存。

发送端方法:

步骤S101:获取接收端的目标内存的目的地址,所述目标内存包括第二CPU的内存或第二FPGA卡的内存。

步骤S102:将发送端的源内存中的数据从所述源内存直接通过发送端的第一RDMA卡发送至接收端的第二RDMA卡,所述源内存中的数据携带有所述目标内存的目的地址,以使所述第二RDMA卡根据所述目标内存的目的地址将所述源内存中的数据直接发送至所述目标内存,当源内存包括第一FPGA卡的内存时,所述目标内存包括第二FPGA卡的内存或第二CPU的内存,当源内存包括第一CPU的内存时,所述目标内存包括第二FPGA卡的内存。

接收端方法:

步骤S201:使接收端的第二RDMA卡从发送端的第一RDMA卡接收发送端的源内存中的数据和携带的目标内存的目的地址。

步骤S202:使所述第二RDMA卡根据所述目标内存的目的地址将所述源内存中的数据直接发送至所述目标内存。

本实施例中,源内存可以是指发送端要发送的数据所在的内存,目标内存可以是指接收端要接收发送端的数据的目的内存。发送端方法和接收端方法结合在一起的方法中,目标内存和源内存中,至少有一个是FPGA卡的内存,即在发送端和接收端之间是与FPGA卡的内存之间的通信,可以是一端的CPU的内存与另一端的FPGA卡的内存之间的数据传输,也可以是一端的FPGA卡的内存与另一端的FPGA卡的内存之间的数据传输。将一端的数据传输到另一端,需要获取数据发往的目的内存的地址,目标内存包括第二CPU的内存或第二FPGA卡的内存,当源内存包括第一FPGA卡的内存时,所述目标内存包括第二FPGA卡的内存或第二CPU的内存,当源内存包括第一CPU的内存时,所述目标内存包括第二FPGA卡的内存。

根据所述目标内存的目的地址,将发送端的源内存中的数据从所述源内存直接通过第一RDMA卡发送至第二RDMA卡,第二RDMA卡接收到发送端的源内存中的数据和目标内存的目的地址后,所述第二RDMA卡根据所述目标内存的目的地址将所述源内存中的数据直接发送至所述目标内存。

上述过程中,(1)当源内存包括第一FPGA卡的内存14,所述目标内存包括第二FPGA卡的内存24时,发送端没有经过第一CPU的内存13的中转,接收端没有经过第二CPU的内存23的中转,数据传输方向如图5的箭头所示;(2)当源内存包括第一FPGA卡的内存14,所述目标内存包括第二CPU的内存23时,发送端没有经过第一CPU的内存13的中转,数据传输方向如图6的箭头所示;(3)当源内存包括第一CPU的内存13,所述目标内存包括第二FPGA卡的内存24时,接收端没有经过第二CPU的内存23的中转,数据传输方向如图7的箭头所示。即上述过程中没有经过CPU的内存的中转,因此能够减少数据复制次数,降低通信延迟,从而能够提高多机间的通信速率,不会降低总体吞吐率;发送端和接收端各自贡献了一半的技术,各自为“能够减少数据复制次数,降低通信延迟,从而能够提高多机间的通信速率,总体吞吐率不会降低”提供一半的技术支持。

在一实施例中,较为常用的应用场景是FPGA卡的内存之间的通信,即所述目标内存包括第二FPGA卡的内存,所述源内存包括第一FPGA卡的内存。其中,所述第一FPGA卡的数量可以为两个以上,所述第二FPGA卡的数量可以为两个以上。本实施例支持任意一台计算机设备包括多张FPGA卡和RDMA卡,一台计算机设备中任一FPGA卡的内存(Memory)中的数据直接搬移至另一台计算机设备下的任一FPGA卡的Memory中,避免频繁访问计算机系统内存(即CPU的内存)引起不必要的系统内存拷贝和CPU开销,从而加速与网络和存储设备之间的通信速率。

在一应用场景中,所述发送端和所述接收端分别包括多源异构系统中的发送端计算机设备和接收端计算机设备。进一步,所述发送端和所述接收端分别包括用于联邦学习的多源异构系统中的发送端计算机设备和接收端计算机设备。

本实施例的数据传输方案具有极强的可扩展性,完全可以扩展到多机多卡组成的多源异构系统(例如多源异构计算系统)中进行与FPGA卡的内存之间直接的数据搬移,能够大大降低系统延时,并大幅提升数据传输带宽;提高了多机间数据传输能力,满足高速数据传输对可靠性的要求,有效发挥RDMA高吞吐率、低延时的特性,并且避免频繁访问计算机系统内存引起不必要的计算机内存拷贝和CPU开销,加速与网络和存储设备之间的通信速率,从整体上提高多源异构系统性能。为现有联邦学习系统设计了一套低延迟、高传输带宽的数据传输机制。

下面主要详细说明发送端方法的详细内容。

直接内存访问(DMA,Direct Memory Access)方式,是一种完全由硬件执行I/O交换的工作方式。在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和IO设备之间进行。该方式需要专门的硬件电路来实现,需要额外硬件成本。

在一实施方式中,可以主要通过软件的方式使CPU部分参与本实施例的数据传输过程,可以不需要额外的硬件成本。即步骤S101中,所述获取接收端的目标内存的目的地址,可以包括:使所述第一RDMA卡从所述第一CPU获取接收端的目标内存的目的地址。本实施例中,第一CPU为第一RDMA卡提供接收端的目标内存的目的地址,通过这种方式,能够在保证第一CPU正常运行的情况下避免过多占用第一CPU资源。

在此基础上,第一CPU还为第一RDMA卡提供发送端的源内存的源地址,那么第一RDMA卡可以直接从源内存获取要传输的数据。即,所述方法还包括:使所述第一RDMA卡从所述第一CPU获取发送端的源内存的源地址。步骤S102中,将发送端的源内存中的数据从所述源内存直接通过第一RDMA卡发送至第二RDMA卡,所述源内存中的数据携带有所述目标内存的目的地址,还可以包括:子步骤S1021和子步骤S1022,如图8所示。

子步骤S1021:使所述第一RDMA卡根据所述源内存的源地址,从所述源内存直接获取所述源内存中的数据。

子步骤S1022:使所述第一RDMA卡将所述源内存中的数据和所述目标内存的目的地址直接发送至第二RDMA卡,以使所述第二RDMA卡根据所述目标内存的目的地址将所述源内存中的数据直接发送至所述目标内存。

本实施例中,第一CPU参与的过程仅仅只是提供接收端的目标内存的目的地址和发送端的源内存的源地址,通过这种方式,能够在保证第一CPU正常运行的情况下尽量避免过多占用第一CPU资源,并保证数据传输效率。

在一实施例中,步骤S101,所述使所述第一RDMA卡从所述第一CPU获取接收端的目标内存的目的地址,还可以包括:当第一CPU需要发送所述源内存中的数据时,使所述第一CPU将所述接收端的目标内存的目的地址发送给所述第一RDMA卡。

在一实施例中,由于PCIe接口传输速率较快,所述第一FPGA卡和所述第一RDMA卡通过PCIe接口挂载在所述第一CPU下,能够方便所述第一CPU分别与所述第一FPGA卡和所述第一RDMA卡快速通信,此时,所述使所述第一CPU将所述接收端的目标内存的目的地址发送给所述第一RDMA卡之前,还可以包括:使所述第一CPU从所述第一FPGA卡的PCIe配置空间获取接收端的目标内存的目的地址。

进一步,所述使所述第一CPU从所述第一FPGA卡的PCIe配置空间获取接收端的目标内存的目的地址,还可以包括:使所述第一CPU从所述第一FPGA卡的PCIe寄存器中的基地址寄存器(BAR,Base Address Register)获取接收端的目标内存的目的地址。

如果配置空间预先没有存放接收端的目标内存的目的地址,所述使所述第一CPU从所述第一FPGA卡的PCIe配置空间获取接收端的目标内存的目的地址之前,还可以包括:使所述第一CPU将所述接收端的目标内存的目的地址映射至所述第一FPGA卡的PCIe配置空间。进一步,使所述第一CPU将所述接收端的目标内存的目的地址映射至所述第一FPGA卡的PCIe寄存器中的基地址寄存器。

由于第一FPGA卡主要是为了分担第一CPU的负担,第一FPGA卡需要先帮第一CPU分担计算任务后再进行数据传输,即步骤S101,所述获取接收端的目标内存的目的地址之前,还可以包括:使所述第一CPU发送算法运算所需的配置信息和源数据至所述第一FPGA的内存以使所述第一FPGA卡根据所述配置信息和源数据完成对应算法的运算,并将运算后的结果数据存入所述第一FPGA卡的内存,所述源内存中的数据包括存入所述第一FPGA卡的内存的结果数据。

此时,所述当第一CPU需要发送所述源内存中的数据时,使所述第一CPU将所述接收端的目标内存的目的地址发送给所述第一RDMA卡,可以包括:使所述第一CPU在确定所述第一FPGA卡完成对应算法的运算后,使所述第一CPU将所述接收端的目标内存的目的地址发送给所述第一RDMA卡。其中,第一CPU可以通过中断(即第一FPGA卡主动向第一CPU回报)或轮询(即第一CPU主动检测)方式确定所述第一FPGA卡是否完成对应算法的运算。

如果预先还没有确定所述源内存中的数据将要发往接收端的哪个内存,那么步骤S101,所述获取接收端的目标内存的目的地址之前,还可以包括:使所述第一CPU确定所述源内存中的数据将要发往的所述接收端的目标内存。

在接收端,如果所述目标内存包括第二FPGA卡的内存,则使所述第二FPGA卡基于接收到的数据完成对应算法的运算,并将计算后的结果数据存入第二FPGA卡的内存。

下面以联邦学习的多源异构系统为例,详细说明本申请数据传输方法的具体应用过程:

在由CPU和FPGA卡构成的联邦学习的多源异构系统中,FPGA卡通常扮演着高速运算器的作用,承担着高速复杂运算的实现,以减轻CPU的工作压力。

发送端第一CPU负责整个传输过程的系统调度,而第一FPGA卡和第一FPGA卡的内存分别主要负责相关算法实现及数据存储。本框架发送端和接收端之间采用本实施例数据传输方式进行数据传输,可以大幅度降低通讯延迟,提高数据传输速率。应用程序不需要参与数据传输过程,只需要指定接收端的第二FPGA卡的内存(Memory)的读写地址,开启传输并等待传输完成即可。通过这种方式,能够为多源异构系统间的通信开辟一条直接传送数据的通路,交互效率大为提升。

(1)第一CPU需要先确定数据是从第一FPGA卡的Memory发送至第二CPU的Memory还是第二FPGA卡的Memory。若是第二CPU的Memory,则第一CPU将第二CPU的Memory读写地址映射至第一FPGA卡的PCIe BAR空间;若是第二FPGA卡的Memory,则第一CPU将第二FPGA卡的Memory读写地址映射至第一FPGA卡的PCIe BAR空间。

(2)第一CPU发送配置信息及源数据至第一FPGA卡的Memory,直到第一FPGA卡完成其对应算法的运算,并将运算结果存入第一FPGA卡的Memory,第一CPU以中断或轮询方式检测其运算完成。

(3)第一CPU读取第一FPGA卡的PCIe BAR空间地址信息,将读取的目的地址信息(目标内存的目的地址)发送给第一RDMA卡,并将第一FPGA卡的Memory的地址信息(源内存的源地址)也发送给第一RDMA卡;若PCIe BAR空间地址信息是第二CPU的Memory的地址,则第一RDMA卡直接从第一FPGA卡的Memory中获取运算后的结果数据,将结果数据和携带的第二CPU的Memory的地址,发送至第二RDMA卡,第二RDMA卡根据携带的第二CPU的Memory的地址将结果数据直接发送至第二CPU的Memory中;若PCIe BAR空间地址信息是第二FPGA卡的Memory的地址,则第一RDMA卡直接从第一FPGA卡的Memory中获取运算后的结果数据,将结果数据和携带的第二FPGA卡的Memory的地址,发送至第二RDMA卡,第二RDMA卡根据携带的第二FPGA卡的Memory的地址将结果数据直接发送至第二FPGA卡的Memory中。

(4)若目标内存的目的地址是接收端的第二FPGA卡的Memory地址,则接收端的第二FPGA卡的Memory接收数据后,第二FPGA卡基于接收到的数据,完成其对应算法的运算,并将运算后结果数据存入第二FPGA卡的Memory。

(5)若目标内存的目的地址是接收端的第二CPU的Memory的地址,则接收端的第二CPU的Memory接收数据后,第二CPU按照正常流程执行。

为使本申请的目的、内容和优点更加清晰,下面结合联邦学习的Paillier加密算法和中国剩余定理解密算法为例,并以发送端的第一FPGA卡的Memory中的数据发送到接收端的第二FPGA卡的Memory为例,对本申请的具体实施方式作进一步详细描述。

(1)第一CPU将第二FPGA卡的Memory读写地址映射至第一FPGA卡的PCIe BAR空间。

(2)第一CPU将Paillier加密(C=(1+m*n)*(r^n)modN,其中N=n^2)相关的配置信息n_length及batch_size和源数据m/r/n/N等按一定顺序写入第一FPGA卡的Memory中,直到第一FPGA卡完成Paillier加密运算,并将运算后的结果数据存入第一FPGA卡的Memory中。

(3)第一CPU读取第一FPGA卡的PCIe BAR空间地址信息,将PCIe BAR空间地址信息和第一FPGA卡的Memory的地址信息告知第一RDMA卡,第一RDMA卡将第一FPGA卡的Memory中的结果数据经第二RDMA卡发送至第一FPGA卡的PCIe BAR指定的第二FPGA卡的Memory中。

(4)结果数据接收完成后,第二FPGA卡开始基于结果数据、中国剩余定理的解密算法运算,运算完成后将结果存入第二FPGA卡的Memory中。

参见图9,图9是本申请计算机设备一实施例的结构示意图,本实施例的计算机设备是发送端的计算机设备。需要说明的是,该发送端的计算机设备能够执行上述发送端方法中的步骤,相关内容的详细说明,请参见上述发送端方法的相关内容,在此不再赘叙。

该发送端的计算机设备100可以包括:第一CPU10、第一FPGA卡11以及第一RDMA卡12(图9所示),或者可以包括第一CPU和第一RDMA卡(对应的接收端的计算机设备可以包括第二FPGA卡和第二RDMA卡),或者可以包括第一FPGA卡和第一RDMA卡。

所述计算机设备100还包括:存储器1和总处理器2;其中,总处理器2可以是微控制单元、中央处理单元或数字信号处理器,等等;存储器1可以是Flash芯片、只读存储器、磁盘、光盘、U盘或者移动硬盘等等。所述存储器1用于存储计算机程序;所述总处理器2用于执行所述计算机程序并在执行所述计算机程序时,实现如上发送端任一项所述的数据传输方法。

在一实施例中,发送端的计算机设备100的总处理器2可以和第一CPU10合并为一个处理器。

参见图10,图10是本申请计算机设备另一实施例的结构示意图,本实施例的计算机设备是接收端的计算机设备。需要说明的是,该接收端的计算机设备能够执行上述接收端方法中的步骤,相关内容的详细说明,请参见上述接收端方法的相关内容,在此不再赘叙。

该接收端的计算机设备200可以包括:第二CPU20、第二FPGA卡21以及第二RDMA卡22(图10所示),或者可以包括第二CPU和第二RDMA卡(对应的发送端的计算机设备可以包括第一FPGA卡和第一RDMA卡),或者可以包括第二FPGA卡和第二RDMA卡。

所述计算机设备200还包括:存储器1和总处理器2;其中,总处理器2可以是微控制单元、中央处理单元或数字信号处理器,等等;存储器1可以是Flash芯片、只读存储器、磁盘、光盘、U盘或者移动硬盘等等。所述存储器1用于存储计算机程序;所述总处理器2用于执行所述计算机程序并在执行所述计算机程序时,实现如上接收端任一项所述的数据传输方法。

在一实施例中,接收端的计算机设备200的总处理器2可以和第二CPU20合并为一个处理器。

本申请还提供一种计算机系统,所述计算机系统包括如上任一发送端的计算机设备和如上任一接收端的计算机设备。相关内容的详细说明请参见上述相关内容部分,在此不再赘叙。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上发送端任一项所述的数据传输方法。

其中,该计算机可读存储介质可以是上述发送端的计算机设备的内部存储单元,例如硬盘或内存。该计算机可读存储介质也可以是外部存储设备,例如配备的插接式硬盘、智能存储卡、安全数字卡、闪存卡,等等。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上接收端任一项所述的数据传输方法。

其中,该计算机可读存储介质可以是上述接收端的计算机设备的内部存储单元,例如硬盘或内存。该计算机可读存储介质也可以是外部存储设备,例如配备的插接式硬盘、智能存储卡、安全数字卡、闪存卡,等等。

应当理解,在本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

应当理解,在本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

以上所述,仅为本申请的具体实施例,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种联邦学习数据传输方法、计算机设备、系统及存储介质
  • 一种电能计量的数据传输方法、系统、设备及计算机存储介质
技术分类

06120112422908