隐私计算、隐私数据和联邦学习的流水计算装置及方法转让专利

申请号 : CN202210950232.8

文献号 : CN115062329B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 戴蒙

申请人 : 深圳致星科技有限公司

摘要 :

本申请涉及隐私计算、隐私数据和联邦学习的流水计算装置及方法。流水计算装置包括多个流处理单元,其包括至少一个第一类流处理单元。每一个第一类流处理单元至少部分地可重构。多个流处理单元与参考计算流程的多个步骤一一对应。每一个第一类流处理单元配置为可被重构以针对参考计算流程中的对应步骤优化执行对应的步骤的处理时间。多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,其中任意任务的计算流程可按照参考计算流程展开为与参考计算流程的多个步骤一一对应的多个步骤。每一个流处理单元用于处理每一个任务的计算流程按照参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。如此提升整体流水处理效率。

权利要求 :

1.一种流水计算装置,用于隐私计算、隐私数据和联邦学习,其特征在于,所述流水计算装置包括:

多个流处理单元,其中,所述多个流处理单元包括至少一个第一类流处理单元,所述至少一个第一类流处理单元中的每一个第一类流处理单元至少部分地可重构,其中,所述至少一个第一类流处理单元包括至少一个FPGA和至少一个CGRA,所述多个流处理单元配置为直接互联或者通过内部总线连接,所述至少一个第一类流处理单元中的每一个第一类流处理单元包括可配置逻辑块、可编程互联资源和可编程输入输出单元,所述至少一个第一类流处理单元各自的可执行资源彼此独立并且对每一个所述第一类流处理单元的重构彼此独立,其中,所述多个流处理单元与参考计算流程的多个步骤一一对应,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间,其中,所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,归属于该同一任务批次的任意任务的计算流程可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤,所述多个流处理单元中的每一个流处理单元用于处理所述一个或者多个任务中的每一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤,所述多个流处理单元中的每一个流处理单元各自执行所述参考计算流程中的与该流处理单元对应的步骤的处理时间一起组成参考处理时间数组,所述参考处理时间数组中的最大值和最小值之间的第一差距小于第一预设阈值,对所述第一类流处理单元进行重构是通过降低所述第一类流处理单元用于执行与所述第一类流处理单元对应的步骤的可执行资源从而增加与所述第一类流处理单元对应的步骤的处理时间。

2.根据权利要求1所述的流水计算装置,其特征在于,所述至少一个第一类流处理单元中的每一个第一类流处理单元在所述流水计算装置出厂前被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。

3.根据权利要求1所述的流水计算装置,其特征在于,所述参考计算流程基于该同一任务批次相关联的计算场景确定,所述至少一个第一类流处理单元中的每一个第一类流处理单元在所述流水计算装置处理该同一任务批次之前被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。

4.根据权利要求1所述的流水计算装置,其特征在于,所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,包括:按照所述一个或者多个任务的处理次序,所述多个流处理单元中的每一个流处理单元在处理完当前任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤之后,才开始处理在所述处理次序中相对于该当前任务的下一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。

5.根据权利要求1所述的流水计算装置,其特征在于,按照所述参考计算流程的多个步骤的先后次序,与所述多个步骤一一对应的所述多个流处理单元排列得到流处理单元序列,所述流处理单元序列中的给定流处理单元配置为从所述流处理单元序列中的相对于该给定流处理单元的上一流处理单元获得输入数据并提供输出数据给所述流处理单元序列中的相对于该给定流处理单元的下一流处理单元,所述给定流处理单元是所述流处理单元序列中的任意流处理单元。

6.根据权利要求4所述的流水计算装置,其特征在于,所述多个流处理单元按照所述参考计算流程的多个步骤的先后次序排列得到流处理单元序列,所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,还包括:所述多个流处理单元中的每一个流处理单元从所述流处理单元序列中的相对于该流处理单元的上一流处理单元获得用于所述当前任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤的输入数据,执行所述当前任务的计算流程中的与该流处理单元对应的步骤并将计算结果作为输出数据提供给所述流处理单元序列中的相对于该流处理单元的下一流处理单元以便作为所述当前任务的计算流程中的与该下一流处理单元对应的步骤的输入数据。

7.根据权利要求1所述的流水计算装置,其特征在于,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间,并比较该流处理单元的实际处理时间和所述参考处理时间数组中的该流处理单元的处理时间,以及根据比较结果选择性地对至少一个所述第一类流处理单元进行重构。

8.根据权利要求7所述的流水计算装置,其特征在于,根据所述比较结果选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构,包括:通过降低该一个或者多个第一类流处理单元用于执行与该一个或者多个第一类流处理单元对应的步骤的可执行资源从而增加与该一个或者多个第一类流处理单元对应的步骤的处理时间。

9.根据权利要求1所述的流水计算装置,其特征在于,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间中的最大值和最小值之间的第二差距,并且当该第二差距大于第二预设阈值时选择性地对至少一个所述第一类流处理单元进行重构从而减少该第二差距。

10.根据权利要求1所述的流水计算装置,其特征在于,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间中的最大值,并比较该最大值的实际处理时间和所述参考处理时间数组中的具有最大值的实际处理时间的流处理单元的处理时间,以及根据比较结果选择性地对具有最大值的实际处理时间的流处理单元进行重构。

11.根据权利要求1所述的流水计算装置,其特征在于,按照所述参考计算流程的多个步骤的先后次序,与所述多个步骤一一对应的所述多个流处理单元排列得到流处理单元序列,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述流处理单元序列中的任意两个相邻流处理单元各自的实际处理时间之间的第三差距,并且当该第三差距超过第三预设阈值时对该两个相邻流处理单元中具有较小的实际处理时间的流处理单元进行重构以便降低该流处理单元用于执行与该流处理单元对应的步骤的可执行资源从而增加该流处理单元的实际处理时间。

12.根据权利要求1所述的流水计算装置,其特征在于,所述多个流处理单元还包括至少一个第二类流处理单元且所述至少一个第二类流处理单元均不可重构,所述至少一个第二类流处理单元包括至少一个CPU和/或至少一个GPU。

13.根据权利要求12所述的流水计算装置,其特征在于,所述至少一个第二类流处理单元对应所述参考计算流程的初始步骤和结束步骤。

14.根据权利要求1所述的流水计算装置,其特征在于,所述参考计算流程是Paillier解密运算过程或者Paillier加密运算过程。

15.一种流水计算方法,用于隐私计算、隐私数据和联邦学习,其特征在于,所述流水计算方法包括:

提供多个流处理单元,其中,所述多个流处理单元包括至少一个第一类流处理单元,所述至少一个第一类流处理单元中的每一个第一类流处理单元至少部分地可重构,所述多个流处理单元与参考计算流程的多个步骤一一对应,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间,其中,所述至少一个第一类流处理单元包括至少一个FPGA和至少一个CGRA,所述多个流处理单元配置为直接互联或者通过内部总线连接,所述至少一个第一类流处理单元中的每一个第一类流处理单元包括可配置逻辑块、可编程互联资源和可编程输入输出单元,所述至少一个第一类流处理单元各自的可执行资源彼此独立并且对每一个所述第一类流处理单元的重构彼此独立;

获得同一任务批次的多个任务,其中,归属于该同一任务批次的多个任务的计算流程分别可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤;

针对所述多个任务中的每一个任务,通过所述多个流处理单元流水化处理该任务,并且所述多个流处理单元中的每一个流处理单元用于处理该任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤,其中,所述多个流处理单元中的每一个流处理单元各自执行所述参考计算流程中的与该流处理单元对应的步骤的处理时间一起组成参考处理时间数组,所述参考处理时间数组中的最大值和最小值之间的第一差距小于第一预设阈值,对所述第一类流处理单元进行重构是通过降低所述第一类流处理单元用于执行与所述第一类流处理单元对应的步骤的可执行资源从而增加与所述第一类流处理单元对应的步骤的处理时间。

16.根据权利要求15所述的流水计算方法,其特征在于,所述流水计算方法还包括:

在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间,并比较该流处理单元的实际处理时间和所述参考处理时间数组中的该流处理单元的处理时间,以及根据比较结果选择性地对至少一个所述第一类流处理单元进行重构。

说明书 :

隐私计算、隐私数据和联邦学习的流水计算装置及方法

技术领域

[0001] 本申请涉及隐私计算、隐私数据及联邦学习技术领域,具体涉及芯片和处理器技术领域,尤其涉及隐私计算、隐私数据和联邦学习的流水计算装置及方法。

背景技术

[0002] 隐私计算(Privacy Computing)指的是在保证数据提供方不泄露原始数据的前提下对数据进行分析计算的一系列技术,保证数据在流通和融合过程中“可用不可见”。隐私计算在通常意义上涵盖以保护数据隐私的同时实现计算任务为目的所使用的一系列广泛的技术。隐私计算结合计算机科学、人工智能以及云计算等技术的发展,在数据查询和机器学习中取得了重大进展,在诸多应用场景下提供了对数据的安全获取和对数据隐私的保护。常见的隐私计算技术包括如联邦学习(Federated Learning,FL)、安全多方计算(Secure Multi‑Party Computation,SMPC)、秘密共享(Secret Sharing)、可信执行环境(Trusted Execution Environment,TEE)、差分隐私(Differential Privacy,DP)、同态加密(Homomorphic Encryption,HE)等。其中联邦学习指的是在确保数据不离开安全控制范围例如数据不传递到外部的前提下实现多方协同构建联邦学习模型。另一方面,随着对数据安全和隐私信息保护的日益重视以及《数据安全法》和《个人信息保护法》等相关法律法规的推出,隐私数据例如涉及个人信息或敏感信息的个人隐私数据等,在数据处理、数据通信、数据交互等各方面也面临更高的隐私保护和数据安全的要求。
[0003] 在隐私计算、隐私数据处理和联邦学习的相关实践中,需要对海量的大整数位宽的密态数据进行密集运算,而通用计算机、计算装置或者计算系统等在面对这样的计算需要时表现得计算效率低下,并且难以很好地应对复杂多变的应用环境和计算需求。
[0004] 为此,需要一种隐私计算、隐私数据和联邦学习的流水计算装置及方法,能够满足隐私计算、隐私数据处理和联邦学习的相关实践中的计算需求并且具有较好的计算效率。

发明内容

[0005] 第一方面,本申请实施例提供了一种流水计算装置,用于隐私计算、隐私数据和联邦学习。所述流水计算装置包括:多个流处理单元,其中,所述多个流处理单元包括至少一个第一类流处理单元,所述至少一个第一类流处理单元中的每一个第一类流处理单元至少部分地可重构。其中,所述多个流处理单元与参考计算流程的多个步骤一一对应,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。其中,所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,归属于该同一任务批次的任意任务的计算流程可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤,所述多个流处理单元中的每一个流处理单元用于处理所述一个或者多个任务中的每一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。
[0006] 第一方面所描述的技术方案,通过参考计算流程以及其展开后的多个步骤体现了同一任务批次的多个任务之间在逻辑流程或者计算过程上的共性,并且通过多个流处理单元与参考计算流程的多个步骤一一对应实现了按照这样的共性来配置流处理单元,进一步地考虑到参考计算流程与同一任务批次的多个任务之间存在一定差异性,通过所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间,从而克服上述差异性,进而有利于利用流水线方式来最大化利用多个流处理单元的算力资源,提升整体流水处理效率和资源利用效率。
[0007] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述至少一个第一类流处理单元中的每一个第一类流处理单元在所述流水计算装置出厂前被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。
[0008] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述参考计算流程基于该同一任务批次相关联的计算场景确定,所述至少一个第一类流处理单元中的每一个第一类流处理单元在所述流水计算装置处理该同一任务批次之前被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。
[0009] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,包括:按照所述一个或者多个任务的处理次序,所述多个流处理单元中的每一个流处理单元在处理完当前任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤之后,才开始处理在所述处理次序中相对于该当前任务的下一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。
[0010] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,按照所述参考计算流程的多个步骤的先后次序,与所述多个步骤一一对应的所述多个流处理单元排列得到流处理单元序列,所述流处理单元序列中的给定流处理单元配置为从所述流处理单元序列中的相对于该给定流处理单元的上一流处理单元获得输入数据并提供输出数据给所述流处理单元序列中的相对于该给定流处理单元的下一流处理单元,所述给定流处理单元是所述流处理单元序列中的任意流处理单元。
[0011] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述多个流处理单元按照所述参考计算流程的多个步骤的先后次序排列得到流处理单元序列,所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,还包括:所述多个流处理单元中的每一个流处理单元从所述流处理单元序列中的相对于该流处理单元的上一流处理单元获得用于所述当前任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤的输入数据,执行所述当前任务的计算流程中的与该流处理单元对应的步骤并将计算结果作为输出数据提供给所述流处理单元序列中的相对于该流处理单元的下一流处理单元以便作为所述当前任务的计算流程中的与该下一流处理单元对应的步骤的输入数据。
[0012] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述多个流处理单元中的每一个流处理单元各自执行所述参考计算流程中的与该流处理单元对应的步骤的处理时间一起组成参考处理时间数组,所述参考处理时间数组中的最大值和最小值之间的第一差距小于第一预设阈值。
[0013] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间,并比较该流处理单元的实际处理时间和所述参考处理时间数组中的该流处理单元的处理时间,以及根据比较结果选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构。
[0014] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,根据所述比较结果选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构,包括:通过降低该一个或者多个第一类流处理单元用于执行与该一个或者多个第一类流处理单元对应的步骤的可执行资源从而增加与该一个或者多个第一类流处理单元对应的步骤的处理时间。
[0015] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间中的最大值和最小值之间的第二差距,并且当该第二差距大于第二预设阈值时选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构从而减少该第二差距。
[0016] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间中的最大值,并比较该最大值的实际处理时间和所述参考处理时间数组中的具有最大值的实际处理时间的流处理单元的处理时间,以及根据比较结果选择性地对具有最大值的实际处理时间的流处理单元进行重构。
[0017] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,按照所述参考计算流程的多个步骤的先后次序,与所述多个步骤一一对应的所述多个流处理单元排列得到流处理单元序列,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述流处理单元序列中的任意两个相邻流处理单元各自的实际处理时间之间的第三差距,并且当该差距超过第三预设阈值时对该两个相邻流处理单元中具有较小的实际处理时间的流处理单元进行重构以便降低该流处理单元用于执行与该流处理单元对应的步骤的可执行资源从而增加该流处理单元的实际处理时间。
[0018] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述多个流处理单元配置为直接互联或者通过内部总线连接。
[0019] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述至少一个第一类流处理单元包括至少一个FPGA和/或至少一个CGRA,所述多个流处理单元还包括至少一个第二类流处理单元且所述至少一个第二类流处理单元均不可重构,所述至少一个第二类流处理单元包括至少一个CPU和/或至少一个GPU。
[0020] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述至少一个第二类流处理单元对应所述参考计算流程的初始步骤和结束步骤。
[0021] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述至少一个第一类流处理单元中的每一个第一类流处理单元包括可配置逻辑块、可编程互联资源和可编程输入输出单元。
[0022] 根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述参考计算流程是Paillier解密运算过程或者Paillier加密运算过程。
[0023] 第二方面,本申请实施例提供了一种流水计算方法,用于隐私计算、隐私数据和联邦学习。所述流水计算方法包括:提供多个流处理单元,其中,所述多个流处理单元包括至少一个第一类流处理单元,所述至少一个第一类流处理单元中的每一个第一类流处理单元至少部分地可重构,所述多个流处理单元与参考计算流程的多个步骤一一对应,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间;获得同一任务批次的多个任务,其中,归属于该同一任务批次的多个任务的计算流程分别可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤;针对所述多个任务中的每一个任务,通过所述多个流处理单元流水化处理该任务,并且所述多个流处理单元中的每一个流处理单元用于处理该任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。
[0024] 第二方面所描述的技术方案,通过参考计算流程以及其展开后的多个步骤体现了同一任务批次的多个任务之间在逻辑流程或者计算过程上的共性,并且通过多个流处理单元与参考计算流程的多个步骤一一对应实现了按照这样的共性来配置流处理单元,进一步地考虑到参考计算流程与同一任务批次的多个任务之间存在一定差异性,通过所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间,从而克服上述差异性,进而有利于利用流水线方式来最大化利用多个流处理单元的算力资源,提升整体流水处理效率和资源利用效率。
[0025] 根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述多个流处理单元中的每一个流处理单元各自执行所述参考计算流程中的与该流处理单元对应的步骤的处理时间一起组成参考处理时间数组,所述参考处理时间数组中的最大值和最小值之间的第一差距小于第一预设阈值。
[0026] 根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述流水计算方法还包括:在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间,并比较该流处理单元的实际处理时间和所述参考处理时间数组中的该流处理单元的处理时间,以及根据比较结果选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构。

附图说明

[0027] 为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
[0028] 图1示出了本申请实施例提供的一种实施方式的流水计算装置的框图。
[0029] 图2示出了本申请实施例提供的另一种实施方式的流水计算装置的框图。
[0030] 图3示出了本申请实施例提供的另一种实施方式的流水计算装置的框图。
[0031] 图4示出了本申请实施例提供的一种实施方式的流处理单元的结构框图。
[0032] 图5示出了本申请实施例提供的流水计算方法的流程示意图。

具体实施方式

[0033] 本申请实施例为了解决隐私计算、隐私数据处理和联邦学习的相关实践中的计算需求这样的技术难题,提出了一种隐私计算、隐私数据和联邦学习的流水计算装置及方法。其中,流水计算装置包括:多个流处理单元,其中,所述多个流处理单元包括至少一个第一类流处理单元,所述至少一个第一类流处理单元中的每一个第一类流处理单元至少部分地可重构。其中,所述多个流处理单元与参考计算流程的多个步骤一一对应,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。其中,所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,归属于该同一任务批次的任意任务的计算流程可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤,所述多个流处理单元中的每一个流处理单元用于处理所述一个或者多个任务中的每一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。本申请实施例具有以下有益技术效果:通过参考计算流程以及其展开后的多个步骤体现了同一任务批次的多个任务之间在逻辑流程或者计算过程上的共性,并且通过多个流处理单元与参考计算流程的多个步骤一一对应实现了按照这样的共性来配置流处理单元,进一步地考虑到参考计算流程与同一任务批次的多个任务之间存在一定差异性,通过所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间,从而克服上述差异性,进而有利于利用流水线方式来最大化利用多个流处理单元的算力资源,提升整体流水处理效率和资源利用效率。
[0034] 本申请实施例可用于以下应用场景,包括但是不限于,隐私计算、隐私数据相关处理、多方安全计算、与联邦学习有关的机器学习模型训练、数据安全、隐私保护或者应用隐私计算框架或算法的其它应用场景等。
[0035] 本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
[0036] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。
[0037] 图1示出了本申请实施例提供的一种实施方式的流水计算装置的框图。如图1所示,流水计算装置包括五个流处理单元,分别为流处理单元102,流处理单元104,流处理单元106,流处理单元108以及流处理单元110。并且,流水计算装置所包括的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元,或者说,多个流处理单元按照该特定次序获取输入数据进行处理后再提供输出数据。以图1为例,流处理单元102是该特定次序中的首个流处理单元或者说该流水计算装置的数据流向从流处理单元102开始,流处理单元102对获取的输入数据进行处理,流处理单元102进行处理后提供输出数据给流处理单元104,流处理单元104进行处理后提供输出数据给流处理单元106,流处理单元106进行处理后提供输出数据给流处理单元108,流处理单元108进行处理后提供输出数据给流处理单元110。应当理解的是,图1所示的流水计算装置所包括的多个流处理单元仅为示例性,流水计算装置可以包括任意数量的流处理单元,在此不做具体限定。并且,图1所示的流水计算装置所包括的多个流处理单元之间的数据流向仅为示例性,只要满足数据流向是单向的特点,图1的流水计算装置还可以采用其它的数据流向,例如可以将流处理单元110作为首个流处理单元,再例如使得该特定次序为从流处理单元110开始再到流处理单元108再到流处理单元106再到流处理单元104最后到流处理单元102。
[0038] 请继续参阅图1,图1的流水计算装置所包括的多个流处理单元之间按照该特定次序以串联形式连接,或者说,多个流处理单元之间按照该特定次序直接互联从而实现上述的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元。应当理解的是,图1的流水计算装置所包括的多个流处理单元之间还可以采用其它连接关系或者互联方式,只要能实现按照上述的数据流向来传输数据。其中,图1的流水计算装置所包括的多个流处理单元之间采用直接互联方式,也就是按照该特定次序以串联形式连接。具体地,流处理单元102作为该特定次序的首个流处理单元,流处理单元102与流处理单元104连接并且提供输出数据给流处理单元104,流处理单元104与流处理单元106连接并且提供输出数据给流处理单元106,流处理单元106与流处理单元108连接并且提供输出数据给流处理单元108,流处理单元108与流处理单元110连接并且提供输出数据给流处理单元110。
[0039] 继续参阅图1,该流水计算装置用于隐私计算、隐私数据和联邦学习。该流水计算装置包括多个流处理单元(图1示例性示出了流处理单元102,流处理单元104,流处理单元106,流处理单元108以及流处理单元110)。所述多个流处理单元包括至少一个第一类流处理单元,所述至少一个第一类流处理单元中的每一个第一类流处理单元至少部分地可重构。所述多个流处理单元与参考计算流程的多个步骤一一对应,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,归属于该同一任务批次的任意任务的计算流程可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤,所述多个流处理单元中的每一个流处理单元用于处理所述一个或者多个任务中的每一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。
[0040] 继续参阅图1,图1的流水计算装置所包括的流处理单元102,流处理单元104,流处理单元106,流处理单元108以及流处理单元110,其中包括至少一个第一类流处理单元并且每一个第一类流处理单元至少部分地可重构。在一些实施例中,第一类流处理单元是现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA),FPGA提供细粒度的可编程硬件逻辑计算和存储单元并且根据算法需求以静态全局重构的方式定制化设计计算通路结构。在另一些实施例中,第一类流处理单元是粗粒度可重构计算架构(Coarse‑grained Reconfigurable Architecture,CGRA),CGRA让功能配置好的硬件资源互连形成可配置的计算部分并且通过配置信息来使计算部分重构为不同的计算通路从而实现对硬件结构的动态配置并简化互连配置。在另一些实施例中,第一类流处理单元是其它类型的可编程器件,只要可以根据需求变化来改变硬件结构也就是可重构或者可配置。在另一些实施例中,该至少一个第一类流处理单元可以包括一种或者多种类型的可编程器件,例如该至少一个第一类流处理单元均是FPGA,该至少一个第一类流处理单元均是CGRA,或者该至少一个第一类流处理单元中同时包括FPGA和CGRA,或者该至少一个第一类流处理单元还包括其他类型的可编程器件。另外,每一个第一类流处理单元至少部分地可重构,应当理解为,每一个第一类流处理单元中至少一部分硬件资源可重构或者全部的硬件资源可重构。在一些实施例中,第一类流处理单元中的一部分硬件资源可重构而另一部分硬件资源不可重构,例如可以是中央处理器(Central Processing Unit,CPU)和FPGA的结合,或者可以是带有部分可重构功能的处理器。
[0041] 继续参阅图1,该流水计算装置,当应用于隐私计算、隐私数据处理和联邦学习的相关应用场景,往往面对密集型的计算任务且需要面对海量的大整数位宽数据以及可能需要进行较复杂的运算如加解密运算、模幂运算、模乘运算、密文运算等。这些密集型的计算任务往往具有逻辑流程或者计算过程上的共性,并且可以通过参考计算流程来体现这些计算任务在逻辑流程或者计算过程上的共性。进一步地,所述多个流处理单元与参考计算流程的多个步骤一一对应,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。因此,参考计算流程展开为多个步骤,多个流处理单元与参考计算流程的多个步骤一一对应,并且上述的第一类流处理单元配置可被重构以优化与该第一类流处理单元对应的步骤的处理时间。这意味着,可以通过多个流处理单元实现流水化处理参考计算流程所代表的这些计算任务,并且可以选择性地利用第一类流处理单元的可被重构的配置来优化处理时间,从而提升整体流水处理效率。下面结合表1所示出的关于图1的流水计算装置处理同一任务批次的多个任务的实例来详细说明。
[0042] 表1
[0043] 流处理单元102 流处理单元104 流处理单元106 流处理单元108 流处理单元110 第1任务第1步骤 无 无 无 无第2任务第1步骤 第1任务第2步骤 无 无 无
第3任务第1步骤 第2任务第2步骤 第1任务第3步骤 无 无
第4任务第1步骤 第3任务第2步骤 第2任务第3步骤 第1任务第4步骤 无
第5任务第1步骤 第4任务第2步骤 第3任务第3步骤 第2任务第4步骤 第1任务第5步骤 第6任务第1步骤 第5任务第2步骤 第4任务第3步骤 第3任务第4步骤 第2任务第5步骤 无 第6任务第2步骤 第5任务第3步骤 第4任务第4步骤 第3任务第5步骤
无 无 第6任务第3步骤 第5任务第4步骤 第4任务第5步骤
无 无 无 第6任务第4步骤 第5任务第5步骤
无 无 无 无 第6任务第5步骤
[0044] 如表1所示,同一任务批次的多个任务包括第1任务到第6任务,并且这六个任务中的任意任务的计算流程可展开为5个步骤,也就是可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤。并且,所述多个流处理单元与参考计算流程的多个步骤一一对应。图1所示的流水计算装置的多个流水处理单元中的每一个流处理单元对应参考计算流程中一个步骤,以及用于处理这六个任务中每一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。具体地,流处理单元102对应参考计算流程的第一个步骤也因此用于处理第1任务到第6任务各自的第1步骤;类似地,流处理单元104对应参考计算流程的第二个步骤也因此用于处理第1任务到第6任务各自的第2步骤;流处理单元106对应参考计算流程的第三个步骤也因此用于处理第1任务到第6任务各自的第3步骤;流处理单元108对应参考计算流程的第四个步骤也因此用于处理第1任务到第6任务各自的第4步骤;流处理单元110对应参考计算流程的第五个步骤也因此用于处理第1任务到第6任务各自的第5步骤。如此,参考计算流程可以展开为5个步骤,而且同一批次的第1任务到第6任务分别可以展开为与参考计算流程的5个步骤一一对应的5个步骤,例如第1任务可以展开为第1任务的第1步骤到第1任务的第5步骤。所述多个流处理单元与参考计算流程的步骤和具体的任务的计算流程的步骤之间的对应关系,与上面提到的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元,这两者之间是一致的。换句话说,当确定多个流处理单元各自对应的步骤之后可以根据这些步骤之间的先后关系确定该多个流处理单元之间的数据流向。例如,如表1所示,流处理单元102对应第1步骤,流处理单元104对应第2步骤,流处理单元106对应第3步骤,流处理单元108对应第4步骤,以及流处理单元110对应第5步骤,这样意味着流处理单元102,流处理单元104,流处理单元106,流处理单元108以及流处理单元110之间的数据流向按照特定次序传输。换句话说,与第1步骤对应的流处理单元也即流处理单元102进行处理后提供输出数据给与第2步骤对应的流处理单元也即流处理单元104,依次类推。应当理解的是,上面表1所示的图1的流水计算装置所包括的多个流处理单元与参考计算流程的步骤之间的对应关系,仅为示例性。在一些实施例中,可能存在不同的对应关系,例如流处理单元102可能不是对应表1所示的第1步骤而是对应第3步骤。取决于具体的流处理单元与参考计算流程的步骤之间的对应关系,可以确定相应的特定次序和数据流向,并且可以相应地调整多个流处理单元之间的连接关系。上面提到,多个流处理单元之间按照该特定次序直接互联从而实现上述的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元。因此,假设与第1步骤对应的流处理单元以及与第2步骤对应的流处理单元不同于上述表1所示的与第1步骤对应的流处理单元102和与第2步骤对应的流处理单元104,则可以相应地使得与第1步骤对应的流处理单元直接互联与第2步骤对应的流处理单元。
[0045] 继续参阅表1,上面提到,所述多个流处理单元(流处理单元102,流处理单元104,流处理单元106,流处理单元108以及流处理单元110)用于流水化处理归属于同一任务批次的多个任务,例如表1中的第1任务至第6任务。归属于该同一任务批次的任意任务的计算流程可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤,例如第1任务的计算流程展开为第1任务第1步骤至第1任务第5步骤。所述多个流处理单元中的每一个流处理单元用于处理所述一个或者多个任务中的每一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。如此,流处理单元102用于处理第1任务至第6任务各自的第1步骤,这意味着该同一任务批次的多个任务各自的第1步骤均通过流处理单元102进行处理。考虑到同一任务批次的多个任务具有逻辑流程或者计算过程上的共性,并且可能共享相同的配置和参数等,而且该多个任务中的任意任务都按照同一参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤,这样意味着与特定步骤对应的特定流处理单元必然用于处理同一任务批次的多个任务各自的该特定步骤,例如流处理单元102用于处理同一任务批次的多个任务各自的第1步骤,如第1任务至第6任务各自的第1步骤。这样,通过安排多个流处理单元与参考计算流程的多个步骤一一对应也与同一任务批次的任意任务按照参考计算流程展开后的多个步骤一一对应,使得每个流处理单元可以用于处理不同任务的同一步骤也因此面临基本相同的运算需求。此外,上面提到,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。
因此,图1所示的流水计算装置中的第一类流处理单元,可以利用其可被重构的配置以优化该第一类流处理单元执行对应步骤的处理时间,从而提升整体流水处理效率。例如,设流处理单元104是第一类流处理单元,则可以通过重构或者再配置流处理单元104以改变流处理单元104处理与其对应的第2步骤的处理时间从而提升整体流水处理效率。值得注意的是,表1中第1任务的计算流程以及其数据流向,从流处理单元102开始,然后到流处理单元104,再到流处理单元106。为了提升整体流水效率,需要让每个流处理单元各自处理对应步骤的处理时间大致相等,这样才能充分利用流水线方式来最大化利用多个流处理单元的算力资源。以上面表1为例,在流处理单元102处理第4任务的第1步骤之前,其它流处理单元没有全部处于运行状态或者说至少有一个或者多个流处理单元处于空闲状态,这样不利于提升整体资源利用效率。另一方面,如果流处理单元102处理第1步骤的处理时间远远大于或者远远小于流处理单元104处理第2步骤的处理时间,则可能给整体流水处理效率带来负面影响或者增加额外的资源及控制成本。其中,当流处理单元102处理第1步骤的处理时间远远大于流处理单元104处理第2步骤的处理时间时,这种情况可能是因为可执行资源、步骤的计算复杂度等多种可能因素导致的,这意味着同一个任务的第1步骤在流处理单元102处理完毕才能由流处理单元104开始处理该同一任务的第2步骤,因此也就意味着流处理单元104可能处于空闲状态且需要等待流处理单元102处理完当前任务的第1步骤才能开始处理该当前任务的第2步骤,从而给整体流水处理效率带来负面影响。当流处理单元102处理第1步骤的处理时间远远小于流处理单元104处理第2步骤的处理时间时,这意味着流处理单元
102在处理完若干个任务的第1步骤后,例如处理完第1任务、第2任务及第3任务的第1步骤之后,流处理单元104才处理完第1任务的第2步骤并可以开始处理第2任务的第2步骤,因此意味着需要提供缓存来存储流处理单元102的处理结果,从而增加额外的资源和控制成本。
当每个流处理单元各自处理对应步骤的处理时间大致相等时,则意味着每个流处理单元在处理完上一个任务的对应步骤后就可以开始处理下一个任务的对应步骤,例如上面表1所示的实例,这样有利于最大化利用多个流处理单元的算力资源。
[0046] 为了做到每个流处理单元各自处理对应步骤的处理时间大致相等,图1所示的流水计算装置通过参考计算流程以及其展开后的多个步骤体现了同一任务批次的多个任务之间在逻辑流程或者计算过程上的共性,并且通过多个流处理单元与参考计算流程的多个步骤一一对应实现了按照这样的共性来配置流处理单元,这样有利于实现每个流处理单元各自处理参考计算流程中的对应步骤的处理时间大致相等。进一步地,考虑到参考计算流程与实际中的同一任务批次的多个任务之间存在一定差异性,例如具体的输入数据、数据位宽、参数配置以及硬件设备的实际状态等都可能引起差异性,为此图1所示的流水计算装置还利用第一类流处理单元的特性,也就是所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间,从而可以通过重构或者再配置所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元的方式来克服上述差异性,以使得该流水计算装置面对同一任务批次的多个任务时每个流处理单元各自处理对应步骤的处理时间大致相等。
[0047] 总之,图1所示的流水计算装置,通过参考计算流程以及其展开后的多个步骤体现了同一任务批次的多个任务之间在逻辑流程或者计算过程上的共性,并且通过多个流处理单元与参考计算流程的多个步骤一一对应实现了按照这样的共性来配置流处理单元,进一步地考虑到参考计算流程与同一任务批次的多个任务之间存在一定差异性,通过所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间,从而克服上述差异性,进而有利于利用流水线方式来最大化利用多个流处理单元的算力资源,提升整体流水处理效率和资源利用效率。
[0048] 在一种可能的实施方式中,所述至少一个第一类流处理单元中的每一个第一类流处理单元在所述流水计算装置出厂前被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。如此,在该流水计算装置出厂前对第一类流处理单元进行重构以提升整体流水处理效率。
[0049] 在一种可能的实施方式中,所述参考计算流程基于该同一任务批次相关联的计算场景确定,所述至少一个第一类流处理单元中的每一个第一类流处理单元在所述流水计算装置处理该同一任务批次之前被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。如此,根据计算场景确定该参考计算流程,然后基于该参考计算流程对第一类流处理单元进行重构,这样有利于结合具体的计算场景来提升整体流水处理效率。而且,因为是基于具体的计算场景来确定参考计算流程,有利于根据针对不同的计算场景的需求来确定在特定计算场景下执行的任务之间的共性。这里,计算场景的示例可以是基于行业,例如银行业的计算场景、电商的计算场景、安防的计算场景、政务的计算场景、交通的计算场景、证券的计算场景、医疗服务的计算场景、制药的计算场景、航空的计算场景。计算场景的示例还可以是基于地理、人群、社会经济条件等各种可能的因素。同一任务批次的多个任务一般是对应同一计算场景或者说可以归属于同一计算场景,例如在银行业的计算场景下生成的同一个任务批次的多个任务。因此,通过根据该同一任务批次相关联的计算场景确定参考计算流程,实现了根据具体任务的计算场景来进一步提升整体流水处理效率。
[0050] 在一种可能的实施方式中,所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,包括:按照所述一个或者多个任务的处理次序,所述多个流处理单元中的每一个流处理单元在处理完当前任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤之后,才开始处理在所述处理次序中相对于该当前任务的下一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。如此,实现了按照处理次序来通过该多个流处理单元流水化地处理同一个任务批次的一个或者多个任务。在一些实施例中,所述处理次序是所述流水计算装置接收所述一个或者多个任务的先后次序。如此,实现了按照任务被接收的先后次序来确定处理次序并按照处理次序通过该多个流处理单元流水化地处理同一个任务批次的一个或者多个任务。在另一些实施例中,所述处理次序可以是按照其它次序。在一些实施例中,所述多个流处理单元按照所述参考计算流程的多个步骤的先后次序排列得到流处理单元序列。所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,还包括:所述多个流处理单元中的每一个流处理单元从所述流处理单元序列中的相对于该流处理单元的上一流处理单元获得用于所述当前任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤的输入数据,执行所述当前任务的计算流程中的与该流处理单元对应的步骤并将计算结果作为输出数据提供给所述流处理单元序列中的相对于该流处理单元的下一流处理单元以便作为所述当前任务的计算流程中的与该下一流处理单元对应的步骤的输入数据。如此,基于处理次序和流处理单元序列,确定了多个流处理单元中每个流处理单元的获取输入数据、执行相应步骤的计算以及输出计算结果,这样有利于通过该多个流处理单元流水化地处理同一个任务批次的一个或者多个任务。
[0051] 在一种可能的实施方式中,按照所述参考计算流程的多个步骤的先后次序,与所述多个步骤一一对应的所述多个流处理单元排列得到流处理单元序列,所述流处理单元序列中的给定流处理单元配置为从所述流处理单元序列中的相对于该给定流处理单元的上一流处理单元获得输入数据并提供输出数据给所述流处理单元序列中的相对于该给定流处理单元的下一流处理单元,所述给定流处理单元是所述流处理单元序列中的任意流处理单元。如此,实现了按照流处理单元序列来通过该多个流处理单元流水化地处理同一个任务批次的一个或者多个任务。在一些实施例中,所述流处理单元序列中的给定流处理单元配置为与该上一流处理单元和该一流处理单元分别通过高速串行例如SERDES(SerializerDe‑serializer)连接。应当理解的是,还可以通过其它任意合适的连接方式连接。
[0052] 在一种可能的实施方式中,所述多个流处理单元中的每一个流处理单元各自执行所述参考计算流程中的与该流处理单元对应的步骤的处理时间一起组成参考处理时间数组,所述参考处理时间数组中的最大值和最小值之间的第一差距小于第一预设阈值。如此,通过参考处理时间数组可以更好地评估各个流处理单元处理相应步骤的处理时间之间的差异,以及通过设定参考处理时间数组中的最大值和最小值之间的第一差距小于第一预设阈值从而控制处理时间之间的差异的变化程度,可以有效避免某个流处理单元的处理时间显著长于其它流处理单元的处理时间也就成为瓶颈,从而有利于实现每个流处理单元各自处理参考计算流程中的对应步骤的处理时间大致相等,进而有利于提升整体流水处理效率。
[0053] 上面提到,通过参考处理时间数组来评估以及控制各个流处理单元处理相应步骤的处理时间之间的差异。为了提升整体流水效率,需要让每个流处理单元各自处理对应步骤的处理时间大致相等,这样才能充分利用流水线方式来最大化利用多个流处理单元的算力资源。一般情况下,通过监控参考处理时间数组中的最大值和最小值之间的第一差距并且与第一预设阈值比较,可以有助于做到整体上的处理时间之间的差异在预期范围内或者设计范围内。也就是说,通过参考计算流程以及其展开后的多个步骤体现了同一任务批次的多个任务之间在逻辑流程或者计算过程上的共性,并且通过多个流处理单元与参考计算流程的多个步骤一一对应实现了按照这样的共性来配置流处理单元,这样有利于实现每个流处理单元各自处理参考计算流程中的对应步骤的处理时间大致相等。在实践中,考虑到参考计算流程与实际中的同一任务批次的多个任务之间存在一定差异性,例如具体的输入数据、数据位宽、参数配置以及硬件设备的实际状态等都可能引起差异性,为此还利用第一类流处理单元的特性来应对这样的差异性。在一些实施例中,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间,并比较该流处理单元的实际处理时间和所述参考处理时间数组中的该流处理单元的处理时间,以及根据比较结果选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构。如此,通过监控实际处理时间并且与参考处理时间数组中的处理时间进行比较,可以应对参考计算流程与实际中的同一任务批次的多个任务之间存在的差异性。在一些实施例中,根据所述比较结果选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构,包括:通过降低该一个或者多个第一类流处理单元用于执行与该一个或者多个第一类流处理单元对应的步骤的可执行资源从而增加与该一个或者多个第一类流处理单元对应的步骤的处理时间。这里,可执行资源影响处理时间。在提供参考计算流程以及参考计算流程的展开时,可以结合多个流处理单元各自的可执行资源的情况进行分配,例如将具有较多可执行资源的流处理单元用于对算力资源要求较高的步骤上,这样有利于实现每个流处理单元各自处理参考计算流程中的对应步骤的处理时间大致相等。参考处理时间数组可以作为比较对象,在实践中,当发现实际处理时间与作为比较对象的参考处理时间数组的偏差较大时,这可能是具体的输入数据、数据位宽、参数配置以及硬件设备的实际状态等引起的,这种偏差一般是暂时的、波动的,也因此可以通过一种动态调节机制去进行微调。例如可以分配更多可执行资源也就提供更多的算力资源给处理时间过长的流处理单元或者说实际处理时间要显著大于比较对象的流处理单元,或者,分配更少可执行资源也就是提供更少的算力资源给处理时间过短的流处理单元或者说实际处理时间要显著小于比较对象的流处理单元。一般情况下,分配更少可执行资源也就是提供更少的算力资源给处理时间过短的流处理单元,可以不用考虑设计上的可执行资源的最大可分配程度,这样在控制上比较简便。因此,通过降低该一个或者多个第一类流处理单元用于执行与该一个或者多个第一类流处理单元对应的步骤的可执行资源从而增加与该一个或者多个第一类流处理单元对应的步骤的处理时间,可以有效地实现流处理单元之间的负载均衡也就是使得每个流处理单元各自处理参考计算流程中的对应步骤的处理时间大致相等,有利于提高整体流水处理效率。
[0054] 在一些实施例中,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间中的最大值和最小值之间的第二差距,并且当该第二差距大于第二预设阈值时选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构从而减少该第二差距。上面提到,通过设定参考处理时间数组中的最大值和最小值之间的第一差距小于第一预设阈值,可以控制参考处理时间数组所体现的各个流处理单元处理相应步骤的处理时间之间的差异。考虑到参考计算流程与实际中的同一任务批次的多个任务之间存在一定差异性,需要结合实际处理时间进行调节,为此通过监控实际处理时间中的最大值和最小值之间的第二差距,以及当该第二差距大于第二预设阈值时选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构从而减少该第二差距。这样可以有效地实现流处理单元之间的负载均衡也就是使得每个流处理单元各自处理参考计算流程中的对应步骤的处理时间大致相等,有利于提高整体流水处理效率。另外,参考处理时间数组中的最大值和最小值之间的第一差距以及与之相比较的第一预设阈值体现了设计上的要求或者说基于参考计算流程的预期要求,而实际处理时间中的最大值和最小值之间的第二差距以及与之相比较的第二预设阈值体现了实际上的性能表现的要求或者说基于该流水计算装置的实际性能表现的要求。这两者可以同时存在,也就是既要求第一差距小于第一预设阈值也要求第二差距小于第二预设阈值。另外,第一预设阈值和/或第二预设阈值可以是预先设定的,或者可以是结合不同的计算场景来设定,从而考虑到了对不同的计算场景提出不同的设计上的要求和/或实际性能表现的要求。上面提到,在一些实施例中,根据计算场景确定该参考计算流程,然后基于该参考计算流程对第一类流处理单元进行重构,这样有利于结合具体的计算场景来提升整体流水处理效率。如此,在一些实施例中,可以既根据计算场景确定该参考计算流程,还根据计算场景确定第一预设阈值和/或第二预设阈值,更进一步地体现了结合具体的计算场景来提升整体流水处理效率。具体地,在一些实施例中,该第二预设阈值根据所述流水计算装置的计算场景设定。
[0055] 在一种可能的实施方式中,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间中的最大值,并比较该最大值的实际处理时间和所述参考处理时间数组中的具有最大值的实际处理时间的流处理单元的处理时间,以及根据比较结果选择性地对具有最大值的实际处理时间的流处理单元进行重构。如此,考虑到参考计算流程与实际中的同一任务批次的多个任务之间存在一定差异性,通过监控并比较该最大值的实际处理时间和所述参考处理时间数组中的具有最大值的实际处理时间的流处理单元的处理时间,可以有效地实现流处理单元之间的负载均衡也就是使得每个流处理单元各自处理参考计算流程中的对应步骤的处理时间大致相等,有利于提高整体流水处理效率。
[0056] 在一种可能的实施方式中,按照所述参考计算流程的多个步骤的先后次序,与所述多个步骤一一对应的所述多个流处理单元排列得到流处理单元序列,在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,所述流水计算装置监控所述流处理单元序列中的任意两个相邻流处理单元各自的实际处理时间之间的第三差距,并且当该差距超过第三预设阈值时对该两个相邻流处理单元中具有较小的实际处理时间的流处理单元进行重构以便降低该流处理单元用于执行与该流处理单元对应的步骤的可执行资源从而增加该流处理单元的实际处理时间。如此,考虑到参考计算流程与实际中的同一任务批次的多个任务之间存在一定差异性,通过监控所述流处理单元序列中的任意两个相邻流处理单元各自的实际处理时间之间的第三差距并与第三预设阈值比较,可以有效地实现流处理单元之间的负载均衡也就是使得每个流处理单元各自处理参考计算流程中的对应步骤的处理时间大致相等,有利于提高整体流水处理效率。
[0057] 在一种可能的实施方式中,所述多个流处理单元配置为直接互联或者通过内部总线连接。其中,图1示意性示出了所述多个流处理单元配置为直接互联。所述多个流处理单元配置为通过内部总线连接的情况,可以参考图2。
[0058] 在一种可能的实施方式中,所述至少一个第一类流处理单元包括至少一个FPGA和/或至少一个CGRA,所述多个流处理单元还包括至少一个第二类流处理单元且所述至少一个第二类流处理单元均不可重构,所述至少一个第二类流处理单元包括至少一个CPU和/或至少一个GPU。其中,第二类流处理单元是不可编程的或者说不可重构或者不可再配置的,示例性的第二类流处理单元的实例包括CPU和GPU等,还可以包括其它的非可编程器件。这里,第二类流处理单元因为自身的不可编程性,可以配置为处理参考计算流程中的固定步骤,特别是计算需求可以较好地预测的步骤,例如满足特定要求的参考计算流程的初始步骤和结束步骤。这样通过第一类流处理单元和第二类流处理单元一起构成该流水计算装置,可以满足各种复杂多变的计算需求。在一些实施例中,所述至少一个第二类流处理单元对应所述参考计算流程的初始步骤和结束步骤。在一些实施例中,所述至少一个第一类流处理单元中的每一个第一类流处理单元包括可配置逻辑块、可编程互联资源和可编程输入输出单元。在一些实施例中,所述参考计算流程是Paillier解密运算过程或者Paillier加密运算过程。应当理解的是,Paillier解密运算过程或者Paillier加密运算过程具有较为典型的算法并且展开后的步骤也有相对比较固定的计算需求,特别是初始步骤和结束步骤分别对应有较为明确的计算需求的操作。例如Paillier解密运算过程的初始步骤是对满足特定要求的经Paillier加密的密文进行特定的数学运算。因此,针对满足特定要求的参考计算流程,例如在特定行业场景下对初始步骤和结束步骤有明确的可预期的数学运算要求的任务,可以利用这样的特性来安排第二类流处理单元用于对应这样满足特定要求的参考计算流程的初始步骤和结束步骤,而安排第一类流处理单元用于对应中间的其它步骤。这样通过第一类流处理单元和第二类流处理单元一起构成该流水计算装置,可以满足各种复杂多变的计算需求。
[0059] 图2示出了本申请实施例提供的另一种实施方式的流水计算装置的框图。如图2所示,流水计算装置包括五个流处理单元,分别为流处理单元202,流处理单元204,流处理单元206,流处理单元208以及流处理单元210。并且,流水计算装置所包括的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元,或者说,多个流处理单元按照该特定次序获取输入数据进行处理后再提供输出数据。其中,多个流处理单元之间通过内部总线220连接并且通过内部总线220实现上述的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元。以图2为例,流处理单元202是该特定次序中的首个流处理单元或者说该流水计算装置的数据流向从流处理单元202开始,流处理单元202对获取的输入数据进行处理,流处理单元202进行处理后经过内部总线220提供输出数据给流处理单元204,流处理单元204进行处理后经过内部总线220提供输出数据给流处理单元206,流处理单元206进行处理后经过内部总线220提供输出数据给流处理单元208,流处理单元208进行处理后经过内部总线220提供输出数据给流处理单元210。内部总线220可以采用任意合适的结构、电路、组成或者标准,例如内部总线220可以是高速串行计算机扩展总线标准(peripheral component interconnect express,PCIE)。应当理解的是,图2所示的流水计算装置所包括的多个流处理单元仅为示例性,流水计算装置可以包括任意数量的流处理单元,在此不做具体限定。并且,图2所示的流水计算装置所包括的多个流处理单元之间的数据流向仅为示例性,只要满足数据流向是单向的特点,图2的流水计算装置还可以采用其它的数据流向,例如可以将流处理单元210作为首个流处理单元,再例如使得该特定次序为从流处理单元210开始再到流处理单元208再到流处理单元206再到流处理单元204最后到流处理单元202。
[0060] 请参阅图1和图2,图1的流水计算装置所包括的多个流处理单元之间按照该特定次序直接互联从而实现上述的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元;相对的,图2的流水计算装置所包括的多个流处理单元之间通过内部总线220连接并且通过内部总线220实现上述的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元。应当理解的是,本申请实施例的流水计算装置可以包括任意数量的流水处理单元,并且这些流水处理单元之间可以参考图1所示的方式直接互联或者可以参考图2所示的方式通过内部总线连接,还可以采用直接互联和内部总线的任意可能的组合方式,例如一部分流水处理单元之间直接互联而另一部分流水处理单元之间通过内部总线连接。
[0061] 图2所示的流水计算装置,与图1所示的流水计算装置,主要区别在于多个流处理单元之间的连接方式,并且在其他细节上基本一致,在此不再赘述。图2所示的流水计算装置于隐私计算、隐私数据和联邦学习。图2所示的流水计算装置的所述多个流处理单元包括至少一个第一类流处理单元,所述至少一个第一类流处理单元中的每一个第一类流处理单元至少部分地可重构。所述多个流处理单元与参考计算流程的多个步骤一一对应,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。所述多个流处理单元用于流水化处理归属于同一任务批次的一个或者多个任务,归属于该同一任务批次的任意任务的计算流程可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤,所述多个流处理单元中的每一个流处理单元用于处理所述一个或者多个任务中的每一个任务的计算流程按照所述参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。
[0062] 上面提到,图2所示的流水计算装置的多个流处理单元之间通过内部总线220连接从而实现上述的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元。应当理解的是,取决于具体的流处理单元与参考计算流程的步骤之间的对应关系,可以确定相应的特定次序和数据流向,并且可以相应地调整多个流处理单元通过内部总线220实现的连接关系。例如,可以使得与第1步骤对应的流处理单元通过内部总线220与第2步骤对应的流处理单元连接。
[0063] 图3示出了本申请实施例提供的另一种实施方式的流水计算装置的框图。如图3所示,流水计算装置包括五个流处理单元,分别为CPU 302,FPGA 304,FPGA 306,FPGA 308以及CPU 310。这里,CPU指的是中央处理器(Central Processing Unit,CPU)的常见缩写,FPGA指的是现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)的常见缩写。图3所示的CPU 302,FPGA 304,FPGA 306,FPGA 308以及CPU 310也可以理解为中央处理器
302、现场可编程逻辑门阵列304、现场可编程逻辑门阵列306、现场可编程逻辑门阵列308以及中央处理器310。出于表述简洁的目的,用常见缩写替代这些中文名称。并且,流水计算装置所包括的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元,或者说,多个流处理单元按照该特定次序获取输入数据进行处理后再提供输出数据。以图3为例,CPU 302是该特定次序中的首个流处理单元或者说该流水计算装置的数据流向从CPU 302开始,CPU 302对获取的输入数据进行处理,CPU 302进行处理后提供输出数据给FPGA 304,FPGA 304进行处理后提供输出数据给FPGA 306,FPGA 306进行处理后提供输出数据给FPGA 308,FPGA 308进行处理后提供输出数据给CPU 310。图3的流水计算装置所包括的多个流处理单元之间按照该特定次序以串联形式连接,或者说,多个流处理单元之间按照该特定次序直接互联从而实现上述的多个流处理单元之间的数据流向按照特定次序单向地从一个流处理单元传输到另一个流处理单元。
[0064] 请继续参阅图3,图3的流水计算装置中的CPU 302和CPU 310不可重构,或者说属于非可编程器件。而图3的流水计算装置中的FPGA 304,FPGA 306,FPGA 308可重构,或者说属于可编程器件。FPGA 304,FPGA 306,FPGA 308为第一类流处理单元。CPU 302和CPU 310为第二类流处理单元。
[0065] 图4示出了本申请实施例提供的一种实施方式的流处理单元的结构框图。如图4所示,流处理单元包括接收模块402,发送模块404,任务管理模块406,内存408,数据分发合并模块410,以及计算引擎420。其中,接收模块402和发送模块404可以合并为一个模块或者如图4的作为单独提供的模块。接收模块402用于接收待处理的数据例如上一个流处理单元的计算结果,发送模块404用于传输处理结果例如传输给下一个流处理单元。接收模块402还可以将所接收的待处理的数据的数据格式例如SERDES传输的数据格式转换成内部数据格式。发送模块404还可以将计算结果的内部数据格式转换成SERDES传输的数据格式。任务管理模块406用于接收和处理下发的计算命令,从内存408中读取数据和向内存408写入计算结果,从缓存中获取上一步计算结果,以及将需要计算的数据发送到数据分发合并模块410。数据分发合并模块410用于数据分发和数据合并,其中数据分发指的是对任务管理模块406发送过来的数据进行处理,例如位宽转换,并将数据发送到计算引擎420;数据合并指的是对计算引擎420的计算结果进行接收操作,并进行如位宽转换等处理,然后将计算结果传输给任务管理模块406。计算引擎420可以包括多个子引擎,每个子引擎独立工作并通过数据分发合并模块410获取数据及上传计算结果。
[0066] 应当理解的是,图4所示的流处理单元仅为示例性,只要能满足本申请实施例所提及的流水计算装置的基本原理及运行机制,可以采用具有任意结构和功能组成的流处理单元,在此不做具体限定。
[0067] 图5示出了本申请实施例提供的流水计算方法的流程示意图。如图5所示,流水计算方法包括以下步骤。
[0068] 步骤S510:提供多个流处理单元。
[0069] 其中,在步骤S510,所述多个流处理单元包括至少一个第一类流处理单元,所述至少一个第一类流处理单元中的每一个第一类流处理单元至少部分地可重构,所述多个流处理单元与参考计算流程的多个步骤一一对应,所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间。
[0070] 步骤S520:获得同一任务批次的多个任务。
[0071] 其中,在步骤S520,归属于该同一任务批次的多个任务的计算流程分别可按照所述参考计算流程展开为与所述参考计算流程的多个步骤一一对应的多个步骤。
[0072] 步骤S530:针对所述多个任务中的每一个任务,通过所述多个流处理单元流水化处理该任务,并且所述多个流处理单元中的每一个流处理单元用于处理该任务的计算流程按照参考计算流程展开后的多个步骤中的与该流处理单元对应的步骤。
[0073] 图5所示的流水计算方法,通过参考计算流程以及其展开后的多个步骤体现了同一任务批次的多个任务之间在逻辑流程或者计算过程上的共性,并且通过多个流处理单元与参考计算流程的多个步骤一一对应实现了按照这样的共性来配置流处理单元,进一步地考虑到参考计算流程与同一任务批次的多个任务之间存在一定差异性,通过所述至少一个第一类流处理单元中的每一个第一类流处理单元配置为可被重构以针对所述参考计算流程中的与该第一类流处理单元对应的步骤优化该第一类流处理单元执行所述参考计算流程中的与该第一类流处理单元对应的步骤的处理时间,从而克服上述差异性,进而有利于利用流水线方式来最大化利用多个流处理单元的算力资源,提升整体流水处理效率和资源利用效率。
[0074] 在一种可能的实施方式中,所述多个流处理单元中的每一个流处理单元各自执行所述参考计算流程中的与该流处理单元对应的步骤的处理时间一起组成参考处理时间数组,所述参考处理时间数组中的最大值和最小值之间的第一差距小于第一预设阈值。
[0075] 在一种可能的实施方式中,所述流水计算方法还包括:在所述多个流处理单元流水化处理所述一个或者多个任务的过程中,监控所述多个流处理单元中的每一个流处理单元各自执行与该流处理单元对应的步骤的实际处理时间,并比较该流处理单元的实际处理时间和所述参考处理时间数组中的该流处理单元的处理时间,以及根据比较结果选择性地对所述至少一个第一类流处理单元中的一个或者多个第一类流处理单元进行重构。
[0076] 应当理解的是,上述方法可以通过相应的执行主体或者载体来实现。在一些示例性实施例中,一种非瞬时性计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,该计算机指令被处理器执行时实现上述方法以及上述任意实施例、实施方式或者它们的组合。在一些示例性实施例中,一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现上述方法以及上述任意实施例、实施方式或者它们的组合。
[0077] 本申请提供的具体实施例可以用硬件,软件,固件或固态逻辑电路中的任何一种或组合来实现,并且可以结合信号处理,控制和/或专用电路来实现。本申请具体实施例提供的设备或装置可以包括一个或多个处理器,例如微处理器,控制器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)等,这些处理器处理各种计算机可执行指令从而控制设备或装置的操作。本申请具体实施例提供的设备或装置可以包括将各个组件耦合在一起的系统总线或数据传输系统。系统总线可以包括不同总线结构中的任何一种或不同总线结构的组合,例如存储器总线或存储器控制器,外围总线,通用串行总线和/或利用多种总线体系结构中的任何一种的处理器或本地总线。本申请具体实施例提供的设备或装置可以是单独提供,也可以是系统的一部分,也可以是其它设备或装置的一部分。
[0078] 本申请提供的具体实施例可以包括计算机可读存储介质或与计算机可读存储介质相结合,例如能够提供非暂时性数据存储的一个或多个存储设备。计算机可读存储介质/存储设备可以被配置为保存数据,程序器和/或指令,这些数据,程序器和/或指令在由本申请具体实施例提供的设备或装置的处理器执行时使这些设备或装置实现有关操作。计算机可读存储介质/存储设备可以包括以下一个或多个特征:易失性,非易失性,动态,静态,可读/写,只读,随机访问,顺序访问,位置可寻址性,文件可寻址性和内容可寻址性。在一个或多个示例性实施例中,计算机可读存储介质/存储设备可以被集成到本申请具体实施例提供的设备或装置中或属于公共系统。计算机可读存储介质/存储设备可以包括光存储设备,半导体存储设备和/或磁存储设备等等,也可以包括随机存取存储器(RAM),闪存,只读存储器(ROM),可擦可编程只读存储器(EPROM),电可擦可编程只读存储器(EEPROM),寄存器,硬盘,可移动磁盘,可记录和/或可重写光盘(CD),数字多功能光盘(DVD),大容量存储介质设备或任何其他形式的合适存储介质。
[0079] 以上是本申请实施例的实施方式,应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本申请实施例以及附图所示的结构并不构成对有关装置或系统的具体限定。在本申请另一些实施例中,有关装置或系统可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。