CN117724678A - 执行方法、装置、系统、设备、芯片、介质及程序产品 - Google Patents

执行方法、装置、系统、设备、芯片、介质及程序产品 Download PDF

Info

Publication number
CN117724678A
CN117724678A CN202410172734.1A CN202410172734A CN117724678A CN 117724678 A CN117724678 A CN 117724678A CN 202410172734 A CN202410172734 A CN 202410172734A CN 117724678 A CN117724678 A CN 117724678A
Authority
CN
China
Prior art keywords
homomorphic
hardware accelerator
task
target
operators
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
Application number
CN202410172734.1A
Other languages
English (en)
Other versions
CN117724678B (zh
Inventor
赵起锋
刘烈
樊俊锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Open Security Research Inc
Original Assignee
Open Security Research Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Open Security Research Inc filed Critical Open Security Research Inc
Priority to CN202410172734.1A priority Critical patent/CN117724678B/zh
Publication of CN117724678A publication Critical patent/CN117724678A/zh
Application granted granted Critical
Publication of CN117724678B publication Critical patent/CN117724678B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Advance Control (AREA)

Abstract

本申请公开了一种执行方法、装置、系统、设备、芯片、介质及程序产品,该方法包括:将同态运算任务划分为多个同态运算子任务,多个同态运算子任务包括第一同态运算子任务;确定多个电路模板的N种候选组合方式;从N种候选组合方式中确定适用于执行第一同态运算子任务的第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板;将至少一个第一目标电路模板配置到硬件加速器中,用于硬件加速器执行第一同态运算子任务。在该方法中,上位机可将适用于执行第一同态运算子任务的至少一个第一目标电路模板配置到硬件加速器,如此,可提高硬件加速器对该第一同态运算子任务进行加速的加速比,进而提高同态运算任务整体的加速比。

Description

执行方法、装置、系统、设备、芯片、介质及程序产品
技术领域
本申请涉及数据安全保护技术领域,尤其涉及一种执行方法、装置、系统、设备、芯片、介质及程序产品。
背景技术
为了加速同态运算,可将一个完整的同态运算任务划分为多个同态运算子任务。其中,一部分同态运算子任务可在上位机中执行,其他部分同态运算子任务可在硬件加速器上执行。
然而,大多数硬件加速器的电路结构是固化的,出厂后无法再修改,因此在加速一个完整的同态运算任务过程中,硬件加速器只能采用固定不变的电路结构加速各种同态运算子任务,而无法针对每一个同态运算子任务采用合适的电路结构。由于不同的同态运算子任务所需的算子的类型和数量有较大差异,故这种采用固定不变的电路结构来加速各种同态运算子任务的方法,会导致部分同态运算子任务的加速比低于其他同态运算子任务,进而影响整体任务的加速比。
发明内容
本申请至少提供一种执行方法、装置、系统、设备、芯片、介质及程序产品。
本申请的技术方案是这样实现的:
一方面,本申请实施例提供了一种执行同态运算任务的方法,应用于上位机,该方法包括:将同态运算任务划分为多个同态运算子任务,多个同态运算子任务包括第一同态运算子任务;确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于硬件加速器最多所能配置的电路模板的数量;从N种候选组合方式中确定第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板,至少一个第一目标电路模板中的算子的类型包括执行第一同态运算子任务所需的算子的类型;其中,执行第一同态运算子任务所需的算子包括M个第一类算子,第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在N种候选组合方式对应的第一类算子的数量均小于M的情况下,在N种候选组合方式中,第一目标组合方式对应的第一类算子的数量与M的差值最小,M和N为正整数;将至少一个第一目标电路模板配置到硬件加速器中,至少一个第一目标电路模板用于硬件加速器执行第一同态运算子任务。
另一方面,本申请实施例提供了一种执行同态运算任务的装置,该装置包括:划分单元,用于将同态运算任务划分为多个同态运算子任务,多个同态运算子任务包括第一同态运算子任务;第一确定单元,用于确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于硬件加速器最多所能配置的电路模板的数量;第二确定单元,用于从N种候选组合方式中确定第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板,至少一个第一目标电路模板中的算子的类型包括执行第一同态运算子任务所需的算子的类型;其中,执行第一同态运算子任务所需的算子包括M个第一类算子,第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在N种候选组合方式对应的第一类算子的数量均小于M的情况下,在N种候选组合方式中,第一目标组合方式对应的第一类算子的数量与M的差值最小,M和N为正整数;第一配置单元,用于将至少一个第一目标电路模板配置到硬件加速器中,至少一个第一目标电路模板用于硬件加速器执行第一同态运算子任务。
另一方面,本申请实施例提供了一种执行同态运算任务的系统,该装置包括:上位机和至少一个硬件加速器;其中,上位机,用于执行以下步骤:将同态运算任务划分为多个同态运算子任务,多个同态运算子任务包括第一同态运算子任务;确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于第一硬件加速器最多所能配置的电路模板的数量,至少一个硬件加速器包括第一硬件加速器;从N种候选组合方式中确定第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板,至少一个第一目标电路模板中的算子的类型包括执行第一同态运算子任务所需的算子的类型;其中,执行第一同态运算子任务所需的算子包括M个第一类算子,第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在N种候选组合方式对应的第一类算子的数量均小于M的情况下,在N种候选组合方式中,第一目标组合方式对应的第一类算子的数量与M的差值最小,M和N为正整数;将至少一个第一目标电路模板配置到第一硬件加速器中;第一硬件加速器,用于基于至少一个第一目标电路模板执行第一同态运算子任务。
另一方面,本申请实施例提供了一种执行同态运算任务的设备,该设备包括存储器和处理器;其中,存储器,用于存储计算机可执行指令;处理器,与该存储器连接,用于通过执行该计算机可执行指令,实现上述的执行同态运算任务的方法。
另一方面,本申请实施例提供了一种芯片,该芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片的设备执行上述的执行同态运算任务的方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序被至少一个处理器执行时实现上述的执行同态运算任务的方法。
另一方面,本申请实施例提供了一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时,实现上述的执行同态运算任务的方法中的步骤。
在本申请实施例中,上位机可将同态运算任务划分为多个同态运算子任务(包括第一同态运算子任务),并可确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于硬件加速器最多所能配置的电路模板的数量;进一步地,可从该N种候选组合方式中确定第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板,该至少一个第一目标电路模板中的算子的类型包括执行所述第一同态运算子任务所需的算子的类型;其中,执行第一同态运算子任务所需的算子包括M个第一类算子,第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在N种候选组合方式对应的第一类算子的数量均小于M的情况下,在该N种候选组合方式中,第一目标组合方式对应的第一类算子的数量与M的差值最小。进一步地,上位机可将该至少一个第一目标电路模板配置到硬件加速器中,以便于该硬件加速器基于该至少一个第一目标电路模块执行第一同态运算子任务。
根据本申请实施例的方法,上位机可从多个电路模板中尽可能地匹配到最适用于执行第一同态运算子任务的至少一个第一目标电路模板,并可将该至少一个第一目标电路模块配置到硬件加速器,从而,硬件加速器可基于该至少一个第一目标电路模板执行第一同态运算子任务,如此,可提高硬件加速器对该第一同态运算子任务进行加速的加速比,进而提高同态运算任务整体的加速比。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请的技术方案。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1为本申请实施例提供的一种执行同态运算任务的方法的流程示意图一;
图2为本申请实施例提供的电路模板的一例示意图;
图3为本申请实施例提供的硬件加速器的一例示意图;
图4为本申请实施例提供的硬件加速器中的可重配置区域的示意图一;
图5为本申请实施例提供的硬件加速器中的可重配置区域的示意图二;
图6为本申请实施例提供的一种执行同态运算任务的系统的示意图一;
图7为本申请实施例提供的一种执行同态运算任务的系统的示意图二;
图8为本申请实施例提供的一种执行同态运算任务的方法的流程示意图二;
图9为本申请实施例提供的通过调用重配置API将目标电路模板配置到硬件加速器中的实现流程示意图;
图10为本申请实施例提供的一种执行同态运算任务的装置的组成结构示意图;
图11为本申请实施例中执行同态运算任务的设备的一种硬件实体示意图。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本申请实施例中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
应理解,本申请实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
为了加速同态运算,可将一个完整的同态运算任务划分为多个同态运算子任务。其中,一部分同态运算子任务可在上位机中执行(例如,由上位机中的中央处理器(CentralProcessing Unit,CPU)执行),其他部分同态运算子任务可在硬件加速器上执行。
然而,在目前的同态运算加速系统中,大多数硬件加速器的电路结构是固化的,出厂后无法再修改,或者,出厂后可更新硬件加速器的电路结构,但在加速一个完整的同态运算任务的过程中电路结构是固化的。也就是说,目前的硬件加速器在加速一个完整的同态运算任务的过程中电路结构无法改变,不能根据不同的同态运算子任务的特点采用合适的电路结构。由于不同的同态运算子任务使用的算子类型(如模加(Modular Addition,MA)、模乘(Modular Multiplication,MM)、数论变换(Number Theoretic Transform,NTT)、自同构(Automorphism)、模约简等)和数量有较大的差异,故这种采用固定不变的电路结构来加速各种同态运算子任务的方法,会导致部分同态运算子任务的加速比低于其他同态运算子任务,进而影响整体任务的加速比。
鉴于此,本申请实施例提供一种执行方法、装置、系统、设备、芯片、介质及程序产品。在该方法中,上位机可将同态运算任务划分为多个同态运算子任务(包括第一同态运算子任务),并可确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于硬件加速器最多所能配置的电路模板的数量;进一步地,可从该N种候选组合方式中确定第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板,该至少一个第一目标电路模板中的算子的类型包括执行所述第一同态运算子任务所需的算子的类型;其中,执行第一同态运算子任务所需的算子包括M个第一类算子,第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在N种候选组合方式对应的第一类算子的数量均小于M的情况下,在该N种候选组合方式中,第一目标组合方式对应的第一类算子的数量与M的差值最小。进一步地,上位机可将该至少一个第一目标电路模板配置到硬件加速器中,以便于该硬件加速器基于该至少一个第一目标电路模块执行第一同态运算子任务。
根据本申请实施例的方法,上位机可从多个电路模板中尽可能地匹配到最适用于执行第一同态运算子任务的至少一个第一目标电路模板,并可将该至少一个第一目标电路模块配置到硬件加速器,从而,硬件加速器可基于该至少一个第一目标电路模板执行第一同态运算子任务,如此,可提高硬件加速器对该第一同态运算子任务进行加速的加速比,进而提高同态运算任务整体的加速比。
其中,上位机例如可以是能够发出操控命令的计算机,可用于执行计算任务。在本实施例中,上位机还可以用于调用硬件加速器。例如,上位机可通过与硬件加速器之间进行数据/指令的传输,实现对硬件加速器的调用。
在本申请实施例中,硬件加速器基于电路模板(如至少一个第一目标电路模板)执行同态运算子任务(如第一同态运算子任务)的过程,也即硬件加速器对该同态运算子任务进行加速的过程。
下面将结合附图对本申请各实施例进行详细说明。
本申请实施例提供一种执行同态运算任务的方法,该方法例如可应用于上位机。如图1所示,该方法可包括:
S101,将同态运算任务划分为多个同态运算子任务,该多个同态运算子任务包括第一同态运算子任务。
S102,确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于硬件加速器最多所能配置的电路模板的数量。
S103,从该N种候选组合方式中确定第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板。
S104,将该至少一个第一目标电路模板配置到硬件加速器中,该至少一个第一目标电路模板用于硬件加速器执行第一同态运算子任务。
下面分别对上述步骤S101至S104进行详细介绍。
S101,将同态运算任务划分为多个同态运算子任务,该多个同态运算子任务包括第一同态运算子任务。
在该步骤中,上位机可将一个完整的同态运算任务划分为多个同态运算子任务,该多个同态运算子任务可包括第一同态运算子任务。
作为一种可能的实现方式,上位机上可运行编译器,将一个完整的同态运算任务输入到编译器后,编译器可根据编译算法将该同态运算任务划分为多个同态运算子任务,其中,不同的同态运算子任务的类型可能相同或不同。基于不同的编译算法,可划分得到不同数量和类型的同态运算子任务,本申请对于编译器所采用的编译算法不予限定。
需要说明的是,在一些场景中,S101还可以由其他计算机(或上位机)执行,然后由其他计算机(或上位机)将划分同态运算任务的划分结果提供给本上位机(执行S102至S104的上位机),进而,本上位机可基于该划分结果执行S102至S104中的步骤。
S102,确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于硬件加速器最多所能配置的电路模板的数量。
在该步骤中,上位机可确定多个电路模板的N种候选组合方式,其中,每种候选组合方式包含的电路模板的数量大于或等于1,并且,小于或等于硬件加速器最多所能配置的电路模板的数量,其中,N为正整数。
举例来说,假设该多个电路模板包括电路模板#1、电路模板#2和电路模板#3,硬件加速器最多所能配置的电路模板的数量为2,那么,例如可存在以下候选组合方式:
候选组合方式1:包含电路模板#1;
候选组合方式2:包含电路模板#2;
候选组合方式3:包含电路模板#3;
候选组合方式4:包含电路模板#1和电路模板#2;
候选组合方式5:包含电路模板#1和电路模板#3;
候选组合方式6:包含电路模板#2和电路模板#3。
在一些实施例中,硬件加速器最多所能配置的电路模板的数量,例如可由硬件加速器中的可重配置子区域的数量决定。例如,假设硬件加速器中共包括3个可重配置子区域,那么,若每个可重配置子区域可配置1个电路模板,则硬件加速器最多所能配置的电路模板的数量即为3。其中,可重配置子区域的相关介绍将在下文给出,这里暂不详述。
示例性地,该多个电路模板例如可包含在电路模板库中。
在一些实施例中,在执行同态运算任务之前,可预先准备电路模板库,该电路模板库中可包含执行各个同态运算子任务时可能用到的电路模板。例如,在编译器根据编译算法将同态运算任务划分为多个同态运算子任务之后,可根据各个同态运算子任务的特点准备相应的电路模板。
一示例,若存在某个同态运算子任务包含较多的多项式之间的乘法运算,则可相应地准备包含较多NTT算子且其他算子相对较少的电路模板;另一示例,若存在某个同态运算子任务包含较多的多项式之间的模加运算,则可相应地准备包含较多MA算子且其他算子相对较少的电路模板。这样,在执行同态运算任务的过程中,若遇到上述类型的同态运算子任务,则可从电路模板库中选取相应的电路模板配置到硬件加速器中,以用于执行相应类型的同态运算子任务。
在一些实施例中,若出现新的同态运算子任务,且该同态运算子任务无法很好地用电路模板库中已有的电路模板进行加速,则可针对该子任务设计新的电路模板,并将该电路模板加入电路模板库中,以备后续使用。
在一些场景中,本申请实施例中的电路模板(如第一目标电路模板/第二目标电路模板),还可以称为重配置模块。其中,电路模板(重配置模块)例如可以是一种通过专用工具生成的用于描述电路功能结构的比特流。硬件加速器接收到该比特流后,可完成硬件电路功能更换。例如,硬件加速器中可包括配置接口电路,该配置接口电路接收到该比特流后,可基于接收的比特流对硬件加速器中的相关区域(如,可重配置区域)进行配置,以使该区域具有该比特流所描述的电路功能结构。配置完成后,可使得该区域原本的电路功能结构更换为该比特流所描述的电路功能结构,从而实现硬件电路功能更换。
在一些实施例中,电路模板例如可存储在上位机中,或者,可存储在硬件加速器中。示例性地,用于存储电路模板的存储介质可包括但不限于:只读存储器、随机存储器、磁盘、光盘、硬盘。
在一些实施例中,对于使用频率较高的电路模板,可优先存储在硬件加速器中,对于其他使用频率较低的电路模板,可存储在上位机中。
可以理解的是,对于存储在上位机中的电路模板,若要将该电路模板配置到硬件加速器中,则需要通过系统总线或其他传输介质将该电路模板传输至硬件加速器,而对于本身存储在硬件加速器中的电路模板,则可以不需要通过系统总线或其他传输介质进行电路模板的传输。因此,将使用频率较高的电路模板存储在硬件加速器中,可减少通过系统总线或其他传输介质传输电路模板的次数,进而减小对系统带宽的占用。
图2为本申请实施例提供的电路模板的一例示意图。如图2所示,电路模板200中可包括计算电路201。计算电路201中可包括至少一种算子,每种算子的数量可以为一个或多个。一示例,计算电路201中可包括:1个NTT算子、2个MA算子;另一示例,计算电路201中可包括:3个MM算子、一个模约简算子和一个自同构算子。
在一些实施例中,电路模板200中还可以包括以下至少之一:部分总线接口202、内部互联模块203、存储电路204和控制电路205。其中,内部互联模块203可用于实现电路模板200中不同电路之间的互联。
对于不同的电路模板,所包括的内部互联模块、存储电路、控制电路和计算电路的具体功能可以不同。例如,不同电路模板中的计算电路可包括不同类型、数量的算子。
S103,从该N种候选组合方式中确定第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板。
在本实施例中,第一目标组合方式需满足以下条件1和条件2。
条件1:该至少一个第一目标电路模板中的算子的类型包括执行第一同态运算子任务所需的算子的类型。
举例来说,假设执行第一同态运算子任务所需的算子的类型为NTT算子和MM算子,那么,该至少一个第一目标电路模板中的算子的类型,应至少包括NTT算子和MM算子。
条件2:执行第一同态运算子任务所需的算子包括M个第一类算子,第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在N种候选组合方式对应的第一类算子的数量均小于M的情况下,在该N种候选组合方式中,第一目标组合方式对应的第一类算子的数量与M的差值最小,M为正整数。
其中,第一类算子例如可以是执行第一同态运算子任务所需的任意一种算子。
举例来说,假设第一类算子为NTT算子,执行第一同态运算子任务所需的算子包括10个NTT算子(第一类算子),那么,该至少一个第一目标电路模板需符合以下条件A或条件B。
条件A:第一目标组合方式对应的第一类算子的数量大于或等于M。
其中,第一目标组合方式对应的第一类算子的数量,也即该至少一个第一目标电路模板中包含的第一类算子的数量。
作为示例,为了满足条件A,第一目标组合方式对应的第一类算子的数量可以是10、11、12等。如此,可确保该至少一个第一目标电路模板中包含的第一类算子的数量能够满足执行第一同态运算子任务的需求。
条件B:在N种候选组合方式对应的第一类算子的数量均小于M的情况下,在该N种候选组合方式中,第一目标组合方式对应的第一类算子的数量与M的差值最小。
举例来说,假设该N种候选组合方式包括候选组合方式1、候选组合方式2和候选组合方式3,其中,候选组合方式1对应的NTT算子(第一类算子)的数量为7、候选组合方式2对应的NTT算子(第一类算子)的数量为5,候选组合方式3对应的NTT算子(第一类算子)的数量为9。由于候选组合方式3对应的NTT算子(第一类算子)的数量与10(即执行第一同态运算子任务所需的NTT算子的数量)的差值最小,因此,可将候选组合方式3确定为第一目标组合方式。
可以理解的是,在N种候选组合方式对应的第一类算子的数量均小于M的情况下,第一目标组合方式对应的第一类算子的数量与M的差值最小,可说明第一目标组合方式式对应的第一类算子的数量最接近于执行第一同态运算子任务所需的第一类算子的数量,因此,第一目标组合方式是一种相对较优的组合方式,或者说,第一目标组合方式相比于其他候选组合方式更适合于执行第一同态运算子任务。
需要说明的是,若第一目标组合方式对应的第一类算子的数量小于M,则可通过多次处理的方式完成对第一同态运算子任务的处理。举例来说,M为10,第一目标组合方式对应的第一类算子的数量为9,那么,可采用该第一目标组合方式包含的第一目标电路模板执行两次处理,从而完成对第一同态运算子任务的处理。
根据上述技术方案,上位机可从多个电路模板中尽可能地匹配到最适用于执行第一同态运算子任务的至少一个第一目标电路模板,以用于硬件加速器执行该第一同态运算子任务,如此,可提高硬件加速器对第一同态运算子任务进行加速的加速比。此外,相比于目前的在硬件加速器中仅配置一个电路模板且电路模板无法改变的方案,本申请实施例的方案可动态地从多个电路模板中为待执行的同态运算子任务匹配合适的电路模板,从而具有更高的灵活性。由于在实际应用中,可供选择的电路模板的类型和数量可以不断丰富,因此,本方案还具有更高的可扩展性。
需要说明的是,上述算子的类型和数量仅是示例性的,不应对本申请实施例的实施过程构成任何限定。例如,算子的类型可包括但不限于以下至少之一:NTT算子、MA算子、MM算子、自同构算子、模约简算子。
其中,NTT算子可用于加速多项式乘法;MA即计算(a+b) mod q,MA算子可用于加速多项式的模加计算;MM即计算(a×b) mod q,MM算子可用于加速多项式的模乘计算;自同构算子可用于多项式映射;模约简即计算a mod q,模约简算子可用于加速多项式的模约简计算。
在一些实施例中,上位机中存储有组成同态运算任务的多个计算节点,每一计算节点中包含有算子的类型信息和数量信息,该方法还可以包括以下步骤21)和22):
21)确定组成第一同态运算子任务的至少一个计算节点,该至少一个计算节点是组成同态运算任务的多个计算节点的子集。
示例性地,一个完整的同态运算任务可由多个计算节点组成,不同计算节点之间可通过一定的连接关系进行连接,该多个计算节点和不同计算节点之间的连接关系,可通过适当的存储格式存储在上位机中。其中,每个计算节点中包含有算子的类型信息和数量信息,用于描述该同态运算任务所需的算子的类型和数量。将一个同态运算任务划分为多个同态运算子任务后,每个同态运算子任务中可包含至少一个计算节点,该至少一个计算节点是组成同态运算任务的多个计算节点的子集,且该至少一个计算节点所包含的算子的类型信息和数量信息,可用于描述该同态运算子任务所需的算子的类型和数量。
在该步骤中,可确定组成第一同态运算子任务的至少一个计算节点,以便于在步骤22)中基于该至少一个计算节点所包含的算子的类型信息和数量信息,确定执行第一同态运算子任务所需的算子的类型和数量。
22)基于组成第一同态运算子任务的至少一个计算节点中包含的算子的类型信息和数量信息,确定执行第一同态运算子任务所需的算子的类型和数量。
例如,根据算子的类型信息可知,第一同态运算子任务所需的算子的类型为NTT算子,根据算子的数量信息可知,NTT算子的数量为100,那么,即可确定执行第一同态运算子任务所需的算子包括100个NTT算子。
根据本实施例的方法,在确定组成第一同态运算子任务的至少一个计算节点后,可基于该至少一个计算节点中包含的算子的类型信息和数量信息,确定执行第一同态运算子任务所需的算子的类型和数量,从而,可基于执行第一同态运算子任务所需的算子的类型和数量,从N种候选组合方式中确定一种适用于第一同态运算子任务的第一目标组合方式,或者说,确定适用于执行第一同态运算子任务的至少一个第一目标电路模板。
S104,将该至少一个第一目标电路模板配置到硬件加速器中,该至少一个第一目标电路模板用于硬件加速器执行第一同态运算子任务。
在该步骤中,上位机可将上述至少一个第一目标电路模板配置到硬件加速器中,以便于硬件加速器基于该至少一个第一目标电路模板执行第一同态运算子任务。若该硬件加速器中已配置有电路模板,那么,将该至少一个第一目标电路模板配置到该硬件加速器后,该至少一个第一目标电路模板可替换硬件加速器中之前已配置的电路模板,也即,可实现该硬件加速器上的电路模板的更换(重配置)。
在一些实施例中,将至少一个第一目标电路模板配置到硬件加速器中,包括:通过调用应用程序接口(Application Programming Interface,API)(例如可称为重配置API),将至少一个第一目标电路模板配置到硬件加速器中。
需要说明的是,本申请实施例对于API的形式不予限定。作为示例,API的形式例如可以是函数、程序、链接库、包等等。
根据本实施例的方法,上位机可通过调用API,将至少一个第一目标电路模板配置到硬件加速器中,从而,硬件加速器可基于该至少一个第一目标电路模板执行第一同态运算子任务,进而可提高硬件加速器对该第一同态运算子任务进行加速的加速比。
在一些实施例中,通过调用应用程序接口,将至少一个第一目标电路模板配置到硬件加速器中,包括:通过调用应用程序接口,实现以下步骤31)和32):
31)查找该至少一个第一目标电路模板中每一第一目标电路模板的地址。
举例来说,假设该至少一个第一目标电路模板包括第一目标电路模板#1和第一目标电路模板#2,则可分别查找第一目标电路模板#1的地址和第一目标电路模板#2的地址。
32)对于该至少一个第一目标电路模板中的每一第一目标电路模板,若该第一目标电路模板的地址位于硬件加速器,则向硬件加速器发送该第一目标电路模板的地址和长度,以使硬件加速器根据该第一目标电路模板的地址和长度读取并配置该第一目标电路模板;若该第一目标电路模板的地址位于上位机,则向硬件加速器发送该第一目标电路模板,以使硬件加速器配置该第一目标电路模板。
一种可能的情况,该第一目标电路模板(如第一目标电路模板#1或第一目标电路模板#2)的地址位于硬件加速器,也即,该第一目标电路模板存储在硬件加速器中(如存储在硬件加速器的非易失性存储器中)。在该情况下,上位机可向硬件加速器发送该第一目标电路模板的地址和长度。硬件加速器在获知该第一目标电路模板的地址和长度后,可根据该地址和长度读取该第一目标电路模板,并将该第一目标电路模板配置到相应的区域(如硬件加速器中的可重配置区域)。
作为一种实现方式,硬件加速器中可包括配置接口电路,上位机可将第一目标电路模板的地址发送至该配置接口电路,从而,该配置接口电路可通过第一目标电路模板的地址读取第一目标电路模板,进而将第一目标电路模板配置到硬件加速器中的相关区域(如硬件加速器中的可重配置区域)。
另一种可能的情况,该第一目标电路模板(如第一目标电路模板#1或第一目标电路模板#2)的地址位于上位机,也即,该第一目标电路模板存储在上位机中(如存储在上位机的内存或硬盘中)。在该情况下,上位机可向硬件加速器发送该第一目标电路模板,以使硬件加速器配置该第一目标电路模板。
作为一种实现方式,上位机可将该第一目标电路模板发送至硬件加速器中的配置接口电路,该配置接口电路在接收到该第一目标电路模板后,可将该第一目标电路模板配置到硬件加速器中的相关区域(如硬件加速器中的可重配置区域)。
根据本实施例的方法,通过调用API,上位机可根据各个第一目标电路模板的地址(存储位置)采取相应的配置方式,将各个第一目标电路模板配置到硬件加速器中,以便于硬件加速器基于配置的第一目标电路模板执行第一同态运算子任务。
在一些实施例中,硬件加速器包括可重配置区域和不可重配置区域;将至少一个第一目标电路模板配置到硬件加速器中,包括:将至少一个第一目标电路模板配置到该可重配置区域中的至少一个可重配置子区域中。
在一种可能的方式中,每一可重配置子区域可配置一个第一目标电路模板。举例来说,假设该至少一个第一目标电路模板包括第一目标电路模板#1和第一目标电路模板#2,硬件加速器中的可重配置区域包括两个可重配置子区域,那么,可将第一目标电路模板#1配置到其中一个可重配置子区域中,并将第一目标电路模板#2配置到另一个可重配置子区域中。
图3为本申请实施例提供的硬件加速器的一例示意图。其中,硬件加速器300可包括不可重配置区域301和可重配置区域302。
如图3所示,不可重配置区域301中可包括配置接口电路3011和非易失性存储器3012。其中,配置接口电路3011可用于接收或读取电路模板,进而基于接收或读取的电路模板对可重配置区域302进行配置,以使可重配置区域302具有该电路模板中的电路功能结构。非易失性存储器3012例如可用于存储电路模板。
如图3所示,可重配置区域302中可包括内部互联模块3021、存储电路3022、控制电路3023和计算电路3024。其中。内部互联模块3021可用于实现可重配置区域302中不同电路之间的互联。计算电路3024中可包括用于执行同态运算任务/子任务的至少一种算子。
需要说明的是,可重配置区域302中已有的电路功能结构可被重配置,或者说,可被更换。例如,配置接口电路3011可将其他电路模板配置到可重配置区域302中,那么,可重配置区域302中已有的电路功能结构将被更换为该电路模板中的电路功能结构。
如图3所示,硬件加速器300中还可以包括总线接口303,该总线接口303中的部分总线接口可位于不可重配置区域301中,其余部分总线接口可位于可重配置区域302中。
在一些实施例中,硬件加速器的可重配置区域可包括至少一个可重配置子区域,其中,每个可重配置子区域可配置一种电路模板。
图4为本申请实施例提供的硬件加速器中的可重配置区域的示意图一。如图4所示,硬件加速器的可重配置区域400可包括一个可重配置子区域(即可重配置子区域401)。在一些实施例中,可重配置子区域401中可配置有部分总线接口402。
图5为本申请实施例提供的硬件加速器中的可重配置区域的示意图二。如图5所示,硬件加速器的可重配置区域500可包括两个可重配置子区域(即可重配置子区域501和可重配置子区域502)。在一些实施例中,至少一个可重配置子区域可配置有部分总线接口503。例如在图5中,可重配置子区域501中配置有部分总线接口503。
需要说明的是,图4和图5中的可重配置子区域的数量仅是示例性的,不应对本申请实施例的实施过程构成任何限定。例如,在其他一些场景中,硬件加速器的可重配置区域还可以包括三个、四个或更多的可重配置子区域。
还需要说明的是,硬件加速器的可重配置区域的最大资源量在出厂之后则固定不变,也就是说,可重配置区域所能实现的算子的数量上限是确定的,因此不同类型的算子数量需要进行合理的配比。例如,可重配置区域最多能实现100个NTT算子,或者,可实现50个NTT算子与30个MM算子和20个MA算子的组合。
在一些实施例中,将同态运算任务划分成的多个同态运算子任务中,还可以包括由上位机执行(如由上位机中的CPU执行)的第二同态运算子任务,该第二同态运算子任务的执行顺序在第一同态运算子任务之前。在该情况下,将至少一个第一目标电路模板配置到硬件加速器中,可包括:在执行第二同态运算子任务的过程中,将至少一个第一目标电路模板配置到硬件加速器中。
也就是说,若在执行第一同态运算子任务之前需执行第二同态运算子任务,且该第二同态运算子任务需由上位机(如上位机中的CPU)执行,那么,将至少一个第一目标电路模板配置到硬件加速器中这一步骤,可以与第二同态运算子任务并行进行。例如,上位机可在执行第二同态运算子任务的过程中调用API,以实现在执行第二同态运算子任务的过程中将至少一个第一目标电路模板配置到硬件加速器中。
根据本实施例的方法,上位机可在执行第二同态运算子任务的过程中,将至少一个第一目标电路模板配置到硬件加速器中,如此,在执行完第二同态运算子任务后,硬件加速器无需等待即可开始执行第一同态运算子任务,从而有利于减小执行同态运算任务的时间开销。
在一些实施例中,用于执行各个同态运算子任务的装置,以及各个同态运算子任务的执行顺序,可由编译器所采用的编译算法决定。换句话说,在同态运算任务开始执行之前,编译器即可根据编译算法确定哪一部分同态运算子任务由上位机(如上位机中的CPU)执行,哪一部分同态运算子任务由硬件加速器执行。
在一些实施例中,将同态运算任务划分成的多个同态运算子任务中,还包括第三同态运算子任务,第三同态运算子任务的执行顺序在第一同态运算子任务之后,该方法还可以包括以下步骤51)和52):
51)从N种候选组合方式中确定第二目标组合方式,第二目标组合方式包含至少一个第二目标电路模板,该至少一个第二目标电路模板中的算子的类型包括执行第三同态运算子任务所需的算子的类型;
其中,执行第三同态运算子任务所需的算子包括L个第一类算子,第二目标组合方式对应的第一类算子的数量大于或等于L,或者,在N种候选组合方式对应的第一类算子的数量均小于L的情况下,在N种候选组合方式中,第二目标组合方式对应的第一类算子的数量与L的差值最小,L为正整数。
52)将该至少一个第二目标电路模板配置到硬件加速器中,该至少一个第二目标电路模板用于硬件加速器执行第三同态运算子任务。
也就是说,为执行第一同态运算子任务,可通过S103中的方案确定适用于执行第一同态运算子任务的至少一个第一目标电路模板,并可将该至少一个第一目标电路模板配置到硬件加速器中,以便于硬件加速器基于该至少一个第一目标电路模板执行第一同态运算子任务。进一步地,在执行到第三同态运算子任务时,可通过步骤51)和52)确定适用于执行第三同态运算子任务的至少一个第二目标电路模板,并可将该至少一个第二目标电路模板配置到硬件加速器中,以便于硬件加速器基于该至少一个第二目标电路模板执行第三同态运算子任务。
在一些实施例中,将该至少一个第二目标电路模板配置到硬件加速器后,该至少一个第二目标电路模板可替换硬件加速器中之前已配置的至少一个第一目标电路模板,也即,可实现该硬件加速器中的电路模板的动态更换。
根据本实施例的方法,对于硬件加速器所执行的不同的同态运算子任务,可动态地为不同的同态运算子任务匹配合适的电路模板,如此,可使得不同的同态运算子任务均能够通过恰当的电路模板被执行,从而可提高同态运算任务整体的加速比。
在一些实施例中,对于同态运算任务包括的每一个需使用硬件加速器执行的同态运算子任务,均可适用于上述第一同态运算子任务/第三同态运算子任务所适用的方案。也就是说,对于每一个需使用硬件加速器执行的同态运算子任务,均可确定适用于执行该同态运算子任务的至少一个目标电路模板,并将确定的至少一个目标电路模板配置到执行该同态运算子任务的硬件加速器中。如此,可使得每一个需使用硬件加速器执行的同态运算子任务均能够通过恰当的电路模板被执行,从而可提高同态运算任务整体的加速比。
本申请实施例还提供一种执行同态运算任务的系统。该系统包括:上位机和至少一个硬件加速器。
其中,上位机可用于执行以下步骤:将同态运算任务划分为多个同态运算子任务,多个同态运算子任务包括第一同态运算子任务;确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于第一硬件加速器最多所能配置的电路模板的数量,该至少一个硬件加速器包括第一硬件加速器;从N种候选组合方式中确定第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板,该至少一个第一目标电路模板中的算子的类型包括执行第一同态运算子任务所需的算子的类型;其中,执行第一同态运算子任务所需的算子包括M个第一类算子,第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在N种候选组合方式对应的第一类算子的数量均小于M的情况下,在N种候选组合方式中,第一目标组合方式对应的第一类算子的数量与M的差值最小,M和N为正整数;将该至少一个第一目标电路模板配置到第一硬件加速器中。
第一硬件加速器,可用于基于该至少一个第一目标电路模板执行第一同态运算子任务。
在一些实施例中,该系统中的上位机,可用于实现上述执行同态运算任务的方法中由上位机实现的相应的功能;该系统中的第一硬件加速器,可用于实现上述执行同态运算任务的方法中由硬件加速器(即执行第一同态运算子任务/第三同态运算子任务的硬件加速器)实现的相应的功能,为了简洁,在此不再赘述。
图6为本申请实施例提供的一种执行同态运算任务的系统的示意图一。如图6所示,执行同态运算任务的系统600可包括:上位机601和至少一个硬件加速器(如图6中的硬件加速器602和硬件加速器603)。在一些实施例中,执行同态运算任务的系统600还可以包括总线604(系统总线)。在一些实施例中,上位机601可进一步包括内存、CPU和硬盘等外设。在一些实施例中,硬件加速器(如硬件加速器602和硬件加速器603)也可以部署在上位机601中。
图7为本申请实施例提供的一种执行同态运算任务的系统的示意图二。如图7所示,执行同态运算任务的系统700可包括:内存701、CPU 702(CPU 702上可运行操作系统)、至少一个硬件加速器(如图7中的硬件加速器703和硬件加速器704)、硬盘等外设705、总线706(系统总线)。其中,内存701、CPU 702和硬盘等外设705可部署在上位机中。在一些实施例中,硬件加速器(如硬件加速器703和硬件加速器704)也可以部署在上位机中。
为便于理解本申请的实施例,下面结合图8和图9介绍本申请实施例提供的执行同态运算任务的方法的一种可能的实现流程。
本申请实施例提供一种执行同态运算任务的方法。如图8所示,该方法可包括:
S801,启动同态运算任务。
在该步骤中,可启动一个完整的同态运算任务。该同态运算任务启动后,上位机可通过编译器将该同态运算任务划分为多个同态运算子任务。
作为示例,编译器可将该同态运算任务划分为5个顺序执行的同态运算子任务(分别为同态运算子任务#1至同态运算子任务#5)和一个重配置子任务(对应S805)。其中,同态运算子任务#1、同态运算子任务#3、同态运算子任务#5可分配给上位机中的CPU执行,同态运算子任务#2和同态运算子任务#4可分配给硬件加速器执行。
S802,CPU执行同态运算子任务#1。
在该步骤中,CPU可执行分配给该CPU的同态运算子任务#1。
S803,硬件加速器执行同态运算子任务#2。
同态运算子任务#1执行完成后,硬件加速器可执行分配给该硬件加速器的同态运算子任务#2。
在本实施例中,假设适用于执行同态运算子任务#2的电路模板即为该硬件加速器中默认配置的电路模板,因此,在执行同态运算子任务#2之前,可以不需要为该硬件加速器配置其他电路模板。也即,硬件加速器可使用默认配置的电路模板执行同态运算子任务#2。
S804,CPU执行同态运算子任务#3。
同态运算子任务#2执行完成后,CPU可执行分配给该CPU的同态运算子任务#3。为了减小执行同态运算任务的时间开销,在CPU执行同态运算子任务#3的过程中,还可以执行以下步骤S805:
S805,将电路模板#2配置到硬件加速器中。
在本实施例中,假设适用于执行同态运算子任务#4的电路模板(目标电路模板)为电路模板#2,那么,在执行同态运算子任务#4之前,上位机可通过调用重配置API,将电路模板#2配置到硬件加速器中的指定重配置区域。由于S805和S804并行执行,因此可消除上位机调用重配置API的时间开销。
其中,S805也可以认为是同态运算任务中的其中一个子任务,该类子任务例如可称为重配置子任务。
S806,硬件加速器执行同态运算子任务#4。
在该步骤中,硬件加速器可使用S805中为该硬件加速器配置的电路模板#2执行同态运算子任务#4。
S807,CPU执行同态运算子任务#5。
在该步骤中,CPU可执行分配给该CPU的同态运算子任务#5。
S808,同态运算任务结束。
需要说明的是,在图8的例子中,将一个完整的同态运算任务划分为3个由CPU执行的同态运算子任务、2个由硬件加速器执行的同态运算子任务和1个重配置子任务,该划分方式以及各个子任务的执行顺序仅是示例性的。在其他一些场景中,还可以有其他的划分方式,本申请实施例对此不予限定。例如,在一个完整的同态运算任务中,各类子任务的数量可以大于或等于0个。
图9为本申请实施例提供的通过调用重配置API将目标电路模板配置到硬件加速器中的实现流程示意图。如图9所示,该实现流程可包括:
S901,启动重配置API。
重配置API被上位机启动(调用)后,可实现以下步骤S902至S904:
S902,查找目标电路模板的地址。
其中,目标电路模板为适用于执行某个同态运算子任务(如同态运算子任务#4)的电路模板。
若该目标电路模板的地址位于硬件加速器,则可执行S903;若该目标电路模板的地址位于上位机,则可执行S904。本实施例中的硬件加速器为编译器确定的用于执行上述同态运算子任务(如同态运算子任务#4)的硬件加速器。
S903,向硬件加速器发送目标电路模板的地址;硬件加速器中的配置接口电路从该地址启动配置。
若目标电路模板的地址位于硬件加速器,也即,目标电路模板存储在硬件加速器中(如存储在硬件加速器的非易失性存储器中),则上位机可向硬件加速器发送目标电路模板的地址。进一步地,硬件加速器中的配置接口电路可从该地址启动配置,也即,配置接口电路可通过该地址读取目标电路模板,并将读取的目标电路模板配置到硬件加速器中的可重配置区域。
S904,启动硬件加速器的配置接口电路;将目标电路模板发往该配置接口电路。
若目标电路模板的地址位于上位机,也即,目标电路模板存储在上位机中,则上位机可将目标电路模板通过总线或其他传输介质发往硬件加速器的配置接口电路。进一步地,配置接口电路可将该目标电路模板配置到硬件加速器中的可重配置区域。
S905,重配置结束。
在图9中,对于存储在不同位置的电路模板,对外可提供一个API接口(重配置API)。例如在图9中,通过调用重配置API,可为硬件加速器配置存储在该硬件加速器中的电路模板,也可以为硬件加速器配置存储在上位机中的电路模板。
在一些实施例中,对于存储在不同位置的电路模板,对外还可以提供多个(如两个)API接口。API接口实现的功能包括:从硬件加速器的存储器和/或上位机的存储器加载电路模板并完成配置。
在一些实施例中,硬件加速器完成电路模板(目标电路模板)的配置后,可通过查询或中断等形式将完成信号反馈给上位机。
本申请实施例提供了一种执行同态运算任务的方法,该方法基于类现场可编程门阵列(Field Programmable Gate Array,FPGA),将硬件加速器分为不可重配置区域(固化区域)和可重配置区域(非固化区域),通过可重配置区域,可实现在线更换硬件电路功能。在一些实施例中,可将高频使用的重配置模块优先存储在硬件加速器上以减小对系统带宽的占用,其他重配置模块存储于上位机。相应地,可提供重配置API用于将指定电路模板(重配置模块)加载到指定可重配置区域。上位机使用重配置API,即可在执行同一个同态运算任务过程中,以更高的整体任务加速比为目标,动态地调整硬件加速器中可重配置区域的电路结构,使得即将执行的同态运算子任务能够在合适的电路结构上执行。
根据本申请实施例的方法,有了“可重配置区域和子区域”的划分和“重配置模块”库的准备,进一步通过优化的分类存储方式,借助“重配置API”,编译器能够编译出包含重配置子任务的性能更优的完整任务,从而提高同态运算子任务类型和数量较多的同态运算任务的加速比。
该方法基于类FPGA提供重配置API,支持上位机运算时为不同的同态运算子任务选取适合的电路模板,或者说,选取合适的加速电路结构,从而可使得各种同态运算子任务均能达到满意的加速比。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。又例如,在不冲突的前提下,本申请描述的各个实施例和/或各个实施例中的技术特征可以和现有技术任意的相互组合,组合之后得到的技术方案也应落入本申请的保护范围。
基于前述的实施例,本申请实施例提供相应的执行同态运算任务的装置。该装置包括所包括的各模块、以及各模块所包括的各子模块,可以通过具有信息处理能力的计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为CPU、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital SignalProcessor,DSP)或FPGA等。
本申请实施例提供一种执行同态运算任务的装置,如图10所示,执行同态运算任务的装置1000(以下简称为装置1000)可以包括:
划分单元1001,用于将同态运算任务划分为多个同态运算子任务,多个同态运算子任务包括第一同态运算子任务;第一确定单元1002,用于确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于硬件加速器最多所能配置的电路模板的数量;第二确定单元1003,用于从N种候选组合方式中确定第一目标组合方式,第一目标组合方式包含至少一个第一目标电路模板,至少一个第一目标电路模板中的算子的类型包括执行第一同态运算子任务所需的算子的类型;其中,执行第一同态运算子任务所需的算子包括M个第一类算子,第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在N种候选组合方式对应的第一类算子的数量均小于M的情况下,在N种候选组合方式中,第一目标组合方式对应的第一类算子的数量与M的差值最小,M和N为正整数;第一配置单元1004,用于将至少一个第一目标电路模板配置到硬件加速器中,至少一个第一目标电路模板用于硬件加速器执行第一同态运算子任务。
在一些实施例中,上位机中存储有组成同态运算任务的多个计算节点,每一计算节点中包含有算子的类型信息和数量信息;装置1000还包括:第三确定单元,用于确定组成第一同态运算子任务的至少一个计算节点,至少一个计算节点是多个计算节点的子集;第四确定单元,用于基于至少一个计算节点中包含的算子的类型信息和数量信息,确定执行第一同态运算子任务所需的算子的类型和数量。
在一些实施例中,第一配置单元1004,具体用于:通过调用应用程序接口,将至少一个第一目标电路模板配置到硬件加速器中。
在一些实施例中,第一配置单元1004,具体用于:通过调用应用程序接口,实现以下步骤:查找至少一个第一目标电路模板中每一第一目标电路模板的地址;对于至少一个第一目标电路模板中的每一第一目标电路模板,若该第一目标电路模板的地址位于硬件加速器,则向硬件加速器发送该第一目标电路模板的地址和长度,以使硬件加速器根据第一目标电路模板的地址和长度读取并配置第一目标电路模板;若该第一目标电路模板的地址位于装置1000,则向硬件加速器发送该第一目标电路模板,以使硬件加速器配置该第一目标电路模板。
在一些实施例中,硬件加速器包括可重配置区域和不可重配置区域;第一配置单元1004,具体用于:将至少一个第一目标电路模板配置到可重配置区域中的至少一个可重配置子区域中。
在一些实施例中,多个同态运算子任务还包括由装置1000执行的第二同态运算子任务,第二同态运算子任务的执行顺序在第一同态运算子任务之前;第一配置单元1004,具体用于:在执行第二同态运算子任务的过程中,将至少一个第一目标电路模板配置到硬件加速器中。
在一些实施例中,多个同态运算子任务还包括第三同态运算子任务,第三同态运算子任务的执行顺序在第一同态运算子任务之后,装置1000还包括:第五确定单元,从N种候选组合方式中确定第二目标组合方式,第二目标组合方式包含至少一个第二目标电路模板,至少一个第二目标电路模板中的算子的类型包括执行第三同态运算子任务所需的算子的类型;其中,执行第三同态运算子任务所需的算子包括L个第一类算子,第二目标组合方式对应的第一类算子的数量大于或等于L,或者,在N种候选组合方式对应的第一类算子的数量均小于L的情况下,在N种候选组合方式中,第二目标组合方式对应的第一类算子的数量与L的差值最小,L为正整数;第二配置单元,用于将至少一个第二目标电路模板配置到硬件加速器中,至少一个第二目标电路模板用于硬件加速器执行第三同态运算子任务。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本申请实施例提供的装置具有的功能或包含的模块/单元可以用于执行上述方法实施例描述的方法,对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本申请实施例还提供一种执行同态运算任务的设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
本申请实施例还提供一种芯片。该芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片的设备执行上述方法中的部分或全部步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本申请实施例还提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在设备(如上位机)中运行的情况下,所述设备中的处理器执行上述方法中的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、芯片、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、芯片、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供一种执行同态运算任务的设备,如图11所示,执行同态运算任务的设备1100(以下简称为设备1100)包括处理器1110,处理器1110可以从存储器中调用并运行计算机程序,以实现本申请实施例中的方法。
在一些实施例中,如图11所示,设备1100还可以包括存储器1120。其中,处理器1110可以从存储器1120中调用并运行计算机程序,以实现本申请实施例中的方法。其中,存储器1120可以是独立于处理器1110的一个单独的器件,也可以集成在处理器1110中。
在一些实施例中,如图11所示,设备1100还可以包括收发器1130,处理器1110可以控制该收发器1130与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。其中,收发器1130可以包括发射机和接收机。收发器1130还可以进一步包括天线,天线的数量可以为一个或多个。
应理解,说明书通篇中提到的“一个实施例”、“一实施例”或“一些实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”、“在一实施例中”或“在一些实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (13)

1.一种执行同态运算任务的方法,其特征在于,应用于上位机,所述方法包括:
将同态运算任务划分为多个同态运算子任务,所述多个同态运算子任务包括第一同态运算子任务;
确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于硬件加速器最多所能配置的电路模板的数量;
从所述N种候选组合方式中确定第一目标组合方式,所述第一目标组合方式包含至少一个第一目标电路模板,所述至少一个第一目标电路模板中的算子的类型包括执行所述第一同态运算子任务所需的算子的类型;
其中,执行所述第一同态运算子任务所需的算子包括M个第一类算子,所述第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在所述N种候选组合方式对应的第一类算子的数量均小于M的情况下,在所述N种候选组合方式中,所述第一目标组合方式对应的第一类算子的数量与M的差值最小,M和N为正整数;
将所述至少一个第一目标电路模板配置到所述硬件加速器中,所述至少一个第一目标电路模板用于所述硬件加速器执行所述第一同态运算子任务。
2.根据权利要求1所述的方法,其特征在于,所述上位机中存储有组成所述同态运算任务的多个计算节点,每一计算节点中包含有算子的类型信息和数量信息;所述方法还包括:
确定组成所述第一同态运算子任务的至少一个计算节点,所述至少一个计算节点是所述多个计算节点的子集;
基于所述至少一个计算节点中包含的算子的类型信息和数量信息,确定执行所述第一同态运算子任务所需的算子的类型和数量。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述至少一个第一目标电路模板配置到所述硬件加速器中,包括:
通过调用应用程序接口,将所述至少一个第一目标电路模板配置到所述硬件加速器中。
4.根据权利要求3所述的方法,其特征在于,所述通过调用应用程序接口,将所述至少一个第一目标电路模板配置到所述硬件加速器中,包括:
通过调用所述应用程序接口,实现以下步骤:
查找所述至少一个第一目标电路模板中每一第一目标电路模板的地址;
对于所述至少一个第一目标电路模板中的每一第一目标电路模板,若所述第一目标电路模板的地址位于所述硬件加速器,则向所述硬件加速器发送所述第一目标电路模板的地址和长度,以使所述硬件加速器根据所述第一目标电路模板的地址和长度读取并配置所述第一目标电路模板;若所述第一目标电路模板的地址位于所述上位机,则向所述硬件加速器发送所述第一目标电路模板,以使所述硬件加速器配置所述第一目标电路模板。
5.根据权利要求1或2所述的方法,其特征在于,所述硬件加速器包括可重配置区域和不可重配置区域;所述将所述至少一个第一目标电路模板配置到所述硬件加速器中,包括:
将所述至少一个第一目标电路模板配置到所述可重配置区域中的至少一个可重配置子区域中。
6.根据权利要求1或2所述的方法,其特征在于,所述多个同态运算子任务还包括由所述上位机执行的第二同态运算子任务,所述第二同态运算子任务的执行顺序在所述第一同态运算子任务之前;
所述将所述至少一个第一目标电路模板配置到所述硬件加速器中,包括:
在执行所述第二同态运算子任务的过程中,将所述至少一个第一目标电路模板配置到所述硬件加速器中。
7.根据权利要求1或2所述的方法,其特征在于,所述多个同态运算子任务还包括第三同态运算子任务,所述第三同态运算子任务的执行顺序在所述第一同态运算子任务之后,所述方法还包括:
从所述N种候选组合方式中确定第二目标组合方式,所述第二目标组合方式包含至少一个第二目标电路模板,所述至少一个第二目标电路模板中的算子的类型包括执行所述第三同态运算子任务所需的算子的类型;
其中,执行所述第三同态运算子任务所需的算子包括L个第一类算子,所述第二目标组合方式对应的第一类算子的数量大于或等于L,或者,在所述N种候选组合方式对应的第一类算子的数量均小于L的情况下,在所述N种候选组合方式中,所述第二目标组合方式对应的第一类算子的数量与L的差值最小,L为正整数;
将所述至少一个第二目标电路模板配置到硬件加速器中,所述至少一个第二目标电路模板用于所述硬件加速器执行所述第三同态运算子任务。
8.一种执行同态运算任务的装置,其特征在于,所述装置包括:
划分单元,用于将同态运算任务划分为多个同态运算子任务,所述多个同态运算子任务包括第一同态运算子任务;
第一确定单元,用于确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于硬件加速器最多所能配置的电路模板的数量;
第二确定单元,用于从所述N种候选组合方式中确定第一目标组合方式,所述第一目标组合方式包含至少一个第一目标电路模板,所述至少一个第一目标电路模板中的算子的类型包括执行所述第一同态运算子任务所需的算子的类型;
其中,执行所述第一同态运算子任务所需的算子包括M个第一类算子,所述第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在所述N种候选组合方式对应的第一类算子的数量均小于M的情况下,在所述N种候选组合方式中,所述第一目标组合方式对应的第一类算子的数量与M的差值最小,M和N为正整数;
第一配置单元,用于将所述至少一个第一目标电路模板配置到所述硬件加速器中,所述至少一个第一目标电路模板用于所述硬件加速器执行所述第一同态运算子任务。
9.一种执行同态运算任务的系统,其特征在于,所述系统包括:上位机和至少一个硬件加速器;其中,所述上位机,用于执行以下步骤:
将同态运算任务划分为多个同态运算子任务,所述多个同态运算子任务包括第一同态运算子任务;
确定多个电路模板的N种候选组合方式,每种候选组合方式包含的电路模板的数量大于或等于1,且小于或等于第一硬件加速器最多所能配置的电路模板的数量,所述至少一个硬件加速器包括所述第一硬件加速器;
从所述N种候选组合方式中确定第一目标组合方式,所述第一目标组合方式包含至少一个第一目标电路模板,所述至少一个第一目标电路模板中的算子的类型包括执行所述第一同态运算子任务所需的算子的类型;
其中,执行所述第一同态运算子任务所需的算子包括M个第一类算子,所述第一目标组合方式对应的第一类算子的数量大于或等于M,或者,在所述N种候选组合方式对应的第一类算子的数量均小于M的情况下,在所述N种候选组合方式中,所述第一目标组合方式对应的第一类算子的数量与M的差值最小,M和N为正整数;
将所述至少一个第一目标电路模板配置到所述第一硬件加速器中;
所述第一硬件加速器,用于基于所述至少一个第一目标电路模板执行所述第一同态运算子任务。
10.一种执行同态运算任务的设备,其特征在于,所述设备包括:
存储器,用于存储计算机可执行指令;
处理器,与所述存储器连接,用于通过执行所述计算机可执行指令,实现权利要求1至7中任一项所述的方法。
11.一种芯片,其特征在于,所述芯片包括:
处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行权利要求1至7中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现权利要求1至7中任一项所述的方法。
13.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时,实现权利要求1至7中任一项所述的方法中的步骤。
CN202410172734.1A 2024-02-07 2024-02-07 执行方法、装置、系统、设备、芯片、介质及程序产品 Active CN117724678B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410172734.1A CN117724678B (zh) 2024-02-07 2024-02-07 执行方法、装置、系统、设备、芯片、介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410172734.1A CN117724678B (zh) 2024-02-07 2024-02-07 执行方法、装置、系统、设备、芯片、介质及程序产品

Publications (2)

Publication Number Publication Date
CN117724678A true CN117724678A (zh) 2024-03-19
CN117724678B CN117724678B (zh) 2024-05-17

Family

ID=90202035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410172734.1A Active CN117724678B (zh) 2024-02-07 2024-02-07 执行方法、装置、系统、设备、芯片、介质及程序产品

Country Status (1)

Country Link
CN (1) CN117724678B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198971A1 (en) * 2003-02-05 2007-08-23 Dasu Aravind R Reconfigurable processing
US20120047126A1 (en) * 2007-08-27 2012-02-23 Teradata Us, Inc. Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators
CN108776649A (zh) * 2018-06-11 2018-11-09 山东超越数控电子股份有限公司 一种基于cpu+fpga异构计算系统及其加速方法
CN109791508A (zh) * 2016-09-29 2019-05-21 亚马逊科技公司 具有多个可重配置区域的可配置逻辑平台
US20220116198A1 (en) * 2020-10-12 2022-04-14 Samsung Electronics Co., Ltd. Homomorphic operation accelerator and homomorphic operation performing device including the same
CN115374052A (zh) * 2022-08-30 2022-11-22 中国人民解放军63921部队 用于可重构密码阵列的任务处理方法及装置
CN116302102A (zh) * 2023-03-24 2023-06-23 深圳市纽创信安科技开发有限公司 一种同态运算装置和方法
CN117076092A (zh) * 2023-10-13 2023-11-17 成都登临科技有限公司 多维数据任务的处理方法、装置、电子设备及存储介质
CN117193988A (zh) * 2023-10-17 2023-12-08 上海人工智能创新中心 一种晶圆级架构ai加速芯片的任务调度方法及介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198971A1 (en) * 2003-02-05 2007-08-23 Dasu Aravind R Reconfigurable processing
US20120047126A1 (en) * 2007-08-27 2012-02-23 Teradata Us, Inc. Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators
CN109791508A (zh) * 2016-09-29 2019-05-21 亚马逊科技公司 具有多个可重配置区域的可配置逻辑平台
CN108776649A (zh) * 2018-06-11 2018-11-09 山东超越数控电子股份有限公司 一种基于cpu+fpga异构计算系统及其加速方法
US20220116198A1 (en) * 2020-10-12 2022-04-14 Samsung Electronics Co., Ltd. Homomorphic operation accelerator and homomorphic operation performing device including the same
CN115374052A (zh) * 2022-08-30 2022-11-22 中国人民解放军63921部队 用于可重构密码阵列的任务处理方法及装置
CN116302102A (zh) * 2023-03-24 2023-06-23 深圳市纽创信安科技开发有限公司 一种同态运算装置和方法
CN117076092A (zh) * 2023-10-13 2023-11-17 成都登临科技有限公司 多维数据任务的处理方法、装置、电子设备及存储介质
CN117193988A (zh) * 2023-10-17 2023-12-08 上海人工智能创新中心 一种晶圆级架构ai加速芯片的任务调度方法及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谢羽威 等: "基于模板的粗粒度可重构处理器编译环境设计", 微电子学与计算机, vol. 30, no. 7, 5 July 2013 (2013-07-05), pages 37 - 41 *

Also Published As

Publication number Publication date
CN117724678B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
CN107145380B (zh) 虚拟资源编排方法及装置
US20190213029A1 (en) Fpga-based method for network function accelerating and system thereof
CN111324558B (zh) 数据处理方法、装置、分布式数据流编程框架及相关组件
KR102184512B1 (ko) 관리 방법 및 디바이스
CN108572845B (zh) 分布式微服务集群的升级方法及相关系统
CN108628660B (zh) 一种虚拟机扩缩容方法及虚拟管理设备
US11082297B2 (en) Network system and management method and apparatus thereof
CN112035121B (zh) 一种边缘应用部署方法及系统
CN112069460A (zh) 数据处理方法、装置以及电子设备
CN111538545A (zh) Java应用运行方法、装置、介质及电子设备
CN113254240B (zh) 一种管理控制设备的方法、系统、设备及介质
CN113190282A (zh) 安卓运行环境构建的方法及装置
KR101945941B1 (ko) 라디오 어플리케이션을 실행하는 방법 및 단말 장치
CN117724678B (zh) 执行方法、装置、系统、设备、芯片、介质及程序产品
US10671429B2 (en) Circuit assignment within reconfigurable device based on predicted shortest processing completion time
CN107797845B (zh) 用于访问容器的方法和装置
CN109508193B (zh) 一种应用部署运行方法、装置、终端设备和介质
CN113849277B (zh) 网卡测试方法、装置、计算机设备及计算机可读存储介质
CN113918290A (zh) 一种api调用方法以及装置
KR20220036493A (ko) 뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치
Saldaña et al. Using partial reconfiguration in an embedded message-passing system
CN108206745B (zh) 业务的操作方法、装置及云计算系统
CN112379868B (zh) 基于可重构芯片的网络数据包处理的编程方法
CN114398095A (zh) 算子的卸载及注册方法、装置、存储介质及电子装置
CN118057772A (zh) 部署虚拟化网络功能的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant