CN113468099A - 可重构计算装置、处理器及方法 - Google Patents
可重构计算装置、处理器及方法 Download PDFInfo
- Publication number
- CN113468099A CN113468099A CN202110600064.5A CN202110600064A CN113468099A CN 113468099 A CN113468099 A CN 113468099A CN 202110600064 A CN202110600064 A CN 202110600064A CN 113468099 A CN113468099 A CN 113468099A
- Authority
- CN
- China
- Prior art keywords
- reconfigurable
- data
- calculation
- processed
- computing
- 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.)
- Granted
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/723—Modular exponentiation
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
Abstract
本申请涉及一种可重构计算装置、处理器及方法,用于联邦学习和隐私计算。所述可重构计算装置包括:静态可重构部分,其中,所述静态可重构部分用于接收待处理数据和运算场景并配置为在所述可重构计算装置上电前根据所述运算场景进行功能重构;和动态可重构部分,其中,所述动态可重构部分用于执行所述待处理数据在所述运算场景下的计算并配置为在所述可重构计算装置进行计算中进行功能重构。其中,所述动态可重构部分的计算资源包括用于模幂计算的第一部分计算资源和用于模乘计算的第二部分计算资源,所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定。如此,保持较高的计算性能同时提高资源利用率。
Description
技术领域
本申请涉及数据安全和隐私保护技术领域,具体涉及一种可重构计算装置、处理器及方法,应用于联邦学习和隐私计算。
背景技术
随着人工智能和大数据挖掘分析等应用领域的发展,对数据量的需求越来越大。例如训练人工智能的应用模型需要使用大量带有合适的数据标签或者特征数值的训练数据。高质量的数据往往来源于经营活动中产生和积累的应用数据。但是应用数据往往分散在不同的组织和个体手上,例如交易数据分散在各个金融机构,医疗诊断数据分散在各个医疗机构。跨行业跨领域的应用数据往往也是分散的,例如互联网领域的社交属性数据和电商交易数据往往由不同实体掌控。随着数据所有权的重要性、用户隐私和数据安全等受到更多重视,也随着法律法规对数据收集处理提出更严格的约束和要求,掌握应用数据的各个组织或个体往往不愿意或者没有合适手段进行彼此之间的合作,从而很难让各自掌握的应用数据共同发挥作用。这种数据分享和协同合作方面的困境被称之为数据孤岛现象。为了解决跨行业跨组织的数据合作难题,尤其是关键的隐私保护及数据安全的问题,提出了联邦学习的概念。联邦学习指的是拥有数据的各个参与方,在不共享受保护的隐私数据且自有数据不传递到外部的前提下,通过加密的方式交换模型相关信息从而实现协同优化联邦学习模型。其中,联邦学习根据训练数据在不同参与方之间的数据特征空间和样本空间的分布情况,可以划分为在数据特征空间重叠较大而在样本空间重叠较小的横向联邦学习,在数据特征空间重叠较小而在样本空间重叠较大的纵向联邦学习,以及在数据特征空间和样本空间均重叠较小的联邦迁移学习。
在联邦学习相关应用场景中,拥有数据的各个参与方通过隐私保护技术来保护数据安全和用户隐私,例如采用同态加密方法对原始数据也叫明文进行加密后再将加密后的密态数据也叫密文用在模型训练、梯度计算、参数计算等。同态加密方法允许直接在密文上进行代数运算等有效操作例如加法运算和乘法运算,并且直接对密文进行计算的结果等效于解密后对明文进行计算的结果,从而仅根据公钥和密文进行计算而无需知道密钥。这些数据加密技术和密态运算技术统称为隐私计算。联邦学习和隐私计算涉及多种不同的算法,例如RSA加密算法、Paillier加密算法、DH算法,以及DSA算法和ElGama算法等,也涉及大量复杂的算子操作,例如同态加密、密态加法、密态乘法和模幂计算等,而且这些复杂的算子操作所涉及的数据位宽往往是大整数位宽如1024比特或者2048比特。根据具体的应用场景的需求,所涉及的具体算法,联邦学习和隐私计算所需要处理的算子操作的组合和比例也不一样,例如在RSA算法相关应用场景下需要处理大量的模幂计算的算子操作。为此,需要一种用于联邦学习和隐私计算的可重构计算装置、处理器及方法,能够应对具体应用中复杂多变的需求并能在保持较高的计算性能同时最大限度利用计算资源和存储资源从而降低能耗。
发明内容
本申请实施例为了解决能够应对具体应用中复杂多变的需求并能在保持较高的计算性能同时最大限度利用计算资源和存储资源从而降低能耗这一难题,通过提供了一种用于联邦学习和隐私计算的可重构计算装置、处理器及方法,从而实现了适应数据位宽变化的适配性和灵活性,有利于提高计算速度和资源利用率。
第一方面,本申请实施例提供了一种可重构计算装置,应用于联邦学习和隐私计算。所述可重构计算装置包括:静态可重构部分,其中,所述静态可重构部分用于接收待处理数据和运算场景并配置为在所述可重构计算装置上电前根据所述运算场景进行功能重构;和动态可重构部分,其中,所述动态可重构部分用于执行所述待处理数据在所述运算场景下的计算并配置为在所述可重构计算装置进行计算中进行功能重构。其中,所述动态可重构部分的计算资源包括用于模幂计算的第一部分计算资源和用于模乘计算的第二部分计算资源,所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定。
第一方面所描述的技术方案,实现了适应数据位宽变化的适配性和灵活性,有利于提高计算速度和资源利用率。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定,包括:设定多个参考区间,其中,所述多个参考区间与多个预设比例一一对应;和从所述多个参考区间中选择所述待处理数据的位宽所在的参考区间以及与该参考区间对应的预设比例,所述第一部分计算资源相对于所述第二部分计算资源的比例是该预设比例。如此,实现了更好地适应待处理数据的位宽。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了所述静态可重构部分还包括辅助计算模块,所述辅助计算模块配置成可执行所述多种基础算子操作中的除模幂计算和模乘计算以外的基础算子操作的操作。如此,等效于提高了动态可重构部分用于模幂计算和模乘计算的计算资源的比例,从而提高了通过动态调整动态可重构部分来适应数据位宽变化的适配性和灵活性。
第二方面,本申请实施例提供了一种动态部分重构处理器,所述动态部分重构处理器包括:静态可重构部分,其中,所述静态可重构部分包括辅助计算模块;和动态可重构部分,其中,所述动态可重构部分包括多个功能模块,所述多个功能模块的每一个功能模块包括至少一个具有动态可重构功能的可重构计算处理器。其中,所述动态部分重构处理器的功能重构包括:
在初始化所述动态部分重构处理器时,根据运算场景确定所述辅助计算模块的功能,所述多个功能模块各自的功能以及所述多个功能模块各自所包括的可重构计算处理器的个数;和在进行所述运算场景的计算中,根据待处理数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数和所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数。
第二方面所描述的技术方案,实现了适应数据位宽变化的适配性和灵活性,有利于提高计算速度和资源利用率。
第三方面,本申请实施例提供了一种可重构计算装置的控制方法,所述可重构计算装置包括静态可重构部分和动态可重构部分,所述动态可重构部分包括多个功能模块。所述方法包括:根据运算场景确定所述静态可重构部分的功能,所述多个功能模块各自的功能以及所述多个功能模块各自所对应的计算资源;以及在进行所述运算场景的计算中,根据待处理数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所对应的计算资源相对于所述多个功能模块中用于模乘计算的功能模块所对应的计算资源的比例。
第三方面所描述的技术方案,实现了适应数据位宽变化的适配性和灵活性,有利于提高计算速度和资源利用率。
附图说明
为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1示出了本申请实施例提供的模幂计算引擎的结构框图。
图2示出了本申请实施例提供的利用图1所示的模幂计算引擎进行模幂计算的方法的流程示意图。
图3示出了本申请实施例提供的一种实施方式的可重构计算装置的结构框图。
图4示出了本申请实施例提供的另一种实施方式的可重构计算装置的结构框图。
图5示出了本申请实施例提供的一种实施方式的动态部分重构处理器的结构框图。
图6示出了本申请实施例提供的另一种实施方式的动态部分重构处理器的结构框图。
图7示出了本申请实施例提供的可重构计算装置的控制方法的流程示意图。
具体实施方式
本申请实施例为了解决能够应对具体应用中复杂多变的需求并能在保持较高的计算性能同时最大限度利用计算资源和存储资源从而降低能耗这一难题,提供了一种用于联邦学习和隐私计算的可重构计算装置、处理器及方法。所述可重构计算装置包括:静态可重构部分,其中,所述静态可重构部分用于接收待处理数据和运算场景并配置为在所述可重构计算装置上电前根据所述运算场景进行功能重构;和动态可重构部分,其中,所述动态可重构部分用于执行所述待处理数据在所述运算场景下的计算并配置为在所述可重构计算装置进行计算中进行功能重构。其中,所述动态可重构部分的计算资源包括用于模幂计算的第一部分计算资源和用于模乘计算的第二部分计算资源,所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定。如此,实现了适应数据位宽变化的适配性和灵活性,有利于提高计算速度和资源利用率。
本申请实施例可用于以下应用场景,包括但是不限于,多方安全计算、与联邦学习有关的机器学习模型训练、数据安全、隐私保护或者应用隐私计算框架或算法的其它应用场景等。
本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。
请参阅图1,图1示出了本申请实施例提供的模幂计算引擎的结构框图。如图1所示,模幂计算引擎100包括模幂控制单元110,模乘计算单元120,参数X1选择器130和参数Y1选择器140。其中,参数X1选择器130提供参数X1到模乘计算单元120,参数Y1选择器140提供参数Y1到模乘计算单元120,模幂控制单元110提供模数N1到模乘计算单元120,模乘计算单元120利用参数X1和参数Y1以及模数N1进行模乘计算从而得到模乘计算结果Z1。也就是说,参数X1和参数Y1分别表示用于模乘计算的两个参数,模数N1表示进行取模运算的模数。参数X1选择器130和参数Y1选择器140分别选择相应的参数X1和参数Y1,模乘计算单元120每次接收被选择的参数X1和参数Y1,进行模乘计算并将每次模乘计算结果Z1反馈回模幂控制单元110,从而实现了复用模乘计算单元120进行多次模乘计算。模幂控制单元110还包括模数N1存储器111用于存储模数N1;参数R1存储器112用于存储参数R1,参数R1用于蒙哥马利化;幂底数C1存储器113用于存储幂底数C1;蒙哥马利化幂底数MC1存储器114用于存储蒙哥马利化幂底数MC1;以及蒙哥马利模乘结果U1存储器115用于存储蒙哥马利模乘结果U1。应当理解的是,模乘计算单元120每次进行模乘计算结果得到的结果Z1可以作为蒙哥马利模乘结果U1被反馈回模幂控制单元110后存入蒙哥马利模乘结果U1存储器115并更新所存储的蒙哥马利模乘结果U1,或者可以作为蒙哥马利化幂底数MC1存入蒙哥马利化幂底数MC1存储器114并更新所存储的蒙哥马利化幂底数MC1。
请继续参阅图1,参数X1选择器130从模幂控制单元110接收三个参数:幂底数C1存储器113所存储的幂底数C1,蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1,以及正整数1。参数Y1选择器140从模幂控制单元110接收三个参数:参数R1存储器112所存储的参数R1,蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1,以及蒙哥马利化幂底数MC1存储器114所存储的蒙哥马利化幂底数MC1。模幂计算引擎100通过让参数X1选择器130和参数Y1选择器140来选择性地接收不同的输入作为参数X1和参数Y1,并将参数X1和参数Y1输入到模乘计算单元120进行模乘计算。如此,通过设置参数X1选择器130和参数Y1选择器140来分别对不同的参数组合进行接收和选择,从而有利于提高运算效率和灵活性。
应当理解的是,通过灵活配置模幂计算引擎100的参数X1选择器130和参数Y1选择器140来分别对不同的参数组合进行接收和选择,可以将模幂计算转换成多次模乘计算,从而可以复用模乘计算单元120。并且,可以通过多个并行的模幂计算引擎100进行高效的并行计算,从而提高处理速度。并且,可以选择性的将多个并行的模幂计算引擎100所提供的并行计算与蒙哥马利化模块、混淆运算模块或者去蒙哥马利化模块的串行计算结合,从而实现并行操作和串行操作的各种组合,有利于提高密态运算过程中高维度向量和矩阵的运算效率,还能够实现更丰富形式的同态加密密态下的密文运算。另外,通过将同态加密密态下的密文运算式拆分成密文乘法运算和密文加法运算的组合,再将密文乘法运算和密文加法运算分别转换成多次模幂计算/模乘计算的组合,从而可以高效并行处理联邦学习应用场景中涉及的同态加密密文运算需求。
请参阅图2,图2示出了本申请实施例提供的利用图1所示的模幂计算引擎进行模幂计算的方法的流程示意图。如图2所示,模幂计算的方法200包括以下步骤。其中,相关运算参考下列公式(1)、公式(2)和公式(3)。
ABmod N1 (1)
U0=2nmod N1 (2)
R1=22hmod N1 (3)
在公式(1)中,A表示幂底数;B表示幂指数;mod表示取模运算;N1表示模数。公式(1)表示根据幂底数A、幂指数B和模数N1进行模幂计算。应当理解的是,在一些示例性实施例中,公式(1)所表示的模幂计算可以具有特定的含义,例如同态加密密态下的密文乘法运算是明文数据和密文数据的乘法并且可以等效为以幂指数B作为明文,以幂底数A作为密文而以密钥作为模数的模幂计算。公式(2)和公式(3)是关于公式(1)的模幂计算所用参数的计算方式。在公式(2)和公式(3)中,U0表示平方乘算法迭代过程中蒙哥马利模乘结果U1的初始值;R1表示用于计算幂底数A的蒙哥马利化时需要用到的参数;mod表示取模运算;N表示模数;n表示模数N的实际位宽;2n表示模数N的实际位宽n的两倍位宽。下面结合公式(1)、公式(2)和公式(3)详细说明模幂计算的方法200的各个步骤。
应当理解的是,可以通过多个并行的模幂计算引擎100进行高效的并行计算。具体地,可以接收同批次的幂指数B和模数N,并计算初始参数U0和参数R1,将共有的初始参数U0、参数R1、幂指数B和模数N1共享到各个并行的模幂计算引擎,以及将幂底数A均匀分发到各个模幂计算引擎。各个并行的模幂计算引擎通过各自所接收的数据按照下面的模幂计算的方法进行操作。为了能协同调用各个并行的模幂计算引擎进行并行计算,需要共享用于同批次并行处理的参数,包括初始参数U1、参数R1、幂指数B和模数N1。针对幂底数A,则需要将幂底数A均匀地分发到各个模幂计算引擎。其中,初始参数U1和参数R1的计算分别参考上述公式(2)和(3)。其中,模数N1对应图1所示的模数N1存储器111所存储的模数N1。下面的步骤针对多个并行的模幂计算引擎100中的一个模幂计算引擎100进行说明,该模幂计算引擎100所接收的幂底数A可以理解为幂底数A被均匀分发后该模幂计算引擎100所接收的幂底数。
步骤S210:将幂底数A、参数R1以及模数N1输入到模乘计算单元进行模乘计算,得到蒙哥马利化幂底数MA。
其中,请参阅图1所示的模幂计算引擎100的结构,在步骤S210进行幂底数A的蒙哥马利化,选择幂底数A作为参数X1(对应幂底数C1存储器113所存储的幂底数C1)和选择参数R1作为参数Y1(对应参数R1存储器112所存储的参数R1),进行模乘计算的输出结果为蒙哥马利化幂底数MA(对应蒙哥马利化幂底数MC1存储器114所存储的幂底数MC1)。
步骤S212:将蒙哥马利模乘结果U1和模数N1输入到模乘计算单元进行模乘计算,用得到的模乘计算结果更新蒙哥马利模乘结果U1,其中,蒙哥马利模乘结果U1的初始值是初始参数U0。
其中,请参阅图1所示的模幂计算引擎100的结构,在步骤S212进行平方乘算法迭代过程中的第一次模乘计算,选择蒙哥马利模乘结果U1作为参数X1(对应蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1)和选择蒙哥马利化幂底数MA作为参数Y1(对应蒙哥马利化幂底数MC1存储器114所存储的蒙哥马利化幂底数MC1),进行模乘计算的输出结果被用来更新蒙哥马利模乘结果U1。在初次迭代中进行第一次模乘计算时,用平方乘算法迭代过程中蒙哥马利模乘结果U1的初始值U0作为参数X1进行计算。
步骤S214:判断二进制化的幂指数B的当前最高位的比特位值是否为1。如果是1则执行步骤S216,如果不为1则执行步骤S218。
其中,根据二进制化后的幂指数B的当前最高位的比特位值是否为1来判断是否执行第二次模乘计算。如果幂指数B的当前最高位的比特位值是1则进行第二次模乘计算并执行步骤S216,如果幂指数B的当前最高位的比特位值不为1则不进行第二次模乘计算并执行步骤S218。
步骤S216:将蒙哥马利模乘结果U1、蒙哥马利化幂底数MA和模数N1输入到模乘计算单元进行模乘计算,用得到的模乘计算结果更新蒙哥马利模乘结果U1。
其中,请参阅图1所示的模幂计算引擎100的结构,在步骤S216进行平方乘算法迭代过程中的第二次模乘计算,选择蒙哥马利模乘结果U1作为参数X1(对应蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1)和选择蒙哥马利化幂底数MA作为参数Y1(对应蒙哥马利化幂底数MC1存储器114所存储的蒙哥马利化幂底数MC1),进行模乘计算的输出结果被用来更新蒙哥马利模乘结果U1。
步骤S218:将二进制化的幂指数B向着最低比特位位移一位。
其中,在一种可能的实施方式中,从二进制化的幂指数B的最高位的1(非零比特位)开始向最低位逐位移位。在另一种可能的实施方式中,从二进制化的幂指数B的最高位(可能为零或者非零比特位)开始向最低位逐位移位。
步骤S220:判断二进制化的幂指数B的所有比特位是否都已经移位。如果所有比特位都已经移位则意味着模幂计算结束并执行步骤S222,如果还有比特位没有移位则执行步骤S212。
其中,通过循环执行步骤S212至步骤S220,逐位移位二进制化的幂指数B,直到二进制化的幂指数B的所有比特位都已经移位,也就是已经移位到最低位。另外,在每一个比特位根据其值是1或0来分别进行两次模乘计算或者一次模乘计算。当二进制化的幂指数B的所有比特位都已经移位,则意味着循环结束并执行步骤S222,否则返回步骤S212继续执行。
步骤S222:输出蒙哥马利模乘结果U1;或者将正整数1、蒙哥马利模乘结果U1和模数N1输入到模乘计算单元进行模乘计算,用得到的模乘计算结果更新蒙哥马利模乘结果U1之后再输出蒙哥马利模乘结果U1。
其中,在步骤S222,可以直接输出蒙哥马利化域下的模幂结果也就是步骤S220之后的蒙哥马利模乘结果U1,或者可以进行去蒙哥马利化并输出去蒙哥马利化的模幂结果。如果要进行去蒙哥马利化则选择正整数1作为参数X1和选择蒙哥马利模乘结果U1作为参数Y1(对应蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1)进行模乘计算。应当理解的是,如果通过多个并行的模幂计算引擎进行并行处理,在执行完步骤S222并输出模幂结果后,各个并行的模幂计算引擎各自的结束时间可能不一致,当同批次的各个并行的模幂计算引擎均结束各自的模幂计算后,可以将各个并行的模幂计算引擎所输出的计算结果进行合并,得到完整的模幂计算结果。然后可以根据算子模式的需求判断是否需要将多个并行的模幂计算引擎所提供的并行计算与蒙哥马利化模块、混淆运算模块或者去蒙哥马利化模块的串行计算结合。
如此,通过平方乘和蒙哥马利算法,将模幂计算转换成多次模乘计算,通过在每次迭代过程中将二进制化的幂指数向着最低比特位位移一位,并在每一个比特位根据其值是1或0来分别进行两次模乘计算或者一次模乘计算,以及通过对每一次模乘计算的输入参数的选择,以及利用模乘计算结果更新蒙哥马利模乘结果,从而实现了通过多个并行的模幂计算引擎进行高效的模幂计算。另外,该模幂计算可以采用基于蒙哥马利化域的平方乘计算和基于蒙哥马利化域的大数模乘计算实现,从而可以利用高并行计算和流水特性来提高整体算力,例如利用多GPU并行计算或者多任务并行处理系统。另外,可以避开直接对大整数取模运算,而以乘法、加法和移位运算代替,从而减少运算复杂度和提高计算效率。另外,在使用基于蒙哥马利化域的大数模乘计算实现时,可以对位宽、流水级数和/或循环次数进行配置,从而可以在考虑硬件资源、器件等级、流水级数及主频因素的情况下,对位宽大小、流水级数和/或循环次数进行调整,由此实现最佳的性能提升比。
请参阅图3,图3示出了本申请实施例提供的一种实施方式的可重构计算装置的结构框图。如图3所示,可重构计算装置300包括静态可重构部分310和动态可重构部分320。其中,静态可重构部分310是基于静态可重构技术实现,这意味着需要在初始化或者上电前进行配置并且在计算过程中无法进行功能重构。在一种可能的实施方式中,可以通过现场可编程门阵列(Field Programmable Gate Array,FPGA)技术,硬件描述语言或者其它合适工具来实现静态可重构部分310。动态可重构部分320是基于动态可重构技术特别是动态部分可重构技术实现,这意味着在计算过程中可以进行功能重构。图3所示的动态可重构部分320包括多个动态可重构单元(Partial Reconfiguration,PR)。每个PR可以理解成具有动态可重构功能的模块,可以分别被重构成不同的功能引擎来执行不同的计算任务。每个PR包括必要的运算电路、存储器和接口电路等来构成可重构的数据通路,并且通过改变每个PR各自的数据通路的配置可以改变可重构的数据通路处理数据流的功能,从而使得可以通过改变这些PR的配置从而决定每个PR所执行的计算任务。例如,可以分配一些PR用于模幂计算,一些PR用于模乘计算,一些PR用于除法运算。在一种可能的实施方式中,动态可重构部分320所包括的各个PR具有相同的结构和功能并可以被理解成同一种类型的可重构计算处理器,该可重构计算处理器具有相同的运算单元的最大数据位宽也即粒度,且具有位宽自适应调整功能以便应对不同位宽的待处理数据。在另一种可能的实施方式中,动态可重构部分320所包括的各个PR可以具有不同的粒度,有些PR的运算单元的最大数据位宽可以大于其它PR的运算单元的最大数据位宽,也就是说有些PR的粒度比其它PR的粒度要粗。在一种可能的实施方式中,动态可重构部分320内部被划分成多个区域,每个区域包括至少一个PR,每个区域可以分别重构成不同的功能引擎来执行不同计算任务,每个区域的功能重构和计算互不影响。因此,某个区域内的PR的功能重构不影响其他区域的PR的计算。在另一种可能的实施方式中,动态可重构部分320整体被看做一个可动态配置区域,每次功能重构都意味着整个可动态配置区域也即动态可重构部分320整体进行功能重构,而可动态配置区域的功能重构不影响非可动态配置区域的任务。也就是说,动态可重构部分320的功能重构不影响静态可重构部分310的任务。
请继续参阅图3,静态可重构部分310包括接口模块311,存储模块312和管理模块313。其中,可重构计算装置300与主处理器301和主存储器302,接口模块311用于向主处理器301和主存储器302接收和发送数据。在一种可能的实施方式中,接口模块311是符合高速串行计算机扩展总线标准(Peripheral Component Interconnect Express,PCIE)的数据传输模块,并且可以具有直接存储器(Direct Memory Access,DMA)访问功能。存储模块312与接口模块311连接用于存储与可重构计算装置300要处理的任务和数据相关的数据和控制命令。管理模块313用于管理待处理数据和处理结果,并将处理结果发送给接口模块311。在初始化或者上电前,静态可重构部分310可以通过静态可重构技术而具有相应的结构,内部可以划分成用于执行不同任务的功能模块也即接口模块311,存储模块312和管理模块313。静态可重构部分310从主处理器301和主存储器302接收待处理数据和任务,例如静态可重构部分310可以接收密文并对密文进行Paillier解密,再例如静态可重构部分310可以接收密文并对密文进行密态加法。接口模块311可以从外部流水式接收大量待处理数据,并将这些待处理数据存入存储模块312中。下面结合联邦学习和隐私计算的应用场景来说明可重构计算装置300的运作原理。
请继续参阅图3,可重构计算装置300可用于联邦学习和隐私计算下各种需求,用于处理多种不同的算法,例如RSA加密算法、Paillier加密算法、DH算法,以及DSA算法和ElGama算法等,也可以用于处理各种复杂的算子操作,例如同态加密、密态加法、密态乘法和模幂计算等,而待处理数据的位宽也是变化的。因此,接口模块311从外部接收的待处理数据和需要进行处理的算子操作是变化的,其中影响整体计算速度的因素包括数据位宽的变化和算子操作的组合。当待处理数据的位宽大于256个比特时,模幂计算的时间变得大于模乘计算时间,特别是在大整数位宽数据如1024比特或者2048比特的情况,这意味着大位宽数据下模幂计算以及基于模幂计算的其它算子操作成为计算速度的瓶颈;而当待处理数据的位宽小于256个比特时,模幂计算的时间要远远小于模乘计算时间,特别是在小位宽数据如16比特或者32比特的情况,这意味着小位宽数据下模乘计算以及基于模乘计算的其它算子操作成为计算速度的瓶颈。另一方面,结合图1所示的模幂计算引擎和图2所示的进行模幂计算的方法,模幂计算可以通过并行的多个模幂计算引擎以及参数共享进行高效的并行计算,从而减少大整数位宽数据下模幂计算对整体计算速度的影响。但是,相对于通过并行计算提高模幂计算的速度,模乘计算以及很多算子操作如除法运算、减法运算、乘法运算等只能通过串行处理而无法通过并行计算来提高速度。例如基于平方乘算法的蒙哥马利化域模乘运算需要对进行大整数模乘运算的待处理数据依次进行蒙哥马利化运算、混淆运算以及去蒙哥马利化运算。再例如,Paillier加密算法需要对待处理数据依次进行大数乘法、大数加法、模幂计算以及模乘计算。因此,根据待处理数据的位宽,待处理数据所对应的算子操作的类型,以及算法所对应的算子操作的组合,可重构计算装置300通过提供不同的计算资源和存储资源可以针对性地提高整体计算速度并提高资源利用率。在一种可能的实施方式中,可重构计算装置300的动态可重构部分320根据待处理数据的位宽来调整用于模幂计算的PR和用于模乘计算的PR各自所占的比例。例如,假设动态可重构部分320有100个PR,每个PR具有相同的计算能力,当待处理数据的位宽是大整数位宽(大于256比特)时,可重构计算装置300分配50个PR用于模幂计算,20个PR用于模乘计算,30个PR用于其他算子操作;当待处理数据的位宽是小整数位宽(小于256比特)时,可重构计算装置300分配20个PR用于模幂计算,50个PR用于模乘计算,30个PR用于其他算子操作。如此,通过在处理大整数位宽数据时分配较多PR用于模幂计算则可以通过并行计算提高对单个大整数位宽数据的模幂计算速度,而在处理小整数位宽数据时分配较多PR用于模乘计算则可以通过对多个数据分别进行串行计算从而提高对多个小整数位宽数据的整体处理速度,并且通过对动态可重构部分320的计算资源进行动态配置可以提高资源利用率。
请继续参阅图3,可重构计算装置300可以根据待处理数据的位宽变化而设定多个参考区间,对每个参考区间设定对应的动态可重构部分320中用于模幂计算的PR和用于模乘计算的PR各自所占的比例,并通过监控待处理数据的位宽变化而对动态可重构部分320进行动态部分重构,从而更好地适应待处理数据的位宽。例如,可以设定待处理数据的位宽在小于128比特时为第一参考区间,第一参考区间下动态可重构部分320的PR总数的70%用于模乘计算而20%用于模幂计算;待处理数据的位宽大于或等于128比特而小于256比特时设为第二参考区间,第二参考区间下动态可重构部分320的PR总数的50%用于模乘计算而40%用于模幂计算;待处理数据的位宽在大于或等于256比特而小于1024比特时设为第三参考区间,第三参考区间下动态可重构部分320的PR总数的40%用于模乘计算而50%用于模幂计算;待处理数据的位宽在大于或等于1024比特时设为第四参考区间,第四参考区间下动态可重构部分320的PR总数的20%用于模乘计算而70%用于模幂计算。具体的参考区间的划分方式和数据位宽的变化之间的关系,可以根据实际需要进行调整,在此不做具体限定。如此,可以根据数据位宽的实际变化而对动态可重构部分320进行动态部分重构,从而更好地适应待处理数据的位宽。在一种可能的实施方式中,为了减少可重构计算装置300根据待处理数据的位宽变化而改变动态可重构部分320的配置的频率,可以将数据位宽相近的数据整合在一起进行处理。例如,静态可重构部分310的存储模块312可以同时存放多个批次的数据和各自的算子操作命令,从中筛选出数据位宽接近的数据或者位于同一个参考区间的多个数据一起处理,等存储模块312中所存放的全部数据都被处理完再发送给接口模块311并输出给外部。再例如,可以通过主处理器301执行软件层操作,将数据位宽接近的数据流和相应控制流尽量排在序列中相邻位置从而使得可重构计算装置300在流水式处理大量数据时,前后一起进行处理的多个数据之间具有接近的数据位宽或者说数据位宽的变化比较平缓。例如,静态可重构部分310将所接收的待处理数据按照位宽从小到大或者从大到小进行排列,并将排列后的待处理数据发送给动态可重构部分320。再例如,静态可重构部分310将所接收的待处理数据按照位宽进行聚类处理,从而让位宽接近的待处理数据成簇被发送给动态可重构部分320。
请继续参阅图3,静态可重构部分310与动态可重构部分320通信地连接,动态可重构部分320用于执行待处理数据的所有计算任务,而静态可重构部分310用于流水式接收多个待处理数据并管理所有的处理结果。当多个待处理数据用于同一个任务时,动态可重构部分320的配置主要根据待处理数据的位宽变化而调整。而当多个待处理数据用于不同的任务,不同的任务之间一般也有模块复用的部分。例如密态加法和Paillier解密均需要大量模幂计算,并且所涉及的待处理数据也就是密文往往是大整数位宽,因此这两种任务下都需要较多的计算资源用于模幂计算。因此可以根据实际的使用场景还有对应的计算任务,对计算资源进行分配。具体地,可以先根据使用场景或者所涉及的算法进行“粗调”也就是确定静态可重构部分310的功能构成以及动态可重构部分320用于模幂计算和模乘计算的计算资源的比例,再根据待处理数据的位宽进行“细调”也就是确定动态可重构部分320中分别用于模幂计算的计算资源和用于模乘计算的计算资源。下面结合表1进一步说明可重构计算装置300对计算资源进行分配的机制。
表1
如表1所示,可重构计算装置300的功能重构包括第一配置和第二配置,其中第一配置属于静态重构,用于在上电前或者初始化可重构计算装置300时设定分配给模幂计算或者模乘计算的计算资源,第二配置属于动态部分重构,用于在计算过程中动态调整分别分配给模幂计算和模乘计算的计算资源。因此可重构计算装置300的功能重构或者功能再配置可以分成前后两个阶段,在第一个阶段根据运算场景进行“粗调”也就是确定静态可重构部分310的功能构成以及动态可重构部分320用于模幂计算和模乘计算的计算资源的比例,然后在第二个阶段根据数据位宽进行“细调”也就是确定动态可重构部分320分别用于模幂计算的计算资源和用于模乘计算的计算资源。以表1中所示的示例性第一配置和第二配置为例,当运算场景是Paillier解密,第一配置中分配给模幂计算或者模乘计算的计算资源占比70%,占比70%可以通过用于执行模幂计算或者模乘计算的PR的个数来衡量或者通过其它合适的计算能力指标;第二配置在数据位宽为48比特时分配给模幂计算的计算资源相对于分配模乘计算的计算资源的比例为1:2.5,结合第一配置中设定的70%的占比可以推算出分配给模幂计算的计算资源占比20%,分配给模乘的计算资源占比50%。同样在运算场景是Paillier解密,第一配置不变,第二配置在数据位宽为1024比特时分配给模幂计算的计算资源相对于分配模乘计算的计算资源的比例为2.5:1,结合第一配置中设定的70%的占比可以推算出分配给模幂计算的计算资源占比50%,分配给模乘的计算资源占比20%。当运算场景是密态加法,因为密态加法相对于Paillier解密,不需要除法运算等,因此可以分配更多资源给模幂计算和模乘计算,因此第一配置中设定90%的占比,第二配置根据数据位宽而相应调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例。运算场景可以是单一的场景或者针对特定算法例如用于Paillier解密或者密态加法,也可以是复合场景或者针对多个算法,这些是根据实际使用场景而定。例如,在隐私计算的场景中,可重构计算装置300可以在一段时间内用于Paillier加解密运算,并需要流水式处理需要加密的明文和需要解密的密文。如表1所示,当运算场景同时涉及Paillier解密和密态加法时,可以设定第一配置为80%的占比,并在第二配置中根据数据位宽而相应调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例。应当理解的是,根据数据位宽而相应调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例可以是根据数据位宽所在的参考区间。在一种可能的实施方式中,可重构计算装置300可以根据待处理数据的位宽变化而设定多个参考区间,对每个参考区间设定对应的用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例,从而更好地适应待处理数据的位宽。
请继续参阅图3,输入数据可以包括用于不同复杂算法操作的不同类型数据,以上面公式(1)所示的模幂计算公式为例,公式(1)中的输入数据就包括幂底数、幂指数和模数三种类型。因此,根据数据位宽而相应调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例,可以进一步理解成根据不同类型的数据各自的位宽来做出调整。其中,在表1所示的一种可能的实施方式的分配机制中,当数据位宽为48比特时,用于模幂计算的计算资源是小于用于模乘计算的资源。在另一些示例性实施例中,当数据位宽为48比特或者其它非大整数位宽(一般指的是小于256比特)时,用于模幂计算的计算资源仍然大于用于模乘计算的资源,只是两者的相对比例发生变化。也就是说,动态可重构部分320内分别用于模幂计算的计算资源和用于模乘计算的计算资源,这两者之间的相对比例是动态可配置的,而调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例的分配机制,则是以输入数据的位宽变化为基础。下面结合表2说明另一种可能的实施方式下的分配机制及其技术效果。
表2
如表2所示,假设动态可重构部分320提供总计336个PR用于模幂计算和模乘计算,因此模幂引擎个数和模乘引擎个数的总和维持336个不变,当模幂引擎个数增加时则模乘引擎个数减少,当模幂引擎个数减少时则模乘引擎个数增加。再假设这些PR彼此的计算性能相当,所以模幂引擎个数或者说用于模幂计算的PR的个数就决定了可重构计算装置300的模幂计算性能,在表2中模幂计算性能体现为每秒可以进行的模幂计算次数,单位是千次每秒。例如,当模幂引擎个数为330个时,每秒模幂计算次数是3524千次;当模幂引擎个数为320个时,每秒模幂计算次数是3418千次。应当理解的是,每秒模幂计算次数与模幂引擎个数基本呈线性递增关系,所以随着模幂引擎个数的减少,每秒模幂计算次数也即模幂计算性能会下降。类似地,在表2中可重构计算装置300的模乘计算性能体现为每秒可以进行的模乘计算次数,单位是千次每秒,而每秒模乘计算次数与模乘引擎个数基本呈线性递增关系。系统计算性能指的是对于给定的模幂引擎个数和给定的模乘引擎个数,在每秒模幂计算次数和每秒模乘计算次数二者之间取较小值。这是因为模幂计算和模乘计算一般情况下是串行关系,也就是在流水式处理多个数据时,模幂计算和模乘计算中具有较低速度的那一方会成为整个系统的计算瓶颈,因此系统计算性能能用来表征整体计算瓶颈,也可以衡量整体计算性能。系统计算性能越好,也就意味着这种分配机制下整体系统计算性能越佳。应当理解的是,表2所示的系统计算性能只是一种衡量整体计算瓶颈及整体计算性能的方式,还可以通过其它合适的方式来评估特定的分配机制下对于给定的模幂引擎个数和给定的模乘引擎个数,响应的系统计算性能。另外,表2所示的以分别用于模幂计算和模乘计算的PR个数,或者说模幂引擎个数和模乘引擎个数,来表征用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例,仅是示例性。在另一些示例性实施例中,动态可重构部分320可以包括计算性能不相同的多种PR,而模幂引擎个数和模乘引擎个数也可以用其它合适的技术指标。例如,可以将动态可重构部分320的多种PR映射为具有相同计算性能的多个虚拟PR,然后模幂引擎个数指代用于模幂计算的虚拟PR的个数,而模乘引擎个数指代用于模乘计算的虚拟PR的个数。
请继续参阅表2,表2示出了在幂指数位宽变化时,模幂引擎个数和模乘引擎个数的变化所带来的系统计算性能的变化。当幂指数位宽为16比特时,在维持模幂引擎个数和模乘引擎个数的总和为336不变的前提下,当模幂引擎个数为318个时,系统计算性能为最大;当幂指数位宽为8比特时,在维持模幂引擎个数和模乘引擎个数的总和为336不变的前提下,当模幂引擎个数为306个时,系统计算性能为最大;当幂指数位宽为4比特时,在维持模幂引擎个数和模乘引擎个数的总和为336不变的前提下,当模幂引擎个数为290个时,系统计算性能为最大。可以看出,模幂引擎个数一直大于模乘引擎个数,但是模幂引擎个数相对于模引擎个数的比例越低则系统计算性能越佳,这是因为系统计算瓶颈主要来自于模乘计算方面。而当幂指数位宽分别为16比特、8比特和4比特时,系统计算性能达到最佳时的模幂引擎个数相对于模引擎个数的比例分别是318:18,306:30和290:46。也就是说,通过增加模乘引擎个数同时减少模幂引擎个数,可以提升模乘计算性能同时降低模幂计算性能,当两者接近或者相当时的系统计算性能最佳。而达到最佳系统计算性能所需的模幂引擎个数相对于模引擎个数的比例是基于幂指数位宽确定的,幂指数位宽越大则该模幂引擎个数相对于模引擎个数的比例也越高。如此,当输入数据中有多种类型,例如幂底数、幂指数和模数三种类型,则可以根据幂指数的位宽确定模幂引擎个数相对于模引擎个数的比例,从而达到最佳系统计算性能。根据数据位宽而相应调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例,可以理解为包括根据输入数据中特定类型的输入数据(例如幂指数)的位宽来调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例。
结合表1和表2,可重构计算装置300对计算资源进行分配的机制包括根据待处理数据的位宽进行“细调”也就是确定动态可重构部分320中分别用于模幂计算的计算资源和用于模乘计算的计算资源,而该分配机制可以参考表1的示例所示的待处理数据的数据位宽,也可以参考表2的示例所示的幂指数位宽。在另一些示例性实施例中,该分配机制还可以根据任何合适的基于待处理数据的位宽的方式来动态调整动态可重构部分320中分别用于模幂计算的计算资源和用于模乘计算的计算资源,从而保持最佳系统计算性能。
应当理解的是,静态可重构部分310的静态功能重构和动态可重构部分320的动态部分重构均包括必要的存储资源和控制电路的结构重构以便配合计算功能的重构。另外,动态可重构部分320中可以分配部分PR用于数据转发以配合如图1所示的多个模幂计算引擎的并行处理,例如可以分配部分PR或者计算资源作为数据转发模块,用于将数据和参数分发到相应的功能模块。图3所示的可重构计算装置300将联邦学习和隐私计算所涉及的各种算子操作,例如模幂运算、模乘运算、大数乘法、大数除法、大数加法、大数减法和取模运算等,均通过动态可重构部分320中的各个PR来进行运算加速,每个PR可以包括执行相同算子操作的一个或者多个运算引擎从而针对特定算子操作进行优化和加速。而可重构计算装置300的静态可重构部分310用于从外部接收多个待处理数据并管理所有的处理结果以及将处理结果发送给外部。并且,可重构计算装置300根据运算场景在上电前或者初始化时设定用于模幂计算和模乘计算的计算资源的比例,然后根据数据位宽在进行该运算场景的计算中动态调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例,从而可以应对实际应用中复杂多变的需求并能在保持较高的计算性能同时最大限度利用计算资源和存储资源从而降低能耗。
请参阅图4,图4示出了本申请实施例提供的另一种实施方式的可重构计算装置的结构框图。如图4所示,可重构计算装置400包括静态可重构部分410和动态可重构部分420。其中,静态可重构部分410包括接口模块411,存储模块412,管理模块413以及辅助计算模块414。动态可重构部分420包括多个PR。图4所示的可重构计算装置400的接口模块411,存储模块412和管理模块413分别与图3所示的可重构计算装置300的接口模块311,存储模块312和管理模块313具有相似的功能和结构,在此不再赘述。图4所示的可重构计算装置400的运作原理也与图3所示的可重构计算装置300相似。可重构计算装置400的静态可重构部分410用于从主处理器401和主存储器402或者说可重构计算装置400的外部接收待处理数据和这些待处理数据的运算场景等信息,并用于存储和管理处理结果。可重构计算装置400的动态可重构部分420的多个PR通过功能重构而对联邦学习和隐私计算所涉及的各种算子操作进行运算加速和硬件优化,每个PR可以包括执行相同算子操作的一个或者多个运算引擎从而针对特定算子操作进行优化和加速。另外,可重构计算装置400的功能重构或者功能再配置可以分成前后两个阶段:第一个阶段在上电前或者初始化时,根据运算场景确定静态可重构部分410的功能构成以及动态可重构部分420用于模幂计算和模乘计算的计算资源的比例;第二个阶段在进行该运算场景的计算中,根据数据位宽确定动态可重构部分420分别用于模幂计算的计算资源和用于模乘计算的计算资源,或者说根据数据位宽动态调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例,从而可以应对实际应用中复杂多变的需求并能在保持较高的计算性能同时最大限度利用计算资源和存储资源从而降低能耗。
应当理解的是,根据数据位宽而相应调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例可以是根据数据位宽所在的参考区间。在一种可能的实施方式中,可重构计算装置400可以根据待处理数据的位宽变化而设定多个参考区间,对每个参考区间设定对应的用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例,从而更好地适应待处理数据的位宽。
请继续参阅图4,图4所示的可重构计算装置400的静态可重构部分410包括辅助计算模块414。辅助计算模块414和静态可重构部分410的其它模块一样是基于静态可重构技术实现,这意味着需要在初始化或者上电前进行配置并且在计算过程中无法进行功能重构。辅助计算模块414用于除了模幂计算和模乘计算以外的其他算子操作,例如除法运算、乘法运算等。在联邦学习和隐私计算的运算场景中,整体计算流程可以围绕模幂计算和模乘计算而部署成相对固定的流程,例如Paillier加密算法的流程包括对待处理数据依次进行大数乘法、大数加法、模幂计算以及模乘计算。而一般情况下可以将除了模幂计算和模乘计算以外的功能模块和计算步骤设置在位于静态可重构部分410中的辅助计算模块414,从而与位于动态可重构部分420的多个PR协同完成该运算场景下的计算。应当理解的是,辅助计算模块414位于静态可重构部分410中,所以不能在计算中对辅助计算模块414进行动态调整。可重构计算装置400在第一个阶段也就是在上电前或者初始化时,根据运算场景确定静态可重构部分410的功能构成包括,根据运算场景确定辅助计算模块414的功能和结构。如此,通过在静态可重构部分410分配部分计算资源和存储资源以构成辅助计算模块414,使得动态可重构部分420可以有更多的计算资源和存储资源用于模幂计算和模乘计算,从而等效于提高了动态可重构部分420用于模幂计算和模乘计算的计算资源的比例。换句话说,通过让辅助计算模块414来代替动态可重构部分420中的部分PR来执行该运算场景下的一些算子操作,使得这些PR可以用于其他用途例如用于模幂计算和模乘计算,从而提高了在该运算场景的计算中通过动态调整动态可重构部分420中的PR来适应数据位宽变化的适配性和灵活性。
请参阅图5,图5示出了本申请实施例提供的一种实施方式的动态部分重构处理器的结构框图。如图5所示,动态部分重构处理器500包括静态可重构部分510和动态可重构部分520。其中,静态可重构部分510包括接口模块511,存储模块512,管理模块513以及辅助计算模块514。动态可重构部分520包括多个功能模块,具体有模幂计算模块521,模乘计算模块522,蒙哥马利化模块523,混淆运算模块524,去蒙哥马利化模块525和数据转发模块526。动态部分重构处理器500的静态可重构部分510用于从外部接收待处理数据和这些待处理数据的运算场景等信息,并用于存储和管理处理结果。动态部分重构处理器500的动态可重构部分520的各个功能模块对联邦学习和隐私计算所涉及的各种算子操作进行运算加速和硬件优化,从而针对特定算子操作进行优化和加速。动态部分重构处理器500的动态可重构部分520的各个功能模块是基于动态部分可重构技术实现,这意味着在计算过程中可以进行功能重构。具体地,各个功能模块可以对应一个或者多个具有动态可重构功能的可重构计算处理器,每个功能模块所对应的一个或者多个可重构计算处理器通过功能重构而针对该功能模块的特定算子操作提供加速运算和硬件优化。例如,模幂计算模块521可以包括多个可重构计算处理器,等效于图1所示的多个模幂计算引擎100用于参照图2所示的模幂计算的方法对模幂计算进行并行处理。
请继续参阅图5,接口模块511用于从动态部分重构处理器500的外部接收待处理数据和对应运算场景,并用于向外部发送待处理数据在对应的运算场景下进行处理后的处理结果。存储模块512用于存储待处理数据和相关计算结果和参数等。管理模块513用于管理待处理数据和处理结果。辅助计算模块514用于除了模幂计算和模乘计算以外的其它算子操作。动态部分重构处理器500的功能配置分成前后两个阶段:第一个阶段在上电前或者初始化时,根据运算场景确定静态可重构部分510的功能构成包括辅助计算模块514的功能以及动态可重构部分520中各个功能模块各自所占的计算资源的比例,例如各个功能模块各自对应的可重构计算处理器的个数;第二个阶段在进行该运算场景的计算中,根据数据位宽确定动态可重构部分520中分别用于模幂计算的计算资源和用于模乘计算的计算资源,或者说根据数据位宽动态调整模幂计算模块521所对应的可重构计算处理器的个数和模乘计算模块522所对应的可重构计算处理器的个数,从而可以应对实际应用中复杂多变的需求并能在保持较高的计算性能同时最大限度利用计算资源和存储资源从而降低能耗。应当理解的是,根据数据位宽而调整模幂计算模块521所对应的可重构计算处理器的个数和模乘计算模块522所对应的可重构计算处理器的个数,可以是根据数据位宽所在的参考区间。在一种可能的实施方式中,动态部分重构处理器500可以根据待处理数据的位宽变化而设定多个参考区间,对每个参考区间设定对应的模幂计算模块521所对应的可重构计算处理器的个数和模乘计算模块522所对应的可重构计算处理器的个数,从而更好地适应待处理数据的位宽。例如,假设动态可重构部分520有100个可重构计算处理器,当待处理数据的位宽是大整数位宽(大于256比特)时,动态部分重构处理器500分配50个可重构计算处理器给模幂计算模块521,20个可重构计算处理器给模乘计算模块522,30个可重构计算处理器给动态可重构部分520的其他模块;当待处理数据的位宽是小整数位宽(小于256比特)时,动态部分重构处理器500分配20个可重构计算处理器给模幂计算模块521,50个可重构计算处理器给模乘计算模块522,30个可重构计算处理器给动态可重构部分520的其他模块。应当理解的是,辅助计算模块514可以与动态可重构部分520中除了模幂计算模块521和模乘计算模块522以外的其它功能模块具有相同的功能,也可以具有不同的功能,也可以与多种类型的功能模块的功能相同。例如,辅助计算模块514可以具有蒙哥马利化模块523的蒙哥马利化运算功能,也可以同时具有蒙哥马利化模块523的蒙哥马利化运算功能和去蒙哥马利化模块525的去蒙哥马利化运算功能。辅助计算模块514位于静态可重构部分510中,所以不能在计算中对辅助计算模块514进行动态调整。通过让静态可重构部分510中的辅助计算模块514来辅助或者替代动态可重构部分520来执行该运算场景下的一些算子操作,使得动态可重构部分520可以将有限的计算资源用于其他用途例如用于模幂计算和模乘计算,从而提高了在该运算场景的计算中通过动态调整动态可重构部分520来适应数据位宽变化的适配性和灵活性。
请继续参阅图5,图5所示的动态部分重构处理器500的动态可重构部分520中各个功能模块适用于Paillier加密算法相关的运算场景。Paillier加密算法的计算流程展开后包括通过大数乘法和大数加法进行预处理,这部分的算子操作可以通过辅助计算模块514来实现。Paillier加密算法的计算流程展开后还包括调用蒙哥马利化模块523对预处理的结果进行蒙哥马利化处理,调用模幂计算模块521进行模幂计算,调用混淆运算模块524进行蒙哥马利化域的模乘计算,以及调用去蒙哥马利化模块525用于对混淆运算模块524的输出结果进行去蒙哥马利化处理。而数据转发模块526用于将各个功能模块所需的数据和参数发送到相应功能模块内的可重构计算处理器。因此,动态部分重构处理器500用于Paillier加密算法相关的运算场景或者具有类似计算流程的其它运算场景,通过辅助计算模块514来执行前端处理和预处理等流程,而通过动态可重构部分520中各个功能模块处理后续流程,可以实现流水式处理大量待处理数据且可以有效提高了在计算中通过动态调整动态可重构部分来适应数据位宽变化的适配性和灵活性。
请参阅图6,图6示出了本申请实施例提供的另一种实施方式的动态部分重构处理器的结构框图。如图6所示,动态部分重构处理器600包括静态可重构部分610和动态可重构部分620。其中,静态可重构部分610包括接口模块611,存储模块612,管理模块613以及辅助计算模块614。动态可重构部分620包括多个功能模块,具体有模幂计算模块621,模乘计算模块622,减法模块623,除法模块624,蒙哥马利化模块625和数据转发模块626。动态部分重构处理器600的静态可重构部分610用于从外部接收待处理数据和这些待处理数据的运算场景等信息,并用于存储和管理处理结果。动态部分重构处理器600的动态可重构部分620的各个功能模块对联邦学习和隐私计算所涉及的各种算子操作进行运算加速和硬件优化,从而针对特定算子操作进行优化和加速。动态部分重构处理器600的动态可重构部分620的各个功能模块是基于动态部分可重构技术实现,这意味着在计算过程中可以进行功能重构。具体地,各个功能模块可以对应一个或者多个具有动态可重构功能的可重构计算处理器,每个功能模块所对应的一个或者多个可重构计算处理器通过功能重构而针对该功能模块的特定算子操作提供加速运算和硬件优化。例如,模幂计算模块621可以包括多个可重构计算处理器,等效于图1所示的多个模幂计算引擎100用于参照图2所示的模幂计算的方法对模幂计算进行并行处理。
请继续参阅图6,图6所示的接口模块611,存储模块612,管理模块613分别与图5所示的接口模块511,存储模块512,管理模块513相似,在此不再赘述。辅助计算模块614用于除了模幂计算和模乘计算以外的其它算子操作。动态部分重构处理器600的功能配置分成前后两个阶段:第一个阶段在上电前或者初始化时,根据运算场景确定静态可重构部分610的功能构成包括辅助计算模块614的功能以及动态可重构部分620中各个功能模块各自所占的计算资源的比例,例如各个功能模块各自对应的可重构计算处理器的个数;第二个阶段在进行该运算场景的计算中,根据数据位宽确定动态可重构部分620中分别用于模幂计算的计算资源和用于模乘计算的计算资源,或者说根据数据位宽动态调整模幂计算模块621所对应的可重构计算处理器的个数和模乘计算模块622所对应的可重构计算处理器的个数,从而可以应对实际应用中复杂多变的需求并能在保持较高的计算性能同时最大限度利用计算资源和存储资源从而降低能耗。应当理解的是,根据数据位宽而调整模幂计算模块621所对应的可重构计算处理器的个数和模乘计算模块622所对应的可重构计算处理器的个数,可以是根据数据位宽所在的参考区间。在一种可能的实施方式中,动态部分重构处理器600可以根据待处理数据的位宽变化而设定多个参考区间,对每个参考区间设定对应的模幂计算模块621所对应的可重构计算处理器的个数和模乘计算模块622所对应的可重构计算处理器的个数,从而更好地适应待处理数据的位宽。
请继续参阅图6,图6所示的动态部分重构处理器600的动态可重构部分620中各个功能模块适用于Paillier解密算法相关的运算场景。Paillier解密算法的计算流程展开后包括多次进行减法运算和除法运算,这部分的算子操作可以通过辅助计算模块614来实现或者至少让辅助计算模块614来分担部分需求。例如,辅助计算模块614可以是针对大整数位宽除法运算进行优化的硬件结构。Paillier解密算法的计算流程展开后还包括模幂计算,模乘计算,调用蒙哥马利化模块625进行蒙哥马利化处理以及其它算子操作。而数据转发模块626用于将各个功能模块所需的数据和参数发送到相应功能模块内的可重构计算处理器。因此,动态部分重构处理器600用于Paillier解密算法相关的运算场景或者具有类似计算流程的其它运算场景,通过辅助计算模块614来分担如除法运算等计算流程,而通过动态可重构部分620中各个功能模块处理其它流程,可以实现流水式处理大量待处理数据且可以有效提高了在计算中通过动态调整动态可重构部分来适应数据位宽变化的适配性和灵活性。
请参阅图5和图6,应当理解的是,图5所示的动态部分重构处理器500的动态可重构部分520和图6所示的动态部分重构处理器600的动态可重构部分620各自所包括的功能模块的类型和组合,仅为示例性。根据实际需要的运算场景,可以有不同的类型和组合。在联邦学习和隐私计算相关的运算场景下,模幂计算模块和模乘计算模块是必要的,而其它的功能模块则根据实际需要的算子操作的类型和组合进行配置。而辅助计算模块则是用于分担除了模幂计算和模乘计算之外的其它算子操作的需求,从而使得动态可重构部分有更多计算资源用于在模幂计算和模乘计算之间分配。根据待处理数据的位宽变化,可以灵活调整动态可重构部分中用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例,从而实现流水式处理大量待处理数据且可以有效提高了在计算中通过动态调整动态可重构部分来适应数据位宽变化的适配性和灵活性。
请参阅图3、图4、图5和图6,动态可重构部分的控制机制可以采用适合于动态可重构技术的任意技术手段,例如通过比特流文件进行配置,或者通过类似有限状态机的可重构控制器来进行数据通路的功能重构。静态可重构部分的控制可以通过控制码,例如通过软件对实际的运算场景进行编码并根据不同编码对静态可重构部分进行相应的烧录和配置从而达到不同运算场景的要求。
请参阅图7,图7示出了本申请实施例提供的可重构计算装置的控制方法的流程示意图。如图7所示,控制方法700包括以下步骤。
步骤S702:根据运算场景确定所述静态可重构部分的功能,所述多个功能模块各自的功能以及所述多个功能模块各自所对应的计算资源。
其中,所述可重构计算装置包括静态可重构部分和动态可重构部分,所述动态可重构部分包括多个功能模块,所述多个功能模块的每一个功能模块包括至少一个具有动态可重构功能的可重构计算处理器。
步骤S704:在进行所述运算场景的计算中,根据待处理数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所对应的计算资源相对于所述多个功能模块中用于模乘计算的功能模块所对应的计算资源的比例。
其中,当待处理数据的位宽大于256个比特时,模幂计算的时间变得大于模乘计算时间,特别是在大整数位宽数据如1024比特或者2048比特的情况,这意味着大位宽数据下模幂计算以及基于模幂计算的其它算子操作成为计算速度的瓶颈;而当待处理数据的位宽小于256个比特时,模幂计算的时间要远远小于模乘计算时间,特别是在小位宽数据如16比特或者32比特的情况,这意味着小位宽数据下模乘计算以及基于模乘计算的其它算子操作成为计算速度的瓶颈。通过在处理大整数位宽数据时分配较多计算资源用于模幂计算则可以通过并行计算提高对单个大整数位宽数据的模幂计算速度,而在处理小整数位宽数据时分配较多计算资源用于模乘计算则可以通过对多个数据分别进行串行计算从而提高对多个小整数位宽数据的整体处理速度,并且通过对动态可重构部分的计算资源进行动态配置可以提高资源利用率。
如此,可以应对实际应用中复杂多变的需求并能在保持较高的计算性能同时最大限度利用计算资源和存储资源从而降低能耗。应当理解的是,根据数据位宽而相应调整用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例可以是根据数据位宽所在的参考区间。在一种可能的实施方式中,可以根据待处理数据的位宽变化而设定多个参考区间,对每个参考区间设定对应的用于模幂计算的计算资源相对于用于模乘计算的计算资源的比例,从而更好地适应待处理数据的位宽。
以上是本申请实施例的实施方式,应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本申请实施例以及附图所示的结构并不构成对有关装置或系统的具体限定。在本申请另一些实施例中,有关装置或系统可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
Claims (23)
1.一种可重构计算装置,应用于联邦学习和隐私计算,其特征在于,所述可重构计算装置包括:
静态可重构部分,其中,所述静态可重构部分用于接收待处理数据和运算场景并配置为在所述可重构计算装置上电前根据所述运算场景进行功能重构;和
动态可重构部分,其中,所述动态可重构部分用于执行所述待处理数据在所述运算场景下的计算并配置为在所述可重构计算装置进行计算中进行功能重构,
其中,所述动态可重构部分的计算资源包括用于模幂计算的第一部分计算资源和用于模乘计算的第二部分计算资源,所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定。
2.根据权利要求1所述的可重构计算装置,其特征在于,所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定,包括:
当所述待处理数据的位宽大于预设阈值时,所述第一部分计算资源相对于所述第二部分计算资源的比例为第一比例;和
当所述待处理数据的位宽小于所述预设阈值时,所述第一部分计算资源相对于所述第二部分计算资源的比例为第二比例,所述第一比例大于所述第二比例。
3.根据权利要求2所述的可重构计算装置,其特征在于,所述预设阈值是256比特。
4.根据权利要求1所述的可重构计算装置,其特征在于,所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定,包括:
设定多个参考区间,其中,所述多个参考区间与多个预设比例一一对应;和
从所述多个参考区间中选择所述待处理数据的位宽所在的参考区间以及与该参考区间对应的预设比例,所述第一部分计算资源相对于所述第二部分计算资源的比例是该预设比例。
5.根据权利要求1所述的可重构计算装置,其特征在于,所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定,包括:所述第一部分计算资源相对于所述第二部分计算资源的比例随着所述待处理数据中幂指数的位宽增加而增加。
6.根据权利要求1所述的可重构计算装置,其特征在于,所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定,包括:所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据中特定类型的数据的位宽确定。
7.根据权利要求2至6中任一项所述的可重构计算装置,其特征在于,所述静态可重构部分将所接收的待处理数据按照位宽从小到大或者从大到小进行排列,并将排列后的待处理数据发送给所述动态可重构部分。
8.根据权利要求2至6中任一项所述的可重构计算装置,其特征在于,所述静态可重构部分将所接收的待处理数据按照位宽进行聚类处理,从而让位宽接近的待处理数据成簇被发送给所述动态可重构部分。
9.根据权利要求1所述的可重构计算装置,其特征在于,所述第一部分计算资源和所述第二部分计算资源合计后在所述动态可重构部分的计算资源中的占比根据所述运算场景确定。
10.根据权利要求9所述的可重构计算装置,其特征在于,所述运算场景对应多种基础算子操作的组合,所述占比根据所述多种基础算子操作的组合确定。
11.根据权利要求10所述的可重构计算装置,其特征在于,所述动态可重构部分的计算资源指示多个动态可重构单元,所述多个动态可重构单元的每一个动态可重构单元配置为可以通过功能重构来执行所述多种基础算子操作中的一种基础算子操作的计算,所述第一部分计算资源指示所述多个动态可重构单元中用于执行模幂计算的动态可重构单元的个数,所述第二部分计算资源指示所述多个动态可重构单元中用于执行模乘计算的动态可重构单元的个数。
12.根据权利要求11所述的可重构计算装置,其特征在于,所述第一部分计算资源相对于所述第二部分计算资源的比例根据所述待处理数据的位宽确定,包括:
所述多个动态可重构单元中用于执行模幂计算的动态可重构单元的个数和所述多个动态可重构单元中用于执行模乘计算的动态可重构单元的个数分别根据所述待处理数据的位宽确定。
13.根据权利要求11所述的可重构计算装置,其特征在于,所述占比根据所述多种基础算子操作的组合确定,包括:
所述多个动态可重构单元中用于执行模幂计算的动态可重构单元的个数和所述多个动态可重构单元中用于执行模乘计算的动态可重构单元的个数之和根据所述多种基础算子操作的组合确定。
14.根据权利要求10所述的可重构计算装置,其特征在于,所述静态可重构部分还包括辅助计算模块,所述辅助计算模块配置成可执行所述多种基础算子操作中的除模幂计算和模乘计算以外的基础算子操作的操作。
15.根据权利要求14所述的可重构计算装置,其特征在于,所述运算场景与Paillier加密相关,所述多种基础算子操作包括大数乘法运算和大数加法运算,所述辅助计算模块用于执行所述大数乘法运算和所述大数加法运算。
16.根据权利要求10所述的可重构计算装置,其特征在于,所述运算场景与Paillier解密相关,所述多种基础算子操作包括减法运算和除法运算,所述辅助计算模块用于执行所述除法运算。
17.一种动态部分重构处理器,其特征在于,所述动态部分重构处理器包括:
静态可重构部分,其中,所述静态可重构部分包括辅助计算模块;和
动态可重构部分,其中,所述动态可重构部分包括多个功能模块,所述多个功能模块的每一个功能模块包括至少一个具有动态可重构功能的可重构计算处理器,
其中,所述动态部分重构处理器的功能重构包括:
在初始化所述动态部分重构处理器时,根据运算场景确定所述辅助计算模块的功能,所述多个功能模块各自的功能以及所述多个功能模块各自所包括的可重构计算处理器的个数;和
在进行所述运算场景的计算中,根据待处理数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数和所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数。
18.根据权利要求17所述的动态部分重构处理器,其特征在于,根据所述待处理数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数和所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数,包括:
当所述待处理数据的位宽大于预设阈值时,所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数多于所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数;和
当所述待处理数据的位宽小于所述预设阈值时,所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数少于所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数。
19.根据权利要求17所述的动态部分重构处理器,其特征在于,根据所述待处理数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数和所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数,包括:
根据所述待处理数据中特定类型的数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数相对于所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数的比例。
20.根据权利要求19所述的动态部分重构处理器,其特征在于,所述待处理数据中特定类型的数据的位宽包括所述待处理数据中幂指数的位宽,根据所述待处理数据中特定类型的数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数相对于所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数的比例,包括:
随着所述待处理数据中幂指数的位宽增加而增加所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数相对于所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数的比例。
21.根据权利要求17所述的动态部分重构处理器,其特征在于,根据所述待处理数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数和所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数,包括:
设定多个参考区间,其中,所述多个参考区间与多个预设比例一一对应;
从所述多个参考区间中选择所述待处理数据的位宽所在的参考区间以及与该参考区间对应的预设比例;和
根据所述预设比例调节所述多个功能模块中用于模幂计算的功能模块所包括的可重构计算处理器的个数相对于所述多个功能模块中用于模乘计算的功能模块所包括的可重构计算处理器的个数的比例。
22.根据权利要求17所述的动态部分重构处理器,其特征在于,所述运算场景对应多种基础算子操作的组合,所述辅助计算模块配置成可执行所述多种基础算子操作中的除模幂计算和模乘计算以外的基础算子操作的操作。
23.一种可重构计算装置的控制方法,所述可重构计算装置包括静态可重构部分和动态可重构部分,所述动态可重构部分包括多个功能模块,其特征在于,所述方法包括:
根据运算场景确定所述静态可重构部分的功能,所述多个功能模块各自的功能以及所述多个功能模块各自所对应的计算资源;以及
在进行所述运算场景的计算中,根据待处理数据的位宽调节所述多个功能模块中用于模幂计算的功能模块所对应的计算资源相对于所述多个功能模块中用于模乘计算的功能模块所对应的计算资源的比例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110600064.5A CN113468099B (zh) | 2021-05-31 | 2021-05-31 | 可重构计算装置、处理器及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110600064.5A CN113468099B (zh) | 2021-05-31 | 2021-05-31 | 可重构计算装置、处理器及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113468099A true CN113468099A (zh) | 2021-10-01 |
CN113468099B CN113468099B (zh) | 2022-02-08 |
Family
ID=77871942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110600064.5A Active CN113468099B (zh) | 2021-05-31 | 2021-05-31 | 可重构计算装置、处理器及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113468099B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113900828A (zh) * | 2021-12-08 | 2022-01-07 | 深圳致星科技有限公司 | 联邦学习专用处理器、联邦学习处理芯片及芯片 |
CN114327370A (zh) * | 2022-03-10 | 2022-04-12 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
CN114880686A (zh) * | 2022-05-30 | 2022-08-09 | 杭州医康慧联科技股份有限公司 | 基于联邦学习的硬件加速数据传输方法 |
CN115062329A (zh) * | 2022-08-09 | 2022-09-16 | 深圳致星科技有限公司 | 隐私计算、隐私数据和联邦学习的流水计算装置及方法 |
CN115861025A (zh) * | 2022-11-29 | 2023-03-28 | 白盒子(上海)微电子科技有限公司 | 一种支持OpenCV的可重构图像处理器芯片架构及应用 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044344A1 (en) * | 2003-08-21 | 2005-02-24 | Quicksilver Technology, Inc. | System, method and software for static and dynamic programming and configuration of an adaptive computing architecture |
US20050210178A1 (en) * | 2004-01-29 | 2005-09-22 | Klingman Edwin E | Intelligent memory device with variable size task architecture |
CN101788931A (zh) * | 2010-01-29 | 2010-07-28 | 杭州电子科技大学 | 一种硬件实时容错的动态局部可重构系统 |
CN103218345A (zh) * | 2013-03-15 | 2013-07-24 | 上海安路信息科技有限公司 | 可适应多种数据流计算模式的动态可重构系统及运作方法 |
WO2018059029A1 (zh) * | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 一种资源分配方法、相关设备及系统 |
CN111813526A (zh) * | 2020-07-10 | 2020-10-23 | 深圳致星科技有限公司 | 用于联邦学习的异构处理系统、处理器及任务处理方法 |
CN112148437A (zh) * | 2020-10-21 | 2020-12-29 | 深圳致星科技有限公司 | 用于联邦学习的计算任务加速处理方法、装置及设备 |
CN112346833A (zh) * | 2020-09-30 | 2021-02-09 | 深圳致星科技有限公司 | 用于隐私计算的任务处理方法、处理器及异构处理系统 |
US11017322B1 (en) * | 2021-01-28 | 2021-05-25 | Alipay Labs (singapore) Pte. Ltd. | Method and system for federated learning |
-
2021
- 2021-05-31 CN CN202110600064.5A patent/CN113468099B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044344A1 (en) * | 2003-08-21 | 2005-02-24 | Quicksilver Technology, Inc. | System, method and software for static and dynamic programming and configuration of an adaptive computing architecture |
US20050210178A1 (en) * | 2004-01-29 | 2005-09-22 | Klingman Edwin E | Intelligent memory device with variable size task architecture |
CN101788931A (zh) * | 2010-01-29 | 2010-07-28 | 杭州电子科技大学 | 一种硬件实时容错的动态局部可重构系统 |
CN103218345A (zh) * | 2013-03-15 | 2013-07-24 | 上海安路信息科技有限公司 | 可适应多种数据流计算模式的动态可重构系统及运作方法 |
WO2018059029A1 (zh) * | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 一种资源分配方法、相关设备及系统 |
CN111813526A (zh) * | 2020-07-10 | 2020-10-23 | 深圳致星科技有限公司 | 用于联邦学习的异构处理系统、处理器及任务处理方法 |
CN112346833A (zh) * | 2020-09-30 | 2021-02-09 | 深圳致星科技有限公司 | 用于隐私计算的任务处理方法、处理器及异构处理系统 |
CN112148437A (zh) * | 2020-10-21 | 2020-12-29 | 深圳致星科技有限公司 | 用于联邦学习的计算任务加速处理方法、装置及设备 |
US11017322B1 (en) * | 2021-01-28 | 2021-05-25 | Alipay Labs (singapore) Pte. Ltd. | Method and system for federated learning |
Non-Patent Citations (2)
Title |
---|
XIANGLONG ZHANG: "A Privacy-Preserving and Verifiable Federated Learning Scheme", 《2020 IEEE INTERNATIONAL CONFERENCE ON COMMUNICATIONS (ICC)》 * |
杨庚等: "联邦学习中的隐私保护研究进展", 《南京邮电大学学报(自然科学版)》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113900828A (zh) * | 2021-12-08 | 2022-01-07 | 深圳致星科技有限公司 | 联邦学习专用处理器、联邦学习处理芯片及芯片 |
CN113900828B (zh) * | 2021-12-08 | 2022-03-04 | 深圳致星科技有限公司 | 联邦学习专用处理器、联邦学习处理芯片及芯片 |
CN114327370A (zh) * | 2022-03-10 | 2022-04-12 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
CN114327370B (zh) * | 2022-03-10 | 2022-06-21 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
CN114880686A (zh) * | 2022-05-30 | 2022-08-09 | 杭州医康慧联科技股份有限公司 | 基于联邦学习的硬件加速数据传输方法 |
CN115062329A (zh) * | 2022-08-09 | 2022-09-16 | 深圳致星科技有限公司 | 隐私计算、隐私数据和联邦学习的流水计算装置及方法 |
CN115062329B (zh) * | 2022-08-09 | 2022-12-20 | 深圳致星科技有限公司 | 隐私计算、隐私数据和联邦学习的流水计算装置及方法 |
CN115861025A (zh) * | 2022-11-29 | 2023-03-28 | 白盒子(上海)微电子科技有限公司 | 一种支持OpenCV的可重构图像处理器芯片架构及应用 |
CN115861025B (zh) * | 2022-11-29 | 2024-04-26 | 白盒子(上海)微电子科技有限公司 | 一种支持OpenCV的可重构图像处理器芯片架构及应用 |
Also Published As
Publication number | Publication date |
---|---|
CN113468099B (zh) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113468099B (zh) | 可重构计算装置、处理器及方法 | |
Roy et al. | FPGA-based high-performance parallel architecture for homomorphic computing on encrypted data | |
Migliore et al. | Hardware/software co-design of an accelerator for FV homomorphic encryption scheme using Karatsuba algorithm | |
CN112070222B (zh) | 用于联邦学习的处理装置、加速器及方法 | |
CN112865954B (zh) | 用于Paillier解密的加速器、芯片及系统 | |
CN112883408B (zh) | 用于隐私计算的加解密系统和芯片 | |
CN108718231A (zh) | 一种全同态加密方法、装置和计算机可读存储介质 | |
CN112733161A (zh) | 用于联邦学习密文运算的装置及方法 | |
CN112700152B (zh) | 基于中国剩余定理的层次化安全多方计算方法及装置 | |
CN112101944A (zh) | 一种高效隐私支付实现方法、装置、计算机设备及存储介质 | |
Fang et al. | Secure function evaluation using an fpga overlay architecture | |
CN106716344A (zh) | 用于密码运算的指数分裂 | |
CN114416182B (zh) | 用于联邦学习和隐私计算的fpga加速器和芯片 | |
Pu et al. | Fastplay-a parallelization model and implementation of smc on cuda based gpu cluster architecture | |
Folkerts et al. | REDsec: Running Encrypted DNNs in Seconds. | |
Eguro et al. | Issues and approaches to coarse-grain reconfigurable architecture development | |
CN113900828B (zh) | 联邦学习专用处理器、联邦学习处理芯片及芯片 | |
CN115801221A (zh) | 加速设备、计算系统及加速方法 | |
CN117254902A (zh) | 数据处理方法、装置、设备及存储介质 | |
Wang et al. | Dynamically reconfigurable architecture for symmetric ciphers | |
Bansal et al. | Implementation of modular exponentiation using montgomery algorithms | |
Catrina | Optimization and tradeoffs in secure floating-point computation: products, powers, and polynomials | |
Yang et al. | cuxcmp: Cuda-accelerated private comparison based on homomorphic encryption | |
El-Hadedy et al. | Reco-Pi: a reconfigurable cryptoprocessor for π-cipher | |
JP5241325B2 (ja) | 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |