一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理系统及方法与流程

2022-04-24 19:33:18 来源:中国专利 TAG:


1.本发明涉及数据处理领域,尤其涉及一种数据处理系统及方法。


背景技术:

2.随着计算机技术的不断发展和数据处理技术的不断提升,对各种数据的处理需求也不断增加。为了提升处理效率,可以通过分布式系统来实现海量数据的分析处理。
3.在分布式系统中,数据存储在不同的节点中。例如,当需要对用户的消费行为进行分析时,消费数据可以存储在不同的消费数据服务器上。不同服务器上的数据可能需要进行求和、异或等计算。目前,分布式系统存在数据处理效率较低的问题。


技术实现要素:

4.本发明的主要目的在于提供一种数据处理系统及方法,旨在解决在分布式环境中数据计算效率较低的技术问题。
5.为实现上述目的,本发明实施例提供一种数据处理系统,所述系统包括:环状连接的多个fpga;
6.每一fpga设置有接收光口和发送光口;
7.每一fpga的接收光口通过光纤与上一fpga的发送光口连接,发送光口通过光纤与下一fpga的接收光口连接;
8.每一fpga用于执行下述至少一项:通过接收光口接收上一fpga发送的数据;根据接收到的数据与自身具有的数据进行计算,得到计算结果;通过发送光口向下一fpga发送数据,其中,发送的数据为计算结果或自身具有的数据。
9.可选的,所述系统用于实现全规约计算;所述全规约计算用于根据各个fpga具有的数据进行计算并使各个fpga得到相同的最终计算结果;所述全规约计算包括计算阶段和同步阶段;
10.在计算阶段,多个fpga依次传递数据并进行计算,以得到最终计算结果;
11.在同步阶段,得到最终计算结果的fpga将所述最终计算结果传递给其它fpga。
12.可选的,所述fpga的数量为n个;
13.在计算阶段,第1个fpga具体用于:将自身具有的数据发送给第2个fpga;
14.第2个至第n-1个fpga中的每个fpga具体用于:根据从上一fpga获取到的数据与自身具有的数据进行计算,得到计算结果,并将计算结果发送给下一fpga;
15.第n个fpga具体用于:根据从上一fpga获取到的数据与自身具有的数据进行计算,得到最终计算结果;
16.其中,所述n为大于等于3的整数。
17.可选的,所述fpga的数量为n个;每个fpga具有k列数据,在全规约计算完成后,得到k列最终计算结果;
18.在计算阶段,至少部分fpga具体用于:同时将自身具有的数据发送给下一fpga,其
中,不同fpga发送不同列的数据;若从上一fpga获取到数据,则根据获取到的数据与自身具有的相应列的数据进行计算,若得到计算结果非最终计算结果,则将所述计算结果发送给下一fpga;
19.若所述多个fpga中存在除所述至少部分fpga以外的其它fpga,则所述其它fpga中的每个fpga具体用于:若从上一fpga获取到数据,则根据获取到的数据与自身具有的相应列的数据进行计算,若得到计算结果非最终计算结果,则将所述计算结果发送给下一fpga;
20.其中,所述n为大于等于3的整数,所述k为大于等于2的整数。
21.可选的,在k小于等于n时,所述至少部分fpga的数量为k;
22.在k大于n时,所述k列被划分为m组,每一组的列数小于等于n,以通过执行m次计算阶段得到k列最终计算结果,每次计算阶段用于计算一组数据;
23.其中,在计算第m组的数据时,所述至少部分fpga的数量为第m组对应的列数;所述m为大于等于1的整数。
24.可选的,若每一fpga发送的数据为进行全规约计算的最小单元,则接收所述数据的fpga用于在所述数据接收完毕后,根据所述数据进行计算;若所述数据并非进行全规约计算的最小单元,则接收所述数据的fpga用于在所述数据的接收过程中,根据已接收到的最小单元的数据进行计算。
25.可选的,所述系统还包括:控制设备;所述多个fpga分别与所述控制设备连接;所述控制设备用于:
26.向每个fpga发送基础运算指令,以使每个fpga根据所述基础运算指令进行基础运算,得到用于进行全规约计算的数据;
27.获取每个fpga发送的用于指示基础运算是否完成的状态信息;
28.根据每个fpga发送的状态信息,从所述多个fpga中选择发起全规约计算的fpga;
29.向所述发起全规约计算的fpga发送全规约启动指令,以使所述fpga根据所述全规约启动指令向下一fpga发送用于进行全规约计算的数据;
30.向其它fpga发送等待指令,以使所述其它fpga等待获取用于进行全规约计算的数据,并在获取到后进行计算。可选的,所述控制设备在从所述多个fpga中选择发起全规约计算的fpga时,具体用于:确定发起全规约计算的fpga的数量;根据每个fpga发送的状态信息,选择最后完成基础运算的相应数量的fpga为所述发起全规约计算的fpga;
31.其中,所述相应数量为所述发起全规约计算的fpga的数量。
32.可选的,所述fpga具有的数据存储在内存中,所述fpga通过直接存储器访问技术从所述内存读取数据和/或向所述内存写入数据。
33.本发明还提供一种数据处理方法,所述方法包括:
34.至少部分fpga中的每一个fpga通过光纤向下一个fpga发送自身具有的数据;其中,所述至少部分fpga为环状连接的多个fpga中的至少部分fpga;
35.重复执行下述步骤,直至获取到最终计算结果:每一个获取到数据的fpga将获取到的数据与自身具有的数据进行计算,若计算结果并非最终计算结果,则将所述计算结果通过光纤发送给下一个fpga。
36.可选的,所述方法用于实现全规约计算;所述全规约计算用于根据各个fpga具有的数据进行计算并使各个fpga得到相同的最终计算结果;相应的,所述方法还包括:
37.得到最终计算结果的fpga将所述最终计算结果传递给其它fpga。
38.可选的,所述fpga的数量为n个;至少部分fpga中的每一个fpga通过光纤向下一个fpga发送自身具有的数据,包括:
39.第1个fpga将自身具有的数据发送给下一个fpga;
40.相应的,所述重复执行下述步骤,直至获取到最终计算结果:每一个获取到数据的fpga将获取到的数据与自身具有的数据进行计算,若计算结果并非最终计算结果,则将所述计算结果通过光纤发送给下一个fpga,包括:
41.第2个至第n-1个fpga中的每个fpga根据从上一fpga获取到的数据与自身具有的数据进行计算,得到计算结果,并将计算结果发送给下一fpga;
42.第n个fpga根据从上一fpga获取到的数据与自身具有的数据进行计算,得到最终计算结果;
43.其中,所述n为大于等于3的整数。
44.可选的,所述fpga的数量为n个;每个fpga具有k列数据,在全规约计算完成后,得到k列最终计算结果;
45.至少部分fpga中的每一个fpga通过光纤向下一个fpga发送自身具有的数据,包括:
46.所述至少部分fpga同时将自身具有的数据发送给下一fpga,其中,不同fpga发送不同列的数据;
47.相应的,所述重复执行下述步骤,直至获取到最终计算结果:每一个获取到数据的fpga将获取到的数据与自身具有的数据进行计算,若计算结果并非最终计算结果,则将所述计算结果通过光纤发送给下一个fpga,包括:
48.对于n个fpga中的每一fpga,若从上一fpga获取到数据,则根据获取到的数据与自身具有的相应列的数据进行计算,若得到计算结果非最终计算结果,则将所述计算结果发送给下一fpga;
49.其中,所述n为大于等于3的整数,所述k为大于等于2的整数。
50.本发明中,数据处理系统包括环状连接的多个fpga,每一fpga设置有接收光口和发送光口,每一fpga的接收光口通过光纤与上一fpga的发送光口连接,以接收所述上一fpga发送的数据,发送光口通过光纤与下一fpga的接收光口连接,以向所述下一fpga发送数据,每一fpga用于执行下述至少一项:接收上一fpga发送的数据;根据接收到的数据与自身具有的数据进行计算,得到计算结果;向下一fpga发送数据,其中,发送的数据为计算结果或自身具有的数据,从而可以通过fpga加光纤的方式快速实现数据的传输,并且在由环状连接的多个fpga构建的分布式系统中,多个fpga均可以参与计算过程,与现有技术在不同节点上的数据需要进行求和、异或等计算时,需要各个节点将自身具有的数据统一发送给主节点,由主节点完成所有数据的计算相比,本发明无需将数据统一发送给主节点并依赖于主节点进行计算,有效提高了计算效率。
附图说明
51.图1为本发明实施例提供的一种应用场景示意图;
52.图2为本发明实施例提供的一种全规约计算的原理示意图;
53.图3为本发明一实施例提供的数据处理系统的结构示意图;
54.图4为本发明实施例提供的第一种计算阶段的原理示意图;
55.图5为本发明实施例提供的第二种计算阶段的原理示意图;
56.图6为本发明实施例提供的一种通过dma技术进行数据处理的流程示意图;
57.图7为本发明实施例提供的一种数据处理方法的流程示意图。
58.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
59.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
60.本发明实施例提供的方法,可以应用于任意需要进行数据分析计算的领域和场景,例如可以应用于对业务数据进行分析处理。
61.图1为本发明实施例提供的一种应用场景示意图。如图1所示,分布式系统中包括多个设备,每个设备可以看做一个node(节点),每个设备可以存储有业务数据,多个设备的业务数据可以进行综合计算,从而得到对应的业务结果。
62.所述业务数据可以为任意类型的业务数据,例如可以为用户的消费数据、用户的生物特征等。一个示例中,多个设备可以是不同购物网站对应的服务器,每个设备可以存储有用户的消费数据,在对消费数据进行分析处理后,可以得到对应的消费偏好,从而向用户推送相应的信息。
63.在对数据进行分析处理时,可以使用机器学习、深度学习等方法。本发明实施例提供的方法可以应用于数据分析处理过程中的任意环节,尤其可以应用于全规约(allreduce)计算。
64.其中,本发明实施例中所述的全规约计算,可以是指参与计算的设备之间进行相同的运算并最终得到相同的运算结果。在机器学习、深度学习领域,全规约是常用的集合通信方法,通过全规约通信并计算后,分布式环境中每个节点都拥有最终的聚合结果。
65.例如,在机器学习过程中,多个设备可以根据自身具有的数据进行卷积运算,当得到卷积运算的结果后,可能需要将卷积结果进行全规约计算,从而使各个设备得到相同的计算结果,并将结果输入到下一层进行处理。
66.图2为本发明实施例提供的一种全规约计算的原理示意图。如图2所示,以求和全规约(sum-allreduce)为例,三个设备分别记为node0、node1、node2,每个设备有3个输入元素,执行全规约计算后,每个设备上得到三个结果,分别是其他两个设备与自己具有的输入元素相加后得到的结果。
67.除了求和(sum)之外,还可以实现其他全规约计算,例如求最大值(max)、求最小值(min)、求或(or)等。
68.为了实现如上所述的全规约计算,可以设置多个设备,其中一个作为主设备,另外的作为从设备,主设备可以从各个从设备获取数据,并根据从各个设备获取到的数据进行计算,计算完成后再将结果下发给各个从设备。此外,也可以使用交换机的方案实现全规约
计算,但是,这两种计算方式都存在效率较低的问题。
69.为了解决这一问题,本发明实施例提供一种数据处理系统,由环状连接的多个fpga(field programmable gate array,现场可编程逻辑门阵列)组成,对于参与数据处理的每一个fpga,可以通过发送光口、接收光口以及光纤,实现每一个fpga中的数据向相邻fpga的传输,并且各fpga均可以对接收的数据和自身具有的数据进行计算操作,得到计算结果。这样,通过fpga加光纤的方式可以快速实现数据的传输,并且多个fpga环状连接,多个fpga均可以参与计算过程,而不是仅依靠主设备进行计算,有效提高了计算效率。
70.下面结合附图,对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
71.图3为本发明一实施例提供的数据处理系统的结构示意图。在本实施例中,所述系统可以包括:环状连接的多个fpga;每一fpga设置有接收光口和发送光口;每一fpga的接收光口通过光纤与上一fpga的发送光口连接,发送光口通过光纤与下一fpga的接收光口连接;每一fpga用于执行下述至少一项:通过接收光口接收上一fpga发送的数据;根据接收到的数据与自身具有的数据进行计算,得到计算结果;通过发送光口向下一fpga发送数据,其中,发送的数据为计算结果或自身具有的数据。
72.在本实施例中,所述系统包括多个fpga,其中多个fpga为环状连接。环状连接是指,多个fpga依次连接,且最后一个fpga与第一个fpga连接,形成环状的结构。每个fpga上均设置有发送光口和接收光口,其中,发送光口的数量为至少一个,接收光口的数量同样至少为一个。
73.以图3为例,所述系统包括3个fpga,每个fpga包括一个发送光口和一个接收光口。其中,每个fpga的发送光口通过光纤和下一个fpga的接收光口连接,每个fpga的接收光口通过光纤和上一个fpga的发送光口连接,例如,第1个fpga的发送光口通过光纤和第2个fpga的接收光口连接,第2个fpga的发送光口和第3个fpga的接收光口连接,第3个fpga的发送光口和第1个fpga的接收光口连接。图中的小长方形表示光口,光口之间的线条表示光纤,其中箭头表明数据的传输方向。
74.每一个fpga均可以从上一fpga获取数据,还可以向下一fpga发送数据,每一个fpga均具有计算能力。当任一fpga在接收到数据后,可以将接收到的数据和自身具有的全部或部分数据进行计算,在得到计算结果后,还可以将计算结果进行传输,以使下一fpga继续根据计算结果进行计算。
75.其中,对于任一fpga来说,所述fpga自身具有的数据可以是指存储在所述fpga内、或者存储在所述fpga对应的内存内的数据,所述fpga将其与从其他fpga获取到的数据进行计算。待计算的数据分别由不同的fpga持有,且各个fpga均有能力进行计算的操作,从而通过所述多个fpga构建起分布式系统。通过本实施例提供的方案,可以使分布式系统中的每个fpga都可以通过数据交互实现自身具有的数据与其它数据的计算。
76.本实施例提供的数据处理系统,可以应用于全规约计算,或者,也可以应用于其它计算。每个fpga中执行的计算操作可以是相同的,例如都为求和,也可以是不同的,例如部分用于求和,部分用于求乘积。
77.例如,对于存在3个fpga的系统,可以使用该系统实现对两种消费数据的计算,其中,在第1个fpga中存储有第一消费数据,在第2个fpga中存储有第二消费数据,在第3个
fpga中存储有修正数据,通过将第一消费数据和第二消费数据求和,得到求和后的消费数据,再通过修正数据对求和后的消费数据进行修正,通过修正后的消费数据确定该用户的消费行为。
78.基于上述过程,第1个fpga可以先将自身存储的第一消费数据发送给第2个fpga,第2个fpga计算接收到的第一消费数据与自身具有的第二消费数据之和,并将计算结果发送给第3个fpga,由第3个fpga根据获取到的计算结果以及修正数据确定用户的消费行为。
79.本实施例提供的数据处理系统,可以应用于一个或多个服务器。例如,多个环状连接的fpga可以部署在一个服务器中,或者,多个环状连接的fpga可以部署在多个服务器中,多个fpga之间可以通过光纤实现远程数据传输,满足不同场景下的应用需求。
80.此外,每个fpga也可以设置有多个发送光口和多个接收光口,以实现多个数据的并行交互和计算。例如,每个fpga可以设置有两个发送光口和两个接收光口,每个光口都通过光纤与上一fpga或下一fpga的相应光口连接。这样,每一fpga可以通过两个发送光口同时向下一fpga发送两个数据,进一步提高数据处理的效率。
81.本实施例提供的数据处理系统,包括环状连接的多个fpga,每一fpga设置有接收光口和发送光口,每一fpga的接收光口通过光纤与上一fpga的发送光口连接,以接收所述上一fpga发送的数据,发送光口通过光纤与下一fpga的接收光口连接,以向所述下一fpga发送数据,每一fpga用于执行下述至少一项:接收上一fpga发送的数据,根据接收到的数据与自身具有的数据进行计算,得到计算结果,向下一fpga发送数据,其中,发送的数据为计算结果或自身具有的数据,从而可以通过fpga和光纤快速实现对分布式系统中存储于不同位置的数据进行处理,有效提高计算效率。
82.在上述实施例提供的技术方案的基础上,可选的是,所述系统用于实现全规约计算。所述全规约计算用于根据各个fpga具有的数据进行计算并使各个fpga得到相同的最终计算结果;所述全规约计算包括计算阶段和同步阶段。
83.其中,全规约计算可以通过不同的全规约算子实现求和、求最大值、求最小值以及求或运算等,此外,还可以通过编程实现其他功能的全规约算子或数据结构。例如,数据结构可以为唯一性集合,每个fpga能够实现去重操作,从而得到不包含重复数据的数据集合。
84.其中,在计算阶段,多个fpga可以依次传递数据并进行计算,以得到最终计算结果;在同步阶段,得到最终计算结果的fpga可以将所述最终计算结果传递给其它fpga。
85.具体来说,计算阶段是指将各个fpga中存储的数据进行计算,并得到最终计算结果,同步阶段是指将最终计算结果同步至每一个fpga。
86.多个fpga进行全规约计算的具体实现方式可以有很多种。本发明提供一实施例,对第一种数据处理过程进行详细说明。在该实施例中,多个环状连接的fpga可以实现第一种数据处理过程。
87.在该实施例中,fpga的数量为n个。其中,所述n为大于等于3的整数。
88.在计算阶段,第1个fpga具体用于:将自身具有的数据发送给第2个fpga;第2个至第n-1个fpga中的每个fpga具体用于:根据从上一fpga获取到的数据与自身具有的数据进行计算,得到计算结果,并将计算结果发送给下一fpga;第n个fpga具体用于:根据从上一fpga获取到的数据与自身具有的数据进行计算,得到最终计算结果。
89.在同步阶段,第n个fpga具体用于:将所述最终计算结果发送给下一fpga;所述第n
个fpga的下一fpga为第1个fpga;第1个至第n-2个fpga中的每个fpga具体用于:接收并发送所述最终计算结果;第n-1个fpga具体用于:接收所述最终计算结果。
90.第1个fpga仅用于将自身具有的数据发送给第2个fpga,以及接收第n个fpga发送的最终计算结果。第2个fpga至第n-1个fpga可以实现将接收的数据和自身的数据进行计算,以及将计算后的数据发送给下一个fpga。第n个fpga可以得到最终的计算结果。
91.图4为本发明实施例提供的第一种计算阶段的原理示意图。如图4所示,此处以执行加法计算为例,所述系统包括3个fpga,分别为依次连接的fpga1、fpga2和fpga3,fpga3的发送光口与fpga1的接收光口连接。其中,fpga1作为发起计算的fpga。其中,计算阶段可以包括如下过程。
92.首先,fpga1将自身具有的第一个数据1发送给fpga2。fpga2在接收到fpga1的第一个数据1后,将接收到的第一个数据1和自身的第一个数据3进行计算,得到计算结果4,并将计算结果发送给fpga3。同时fpga1还在继续向fpga2发送后续的数据。
93.fpga2在接收到fpga1的第二个数据2后,将接收到的第二个数据2和自身的第二个数据2进行计算,得到计算结果4。同理,fpga3在接收到fpga2的第一个数据的计算结果后,会将接收到的第一个数据的计算结果4和自身的第一个数据5进行计算,得到计算结果9。以此类推,最终在fpga3中可以得到3个fpga中存储的数据的求和结果。
94.此外,数据的处理过程还包括同步阶段,在得到计算结果后,还可以实现将计算结果同步至每一个fpga。具体的,当fpga3在得到最终计算结果后,可以将最终计算结果发送给下一fpga即fpga1,fpga1在接收到最终结果后,可以将最终计算结果发送给下一fpga即fpga2,以此类推,直至所有的fpga可以获得最终计算结果。
95.上述实施例对第一种数据处理过程进行了说明,在该实施例中多个环状连接的fpga中的每个fpga将每一列数据或计算后的每一列数据均向相邻的fpga进行了传递,每个fpga均可以实现数据的发送与接收,同时fpga还会进行数据的计算,使得最后一个fpga经过一次计算就可以得到最终计算结果。相对于通过主从设备方式进行数据计算,该方法能够将数据计算的过程分摊到每一个fpga中,由于每一个fpga均可以实现数据的传输和数据的计算,因此可以提高数据处理的效率。
96.第一种数据处理过程能够实现数据处理效率的提高,但是在某些时刻,还会存在闲置的fpga,例如,当fpga3在未接收到数据时,将会一直处于等待状态,因此本发明还提供第二种数据处理过程,能够实现数据的计算效率的进一步提高。
97.在该实施例中,假设所述fpga的数量为n个,每个fpga具有k列数据,在全规约计算完成后,得到k列最终计算结果。其中,所述n为大于等于3的整数,所述k为大于等于2的整数。
98.在计算阶段,至少部分fpga具体用于:同时将自身具有的数据发送给下一fpga,其中,不同fpga发送不同列的数据;若从上一fpga获取到数据,则根据获取到的数据与自身具有的相应列的数据进行计算,若得到计算结果非最终计算结果,则将所述计算结果发送给下一fpga。
99.若所述多个fpga中存在除所述至少部分fpga以外的其它fpga,则所述其它fpga中的每个fpga具体用于:若从上一fpga获取到数据,则根据获取到的数据与自身具有的相应列的数据进行计算,若得到计算结果非最终计算结果,则将所述计算结果发送给下一fpga。
100.其中,k可以大于、小于或等于n。以图4为例,k等于n,均为3,可以通过3个fpga实现3列数据的计算。第一列数据为1、3、5,第二列数据为2、2、4,第三列数据为1、1、5。
101.所述至少部分fpga可以为全部3个fpga。每一个fpga同时将自身对应列的数据发送给下一fpga。当从上一fpga获取到数据时,可以根据获取到的数据与自身具有的相应列的数据进行计算,并将所述计算结果发送给下一fpga。
102.具体来说,如图4所示的数据分布情况,fpga1将自身的第一列数据1发送给fpga2,同时fpga2将自身的第二列数据2发送给fpga3,同时fpga3将自身的第三列数据5发送给fpga1。在下一时刻,fpga1、fpga2和fpga3均可以根据接收到的数据与自身具有的相应列的数据进行计算。
103.例如,fpga1从fpga3获取到第三列数据5,那么就将5与自身的第三列数据1相加,得到6,并发送给fpga2。其它两个fpga的处理过程类似,进行同一列数据的求和操作。
104.在新获取到数据后,可以继续进行求和操作。例如,fpga2从fpga1获取到第三列当前的求和结果6后,可以将该结果与自身具有的第三列数据1相加,得到最终计算结果7。同理,fpga1可以得到第二列数据的最终计算结果8,fpga3可以得到第二列数据的最终计算结果9。
105.在同步阶段,从得到最终计算结果的fpga开始,每个fpga具体用于:将所述最终计算结果发送给下一fpga,直至所述最终计算结果被所有fpga获取到。
106.以上给出了k=n时的处理过程。在实际应用中,本发明实施例还可以应用于k≠n时的计算。
107.图5为本发明实施例提供的第二种计算阶段的原理示意图。图5中,n=3,k=2,即3个fpga计算2列数据,可以得到2列最终计算结果。
108.在该实施例中,3个fpga包括依次连接的fpga1、fpga2和fpga3,且fpga3的发送光口与fpga1的接收光口连接,形成环状结构。fpga分为至少部分fpga和除至少部分fpga以外的其它fpga,其中,至少部分fpga的数量为k个,其它fpga的数量为n-k个。
109.如图5所示,当fpga的个数为3个,每个fpga中数据的列数为2列时,发起全规约计算的至少部分fpga的个数为2个,即fpga1和fpga2,除至少部分fpga以外的其它fpga为1个,即fpga3。在计算阶段,至少部分fpga中的每一个fpga可以将不同列的数据进行传输,每一个fpga在接收到数据后可以将接收到的数据和自身具有的相应列的数据进行计算,得到计算结果。
110.例如,此处以执行加法计算为例,fpga1可以向fpga2发送第一列数据1,同时,fpga2可以向fpga3发送第二列数据4。每个fpga获取到数据后,都根据获取到的数据与自身具有的相应列的数据进行计算。具体来说,fpga2在接收到fpga1发送的第一列数据1后,将其与自身第一列数据3进行计算,得到第一列数据对应的计算结果4,同时,fpga3在接收到fpga2发送的第二列数据4后,与自身具有的第二列数据6进行计算,得到第二列数据对应的计算结果10。
111.接着,fpga2将得到的计算结果4发送给fpga3,fpga3将得到的计算结果10发送给fpga1。同理,fpga3在获取到fpga2发送的第一列对应的计算结果4后,与自身具有的第一列数据5进行计算,得到第一列的最终计算结果9。fpga1在获取到fpga3发送的第二列对应的计算结果10后,与自身具有的第二列数据2进行计算,得到第二列的最终计算结果12。
112.在同步阶段,fpga1将第二列的最终计算结果同步给其它两个fpga,fpga3将第一列的最终计算结果同步给其它两个fpga。
113.通过该实施例中的第二种数据处理过程,可以实现多个环状连接的fpga中的每个fpga发送不同列的数据至相邻的fpga,每一个fpga得到某一列的计算结果。在该过程中,计算过程和数据的发送过程被均匀地分配到每一个fpga中,数据像流水一样在各个fpga之间传递,处理过程更加高效。
114.可选的,在k小于等于n时,所述至少部分fpga的数量为k;在k大于n时,所述k列被划分为m组,每一组的列数小于等于n,以通过执行m次计算阶段得到k列最终计算结果,每次计算阶段用于计算一组数据;其中,在计算第m组的数据时,所述至少部分fpga的数量为第m组对应的列数。所述m为大于等于1的整数。
115.具体来说,当k大于n时,则可以将每个fpga中的k列数据进行分组,每组列数小于等于n,则k列数据可以被划分为m组,则通过执行m次的计算阶段可以得到k列数据的计算结果。其中,在计算第m组数据时,至少部分的个数与第m组数据的列数有关。
116.例如,k为101,fpga的个数n为3时,则每一个fpga中的101列数据可以被划分为34组数据,其中,前33组数据均包含3列数据,在第34组数据中包含2列数据。因此,3个fpga在经过34次计算阶段后可以得到最终计算结果。每一次计算阶段的具体实现原理和过程可以参见前文描述,此处不再赘述。
117.在得到最终计算结果后,按照每个fpga得到的对应列数的最终计算结果进行数据同步。或者,也可以每经过一次计算阶段即同步一次,本发明实施例对此不作限制。
118.可选的,在前述任一实施例中,所述fpga具有的数据可以存储在内存中,所述fpga通过直接存储器访问技术(direct memory access,dma)从所述内存读取数据和/或向所述内存写入数据。
119.具体的,所述内存可以为fpga的板载内存,或者,可以为其它内存如cpu内存。
120.在前述任一实施例中,在对fpga中的数据进行计算时,需要先读取fpga中的数据。其中,fpga具有的数据存储在内存中,可以通过直接存储器访问技术实现对fpga的访问,例如,读取数据和写入数据。可选的,所述fpga中可以集成有dma功能,从而实现从所述内存读取或写入数据。或者,所述fpga可以与dma控制器连接,通过dma控制器实现对内存的访问,从而从内存读取或写入数据。例如,在计算阶段,可以通过dma控制器从内存中读取数据,在进行数据传输及计算;在同步阶段,可以通过dma控制器将接收的数据存储在内存中。
121.通过dma技术可以实现对fpga中数据的访问,能够使得fpga在进行全规约计算时获取数据以及向fpga中存储数据,有效提高数据读写效率。
122.可选的,在前述任一实施例中,若每一fpga发送的数据为进行全规约计算的最小单元,则接收所述数据的fpga用于在所述数据接收完毕后,根据所述数据进行计算;若所述数据并非进行全规约计算的最小单元,则接收所述数据的fpga用于在所述数据的接收过程中,根据已接收到的最小单元的数据进行计算。
123.举例来说,若待计算的数据是长度为16位的数字,这16位是不能分开的,那么这16位就是最小单元,在16位的数字接收完毕后,再开始进行计算。若待计算的数据长度为16位,但是这16位可以进行拆分,例如前8位表示一个数字,后8位表示另一个数字,那么最小单元为8位,在接收到8位数据后即可开始进行计算,从而在保证计算准确性的基础上,有效
提高计算效率。
124.图6为本发明实施例提供的一种通过dma技术进行数据处理的流程示意图。如图6所示,每一个fpga在进行数据计算之前,先进行数据准备,也就是完成基础运算,以得到进行全规约计算的数据,数据可以存储在内存中,当需要进行全规约计算时,可以通过dma技术从内存中读取数据。
125.在读取到数据后先对数据进行判断,确定所述数据是否为进行全规约计算的最小单元,若是最小计算单元,说明所述数据是不可拆分的,则通过远程直接数据存取(remote direct memory access,rdma)技术将读取到的数据整体流式发送,其中整体流式发送可以是指数据发送完毕后才能进行计算;若非最小计算单元,说明所述数据是可拆分的,包含多个相互独立的数据,则通过rdma技术将数据并行发送,其中并行发送是指可以边发送边计算。
126.获取到数据后,fpga可以对数据进行计算,并将最终计算结果通过rdma技术在各个fpga之间进行同步,当每个fpga在得到最终计算结果后,通过dma技术写入到fpga的内存,还可以将得到的最终计算结果应用到其他算法。
127.通过对发送的数据进行判断,进而根据不同种类的数据执行不同的数据发送和计算,能够实现计算效率的提高。
128.可选的,在前述任一实施例中,所述系统还包括:控制设备;所述多个fpga分别与所述控制设备连接;所述控制设备用于:
129.向每个fpga发送基础运算指令,以使每个fpga根据所述基础运算指令进行基础运算,得到用于进行全规约计算的数据;获取每个fpga发送的用于指示基础运算是否完成的状态信息;根据每个fpga发送的状态信息,从所述多个fpga中选择发起全规约计算的fpga;向所述发起全规约计算的fpga发送全规约启动指令,以使所述fpga根据所述全规约启动指令向下一fpga发送用于进行全规约计算的数据;向其它fpga发送等待指令,以使所述其它fpga等待获取用于进行全规约计算的数据,并在获取到后进行计算。
130.其中,所述控制设备可以为任意能够与fpga进行通信的设备,例如可以为中央处理器cpu等。或者,所述控制设备可以通过处理器加存储器的方式来实现。
131.在前述任一实施例中,所述系统还可以包括控制设备,通过控制设备与各个fpga的连接,可以实现对各个fpga的控制。首先,控制设备可以向各个fpga发送基础运算指令,其中基础运算指令可以为进行神经网络计算过程中的卷积计算或其他计算,得到基础运算的结果。其中,每个fpga进行基础运算得到的结果就是进行全规约计算的数据。
132.对于每一个fpga,在得到进行全规约计算的数据后,可以向控制设备发送已经完成基础运算的状态信息,控制设备根据是否获取到每个fpga发送的状态信息,从而可以确定每个fpga的状态。为了提高全规约计算的效率,可以在所有fpga均完成基础运算后,开始启动全规约计算。
133.对于第一种数据处理过程,在进行全规约计算时,通过控制设备确定发起全规约计算的fpga,具体的,可以是控制设备从所有fpga中指定一个fpga作为启动全规约计算的fpga,其余fpga处于等待状态。在确定发起全规约计算的fpga后,控制设备向该fpga发送全规约启动指令,该fpga在接收到全规约启动指令后,可以向下一个fpga发送用于进行全规约计算的数据,同时,控制设备向其它fpga发送等待指令,使得所述其他fpga处于等待接收
数据的状态,并在接收到数据后进行数据计算。
134.此外,对于第二种数据处理过程,控制设备先指示所有fpga完成基础运算,在完成基础运算后,可以向至少部分fpga发送全规约启动指令,以使至少部分fpga中的每一个fpga同时执行数据发送以及数据计算的操作。同时控制设备还可以向除至少部分fpga以外的其它fpga,发送等待指令,以使除至少部分fpga以外的其它fpga处于等待接收数据的状态,在接收到数据后进行数据计算。
135.通过以上所述的方法,可以利用控制设备对多个fpga进行控制,实现多个fpga的同步,有效提高处理的准确率,保证数据处理的有序性和稳定性。
136.其中,控制设备在确定发起全规约计算的fpga时,可以根据从各个fpga上传的状态信息来确定。可选的,所述控制设备在从所述多个fpga中选择发起全规约计算的fpga时,具体用于:确定发起全规约计算的fpga的数量;根据每个fpga发送的状态信息,选择最后完成基础运算的相应数量的fpga为所述发起全规约计算的fpga。具体来说,所述相应数量为发起全规约计算的fpga的数量。发起全规约计算的fpga是指在计算阶段开始后,将自身具有的数据发送给下一fpga的fpga。所述发起全规约计算的fpga的数量可以根据实际需要来设置,具体可以为一个或多个。
137.在实际应用中,可以将最后完成基础运算的fpga作为发起全规约计算的fpga。由于最后完成基础运算的fpga往往是计算性能较差的fpga,而发起全规约计算的fpga相比于其它fpga少一次计算过程,因此,最后完成基础运算的fpga为发起全规约计算的fpga,能够进一步提高全规约计算的效率。
138.基于上述各实施例提供的数据处理系统,本发明实施例还提供一种数据处理方法。图7为本发明实施例提供的一种数据处理方法的流程示意图。本实施例中的方法可以基于前述任一实施例所述的系统来实现。如图7所示,所述数据处理方法可以包括:
139.步骤s 701、至少部分fpga中的每一个fpga通过光纤向下一个fpga发送自身具有的数据;其中,所述至少部分fpga为环状连接的多个fpga中的至少部分fpga。
140.步骤s702、重复执行下述步骤,直至获取到最终计算结果:每一个获取到数据的fpga将获取到的数据与自身具有的数据进行计算,若计算结果并非最终计算结果,则将所述计算结果通过光纤发送给下一个fpga。
141.在一个可选的实现方式中,所述方法用于实现全规约计算;所述全规约计算用于根据各个fpga具有的数据进行计算并使各个fpga得到相同的最终计算结果;
142.相应的,所述方法还包括:得到最终计算结果的fpga将所述最终计算结果传递给其它fpga。
143.在一个可选的实现方式中,所述fpga的数量为n个;
144.至少部分fpga中的每一个fpga通过光纤向下一个fpga发送自身具有的数据,包括:
145.第1个fpga将自身具有的数据发送给第2个fpga;
146.相应的,重复执行下述步骤,直至获取到最终计算结果:每一个获取到数据的fpga将获取到的数据与自身具有的数据进行计算,若计算结果并非最终计算结果,则将所述计算结果通过光纤发送给下一个fpga,包括:
147.第2个至第n-1个fpga中的每个fpga根据从上一fpga获取到的数据与自身具有的
数据进行计算,得到计算结果,并将计算结果发送给下一fpga;
148.第n个fpga根据从上一fpga获取到的数据与自身具有的数据进行计算,得到最终计算结果;
149.其中,所述n为大于等于3的整数。
150.在一个可选的实现方式中,所述fpga的数量为n个;每个fpga具有k列数据,在全规约计算完成后,得到k列最终计算结果;
151.至少部分fpga中的每一个fpga通过光纤向下一个fpga发送自身具有的数据,包括:
152.所述至少部分fpga同时将自身具有的数据发送给下一fpga,其中,不同fpga发送不同列的数据;
153.相应的,重复执行下述步骤,直至获取到最终计算结果:每一个获取到数据的fpga将获取到的数据与自身具有的数据进行计算,若计算结果并非最终计算结果,则将所述计算结果通过光纤发送给下一个fpga,包括:
154.对于n个fpga中的每一fpga,若从上一fpga获取到数据,则根据获取到的数据与自身具有的相应列的数据进行计算,若得到计算结果非最终计算结果,则将所述计算结果发送给下一fpga;
155.其中,所述n为大于等于3的整数,所述k为大于等于2的整数。
156.在一个可选的实现方式中,在k小于等于n时,所述至少部分fpga的数量为k;
157.在k大于n时,所述k列被划分为m组,每一组的列数小于等于n,以通过执行m次计算阶段得到k列最终计算结果,每次计算阶段用于计算一组数据;
158.其中,在计算第m组的数据时,所述至少部分fpga的数量为第m组对应的列数。
159.在一个可选的实现方式中,所述fpga具有的数据存储在内存中,所述方法还包括:每一个fpga通过直接存储器访问技术从对应的内存读取数据和/或向所述内存写入数据。
160.在一个可选的实现方式中,每一个获取到数据的fpga将获取到的数据与自身具有的数据进行计算,包括:
161.若每一fpga发送的数据为进行全规约计算的最小单元,则接收所述数据的fpga用于在所述数据接收完毕后,根据所述数据进行计算;
162.若所述数据并非进行全规约计算的最小单元,则接收所述数据的fpga用于在所述数据的接收过程中,根据已接收到的最小单元的数据进行计算。
163.在一个可选的实现方式中,所述方法还包括:
164.控制设备向每个fpga发送基础运算指令,以使每个fpga根据所述基础运算指令进行基础运算,得到用于进行全规约计算的数据;
165.获取每个fpga发送的用于指示基础运算是否完成的状态信息;
166.根据每个fpga发送的状态信息,从所述多个fpga中选择发起全规约计算的fpga;
167.向所述发起全规约计算的fpga发送全规约启动指令,以使所述fpga根据所述全规约启动指令向下一fpga发送用于进行全规约计算的数据;
168.向其它fpga发送等待指令,以使所述其它fpga等待获取用于进行全规约计算的数据,并在获取到后进行计算。
169.在一个可选的实现方式中,从所述多个fpga中选择发起全规约计算的fpga,包括:
170.确定发起全规约计算的fpga的数量;
171.根据每个fpga发送的状态信息,选择最后完成基础运算的相应数量的fpga为所述发起全规约计算的fpga;
172.其中,所述相应数量为所述发起全规约计算的fpga的数量。
173.本实施例中方法的具体实现原理、过程和有益效果均可以参见前述实施例,此处不再赘述。
174.在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
175.上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的部分步骤。
176.应理解,上述处理器可以是中央处理单元(central processing unit,简称cpu),还可以是其它通用处理器、数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
177.存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。
178.上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
179.一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(application specific integrated circuits,简称asic)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
180.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
181.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
182.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质
(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
183.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献