CN112148437B - 用于联邦学习的计算任务加速处理方法、装置及设备 - Google Patents
用于联邦学习的计算任务加速处理方法、装置及设备 Download PDFInfo
- Publication number
- CN112148437B CN112148437B CN202011131111.8A CN202011131111A CN112148437B CN 112148437 B CN112148437 B CN 112148437B CN 202011131111 A CN202011131111 A CN 202011131111A CN 112148437 B CN112148437 B CN 112148437B
- Authority
- CN
- China
- Prior art keywords
- computing
- parallel computing
- parallel
- data
- block
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Complex Calculations (AREA)
Abstract
本说明书的实施例提供用于实现计算任务加速处理的方法及装置。在该方法中,从外部设备接收计算任务和计算数据;根据计算任务的操作类型和计算数据的数据大小确定计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案,各个并行计算分块内利用所分配的多个线程来实现并行计算。然后,根据分块线程资源分配方案来调用并行计算架构执行并行计算得到计算结果;并且将计算结果提供给外部设备。利用该方法,可以使用基于分块并行和线程并行的双层并行处理方案来高效地实现计算任务并行处理。
Description
技术领域
本说明书实施例通常涉及联邦学习领域,尤其涉及用于实现联邦学习中的计算任务加速处理的方法、装置及硬件加速设备。
背景技术
在例如联邦学习的应用场景下会遇到计算密集型任务处理。例如,在联邦学习过程中,各个建模参与方在本地迭代数据,由此计算例如梯度,神经网络权值等参数。这些参数会被中央协调者获得。当中央协调者不是完全可以信任时,就有可能会泄露建模参与方的隐私。为了解决数据隐私安全问题,现有联邦学习框架如FATE,AngelFL等采用了Paillier同态加密技术。在密态环境中,各个建模参与方将本地迭代出来的模型参数更新信息加密后发往中央协调者,中央协调者直接在密文上进行运算而无法知道真实的数据,从而保证了各个建模参与方不会向中央协调者泄露任何信息。
但是密态计算会使得参与计算的数据发生数据膨胀。例如,在采用1024-bit位的Paillier同态加密后,一个浮点数的体积会膨胀到2048-bit。此外,密态计算还会造成基础算子的改变。例如,Paillier同态加密支持的运算包括:密文+密文,密文+明文,以及密文*明文。但是这里的加法和乘法实际上分别代表模乘计算和模幂计算。数据膨胀和基础算子改变大大增加了联邦学习过程的计算工作量,由此使得联邦学习的效率低下。如何实现联邦学习中的计算任务加速处理,成为亟待解决的问题。
发明内容
鉴于上述,本说明书的实施例提供一种用于实现联邦学习中的计算任务加速处理的方法、装置及联邦学习成员设备。利用该方法及装置,可以使用基于分块并行和线程并行的双层并行处理方案来高效地实现联邦学习中的计算任务并行处理。
根据本说明书的实施例的一个方面,提供一种用于实现联邦学习中的计算任务加速处理的方法,所述方法由具有并行计算架构的硬件加速设备执行,所述方法包括:从算法实现层接收计算任务和计算数据;根据所述计算任务的操作类型和所述计算数据的数据大小确定所述计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案,各个并行计算分块内利用所分配的多个线程来进行并行计算;根据所述分块线程资源分配方案来调用所述并行计算架构执行并行计算得到计算结果;以及将所述计算结果提供给所述算法实现层。
可选地,在上述方面的一个示例中,所述计算数据为大数矩阵,各个并行计算分块之间执行矩阵级并行计算,以及各个并行计算分块内执行元素级并行计算。
可选地,在上述方面的一个示例中,各个并行计算分块的分块线程资源分配方案被组织为三元组(NumT,a,b),其中,NumT是元素级并行处理所需的连续线程数量,(a,b)用于映射结果矩阵中的元素位置。
可选地,在上述方面的一个示例中,根据所述计算任务的操作类型和所述计算数据确定所述计算任务的并行计算方案包括:根据所述计算任务的操作类型和所述计算数据的矩阵大小确定所述计算任务的结果矩阵大小;根据所述结果矩阵大小和并行计算分块的最大可分配线程数量,确定并行计算分块的可处理结果矩阵分块尺寸;以及根据所述结果矩阵大小和所确定出的可处理结果矩阵分块尺寸,确定并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案。
可选地,在上述方面的一个示例中,NumT根据所述计算数据的大数大小确定。
可选地,在上述方面的一个示例中,所述并行计算架构包括模幂计算引擎和模乘计算引擎。
可选地,在上述方面的一个示例中,所述计算数据是密文数据。
可选地,在上述方面的一个示例中,所述计算数据被存储为二元组(M,E),其中,M表示计算数据的尾数,以及E表示计算数据的指数,所述方法还包括:对所述计算数据进行指数对齐。
可选地,在上述方面的一个示例中,所述方法还包括:对所接收的计算数据进行同态加密得到密文计算数据,根据所述分块线程资源来调用所述并行计算架构执行并行计算得到计算结果包括:根据所述分块线程资源调用所述并行计算架构来基于所述密文计算数据执行并行计算得到密文计算结果。
可选地,在上述方面的一个示例中,将所述计算结果提供给所述算法实现层包括:将所述密文计算结果经过同态解密后提供给所述算法实现层。
可选地,在上述方面的一个示例中,所述硬件加速设备是GPU设备。
根据本说明书的实施例的另一方面,提供一种用于实现联邦学习中的计算任务加速处理的装置,所述装置应用于具有并行计算架构的计算设备,所述装置包括:接收单元,从算法实现层接收计算任务和计算数据;并行计算方案确定单元,根据所述计算任务的操作类型和所述计算数据的数据大小确定所述计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案,各个并行计算分块内利用所分配的多个线程来进行并行计算;并行计算单元,根据所述分块线程资源分配方案来调用所述并行计算架构执行并行计算得到计算结果;以及计算结果提供单元,将所述计算结果提供给所述算法实现层。
可选地,在上述方面的一个示例中,所述计算数据为大数矩阵,各个并行计算分块之间执行矩阵级并行计算,以及各个并行计算分块内执行元素级并行计算。
可选地,在上述方面的一个示例中,各个并行计算分块的分块线程资源分配方案被组织为三元组(NumT,a,b),其中,NumT是元素级并行处理所需的连续线程数量,(a,b)用于映射结果矩阵中的元素位置。
可选地,在上述方面的一个示例中,所述并行计算方案确定单元包括:结果矩阵大小确定模块,根据所述计算任务的操作类型和所述计算数据的矩阵大小确定所述计算任务的结果矩阵大小;可处理分块尺寸确定模块,根据所述结果矩阵大小和并行计算分块的最大可分配线程数量,确定并行计算分块的可处理结果矩阵分块尺寸;以及并行计算方案确定模块,根据所述结果矩阵大小和所述可处理结果矩阵分块尺寸,确定并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案。
可选地,在上述方面的一个示例中,所述计算数据是密文数据,以及所述计算数据被存储为二元组(M,E),其中,M表示计算数据的尾数,以及E表示计算数据的指数,所述装置还包括:数据对齐单元,对所述计算数据进行指数对齐。
可选地,在上述方面的一个示例中,所述装置还包括:加密单元,对所接收的计算数据进行同态加密得到密文计算数据,所述并行计算单元根据所述分块线程资源调用所述并行计算架构来基于所述密文计算数据执行并行计算得到密文计算结果。
可选地,在上述方面的一个示例中,所述装置还包括:解密单元,对所述密文计算结果进行同态解密,得到明文计算结果,所述计算结果提供单元将所述明文计算结果提供给所述算法实现层。
根据本说明书的实施例的另一方面,提供一种联邦学习成员设备,包括:前端,部署有用于实现联邦学习模型的算法实现层;以及后台计算系统,包括如上所述的用于实现联邦学习中的计算任务加速处理的装置以及并行计算架构。
根据本说明书的实施例的另一方面,提供一种用于联邦学习的方法,所述方法由联邦学习成员设备执行,所述方法包括:响应于接收到联邦学习任务,在算法实现层对所述联邦学习任务进行解析得到计算任务和计算任务所需计算数据,并将所述计算任务和计算数据提供给后台计算系统;在后台计算系统,根据所述计算任务的操作类型和所述计算数据的数据大小确定所述计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案,各个并行计算分块内利用所分配的多个线程来实现并行计算;根据所述分块线程资源分配方案来调用所述并行计算架构执行并行计算得到计算结果;并且将所述计算结果提供给所述算法实现层;以及所述算法实现层根据所述计算结果来确定所述联邦学习任务的处理结果。
根据本说明书的实施例的另一方面,提供一种联邦学习系统,包括至少两个如上所述的联邦学习成员设备。
根据本说明书的实施例的另一方面,提供一种计算设备,包括:至少一个处理器,以及与所述至少一个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的用于实现联邦学习中的计算任务加速处理的方法。
根据本说明书的实施例的另一方面,提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的用于实现联邦学习中的计算任务加速处理的方法。
附图说明
通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了根据本说明书的实施例的联邦学习系统的示例架构图。
图2示出了根据本说明书的实施例的联邦学习成员设备的示例架构示意图。
图3示出了根据本说明书的实施例的联邦学习成员设备的处理过程的示例流程图。
图4示出了根据本说明书的实施例的用于实现计算任务加速处理的方法的流程图。
图5示出了根据本说明书的实施例的二维分块中的线程排列的示例示意图。
图6示出了根据本说明书的实施例的元素并行计算处理的示例示意图。
图7示出了根据本说明书的实施例的分块线程资源分配方案的逻辑组织的示例示意图。
图8示出了根据本说明书的实施例的并行计算方案的确定过程的示例流程图。
图9示出了根据本说明书的实施例的基于联邦学习的线性回归模型的模型训练过程的流程图。
图10示出了根据本说明书的实施例的用于实现计算任务加速处理的装置的方框图。
图11示出了根据本说明书的实施例的并行计算方案确定单元的一个实现示例的方框图。
图12示出了根据本说明书的实施例的用于实现联邦学习中的计算任务加速处理的计算设备的方框图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
本说明书的实施例提供一种用于实现联邦学习中的计算任务加速处理的方法及装置。利用该方法及装置,根据计算任务的操作类型和计算数据的数据大小来将计算任务划分为多个并行计算分块,每个并行计算分块处理部分计算任务,同时每个并行计算分块被分配多个线程,该多个线程可以同时启动并且是连续线程,从而使得可以通过使用基于分块并行和线程并行的双层并行处理方案来高效地实现联邦学习中的计算任务并行处理。
下面将结合附图描述根据本说明书的实施例的用于实现联邦学习中的计算任务加速处理的方法、装置及硬件加速设备。
图1示出了根据本说明书的实施例的联邦学习系统1的示例架构图。联邦学习系统1包括至少两个联邦学习成员设备110。在图1的示例中,示出了N个联邦学习成员设备。每个联邦学习成员设备具有用于联邦学习的私有数据,并且N个联邦学习成员设备使用各自的私有数据来联合执行联邦学习任务。
在本说明书的实施例中,联邦学习成员设备可以是任何合适的具有计算能力的计算设备。所述计算设备包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
图2示出了根据本说明书的实施例的联邦学习成员设备2的示例架构示意图。
如图2所示,联邦学习成员设备2包括前端10和后台计算系统20。前端10上部署有算法实现层,所述算法实现层用于实现联邦学习模型,例如,联邦线性回归模型、联邦逻辑回归模型、SecureBoost模型等。后台计算系统20用于实现算法实现层的并行计算处理。后台计算系统20也可以称为底层计算架构。
后台计算系统20包括硬件加速装置201和并行计算架构202。并行计算架构202包括模幂算子203和模乘算子204。模幂算子203用于实现模幂计算,以及模乘算子204用于实现模乘计算。在一个示例中,后台计算系统20可以被实现为GPU设备。
图3示出了根据本说明书的实施例的联邦学习成员设备的处理过程的示例流程图。
如图3所示,在310,在算法实现层接收到联邦学习任务后,在算法实现层对联邦学习任务进行解析得到计算任务和计算任务所需计算数据,并在320,将计算任务和计算数据提供给后台计算系统。
在330,在后台计算系统,根据计算任务和计算数据执行并行计算,并且在340,将计算结果提供给所述算法实现层。
具体地,硬件加速装置201从前端算法实现层接收模型训练过程中的计算任务和计算数据,根据计算任务的操作类型和计算数据的数据大小确定计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案,各个并行计算分块内利用所分配的多个线程来实现并行计算。然后,硬件加速装置201根据分块线程资源分配方案来调用并行计算架构中的模幂算子203或模乘算法204执行并行计算得到计算结果,并且将计算结果提供给算法实现层。
然后,在350,算法实现层根据计算结果来确定联邦学习任务的处理结果,并且执行后续模型训练过程。
图4示出了根据本说明书的实施例的用于实现联邦学习中的计算任务加速处理的方法400的流程图。
在410,从算法实现层接收计算任务和计算数据。计算任务例如可以是模型训练过程中的矩阵乘法计算任务等。计算数据例如可以是模型参数矩阵、训练样本数据矩阵等。可选地,在一个示例中,计算数据可以为大数矩阵。在另一示例中,所述计算数据可以是密文数据,例如,经过同态加密后的数据。在一个示例中,计算数据可以是经过Paillier加密后的数据。
在420,根据计算任务的操作类型和计算数据的数据大小确定计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案。此外,在该并行计算方案中,各个并行计算分块内利用所分配的多个线程来实现并行计算,由此实现基于分块(block)并行和线程并行的双层并行处理方案。
在CUDA编程模型中,运行在GPU上的并行计算函数叫做kernel(核函数),一个kernel可以看成是CUDA程序中可以被并行执行的步骤。Kernel函数可以存在两个层次的并行计算,即,分块之间的并行计算(即,分块并行)和分块中的线程间并行(即,线程并行)。这里需要注意的是,分块并行以及线程并行都是在逻辑上划分的GPU上的线程资源并行处理。一个分块中的线程在硬件层面都被组织成一维,以warp(线程束)为单位执行,每个warp中的线程是连续的,并且每个warp中的线程可以做到完全并行且彼此通信,由此实现元素级并行处理(线程级并行处理)。换言之,在GPU上,每个线程都有对应的索引index,同一warp中的线程需要同时满足以下两个条件:(1)同时启动;以及(2)线程index是连续的。此外,一个二维分块中的线程按照列来连续标记的。图5示出了根据本说明书的实施例的二维分块中的线程排列的示例示意图。如上所述,warp中的各个线程都是同时发起,即,严格并行无时延,并且各个线程之间可以相互通信,从而使得能够以一个warp为组织单位来处理一个大数的分治并行计算。
在一个示例中,计算任务的操作类型可以为矩阵乘法计算,以及计算数据是大数矩阵。相应地,各个并行计算分块之间执行矩阵级并行计算,以及各个并行计算分块内根据所分配的多个线程来执行元素级并行计算(线程级并行计算)。
下面结合示例来说明元素级并行计算和矩阵级并行计算。
在硬件设备中,大数之间的计算没有硬件芯片指令直接支持,由此采用分治多线程方法进行计算优化。在计算过程中,每个大数都会被拆解成硬件芯片指令可以直接支持计算的低比特数。图6示出了根据本说明书的实施例的元素并行计算处理的示例示意图。如图6所示,假设有a和b两个N比特的大数之间进行乘法计算,则可以将大数a折半拆分为aL和aR以及将大数b折半拆分为bL和bR。由此得到,
a=2N/2*aL+aR
b=2N/2*bL+bR
拆解后的大数相乘得到:
a*b=2N*aL*bL+2N/2(aL*bR+aR*bL)+aR*bR
观察上式,各个子项aL*bL、aL*bR、aR*bL和aR*bR之间不存在数据关联性,从而可以放在多个不同的线程中并行计算。当N非常大的时候,可以通过递归折半的方式进一步拆解大数,由此可以充分利用GPU的多核并行计算特性快速完成大数计算。上述并行计算可以称为元素级并行计算。
GPU体系结构采用了Single Instruction Multiple Thread(SIMT)设计架构用来管理和执行线程。上面提及的warp就是SIMT单元。在SIMT模式中,单个指令可以操作多个线程,这些线程执行的指令是相同的,但是可以是针对不同的数据。因此,为了充分发挥GPU上的SIMT并行计算特性,元素级并行计算任务可以分配到一个warp的连续线程中来进行并行处理。
在联邦学习的模型训练中会涉及到很多矩阵运算,并且矩阵中的每个元素通常都是大数。为了提高大数矩阵的计算效率,在元素级并行计算的基础上进一步提出了矩阵级并行计算方案。元素级并行计算在处理大数计算时需要多个连续线程来处理。为了实现元素级并行计算和矩阵级并行计算的双层并行计算机制,在GPU上实现大数矩阵计算时,将各个并行计算分块的分块线程资源分配方案组织为三元组(NumT,a,b),其中,NumT是元素级并行处理所需的连续线程数量,(a,b)用于映射结果矩阵中的元素位置。换言之,(a,b)对应计算结果矩阵的一个小块,a*b的大小代表着所分配的分块线程资源一共需要处理的大数数目。
图7示出了根据本说明书的实施例的分块线程资源分配方案的逻辑组织的示例示意图。
如图7所示,分块线程资源分配方案被组织为三元组结构(NumT,a,b)。(NumT,a,b)所限定的线程用于实现并行计算分块的并行计算处理,即,图7所限定的线程用于实现一个并行计算分块的并行计算处理。如图7所示,(NumT,a,b)中的NumT所限定的线程是图7中的黑色方框所限定的区域。该NumT个线程用于实现矩阵计算的结果矩阵中的一个结果矩阵元素的大数计算。换言之,该大数计算被分解为NumT个并行子任务,每个子任务由黑色方框中的一个线程来执行。在一个示例中,NumT的取值可以根据计算数据的数据大小确定,所述计算任务类型例如可以包括矩阵乘法和矩阵加法。例如,在针对1024bit的计算数据做大数乘法时,NumT的取值通常为16。在针对2048bit的计算数据做大数乘法时,NumT的取值通常为32。由此,可以预先设置映射表,在每次接收到计算任务后,根据计算数据的数据大小来在映射表中查询得到NumT的取值。此外,图7中的黑色方框中所限定的线程(即,NumT个线程)可以看成位于同一warp中,用于处理一个大数计算的元素级并行计算操作。此外,在采用CUDA编程模型的情况下,由于在CUDA编程模型中线程编号是按照列来连续标记,从而将NumT设置为三元组结构的第一个维度。
三元组结构的后两个维度(a,b)用于映射计算结果矩阵中的元素位置,即,用于定位或映射并行计算分块所计算出的计算结果矩阵的结果矩阵元素。所述元素位置可以为计算结果矩阵中的一个元素位置,或者计算结果矩阵中的一个分块。在硬件层面,GPU的线程资源分配是一维。由于kernel函数的计算结果会被存储到计算结果矩阵中的对应位置(x,y),如果将线程资源分配组织为一维,比如一个线程的ID为A,则需要将线程ID A映射回对应位置(x,y),映射的计算方式为:x=A/COL,y=A mod COL。这里,COL是矩阵宽度。但是如果如上所述组织线程,则分块线程资源就可以直接映射到由(a,b)标识的计算结果矩阵位置,从而不需要引入额外的映射计算。由此无需在kernel函数里引入不必要的除法和取模计算。
图8示出了根据本说明书的实施例的并行计算方案的确定过程800的示例流程图。
如图8所示,在810,根据计算任务的操作类型和计算数据的矩阵大小确定计算任务的结果矩阵大小。例如,假设计算任务为矩阵计算,计算数据A的矩阵大小为[1000,50],以及计算数据B的矩阵大小为[50,1000],则结果矩阵大小为[1000,1000]。
在820,根据结果矩阵大小和并行计算分块的最大可分配线程数量,确定并行计算分块的可处理结果矩阵分块尺寸。并行计算分块的最大可分配线程数量由硬件设备自身的计算能力决定的。例如,在联邦学习成员设备是GPU设备的情况下,在硬件层面,GPU包括SM(Stream Processor)和SP(Stream Processor)。SM是GPU计算核心,每个SM包括8个SP。隶属于同一SM的8个SP共用一套取指与发射单元,并且也共用一块共享存储器。一个并行计算分块中的线程在一个SM中发射,因此一个并行计算分块中的最大可分配线程数量取决于该硬件上的GPU计算核心能力大小(即,SM的计算能力大小)。例如,V100计算设备支持的单个并行计算分块的最大可分配线程数量为1024个线程。
在进行可处理结果矩阵分块尺寸确定时,首先,根据计算数据的数据大小确定NumT大小。例如,在针对2048bit的大数执行矩阵计算时,NumT为32个线程,即,一个大数计算需要使用32个线程,则该并行计算分块可以计算的最多大数计算的个数为32个。在针对1024bit的大数执行矩阵计算时,NumT为16个线程。。
在确定出NumT大小后,根据结果矩阵大小和并行计算分块的最大可分配线程数量,确定并行计算分块的可处理结果矩阵分块尺寸。在本公开中,可处理结果矩阵分块尺寸是指可处理结果矩阵分块的大小和形状。例如,如上所述,一个并行计算分块的最大可分配线程数量为1024,并且在针对2048bit的大数执行矩阵计算时,NumT为32个线程,由此该并行计算分块最多可以计算出结果矩阵中的32个结果矩阵元素,即,并行计算分块可以计算的最大结果矩阵元素的个数为32个,由此可处理结果矩阵分块的大小不超过32个结果矩阵元素,例如,假设为32个结果矩阵元素。但是该32个结果矩阵元素可以被组织为2×16的分块形状,也可以被组织为4×8的分块形状。在本公开中,为了充分利用硬件设备的线程资源,避免发生线程空跑现象,在确定并行计算分块的可处理结果矩阵分块尺寸时,根据结果矩阵大小[X,Y]来确定可处理结果矩阵分块的分块形状[m,n]。例如,在一个示例中,通过确保m被X整除以及n被Y整除来确定可处理结果矩阵分块的分块形状,即,确定出合适的m和n。在一个示例中,可以通过向上取整计算来确定出合适的m和n。在本公开中,NumT×m×n即为并行计算分块的实际使用线程数量,其可以等于或者小于并行计算分块的最大可分配线程数量。
然后,在830,根据结果矩阵大小和所确定出的可处理结果矩阵分块尺寸,确定计算任务的并行计算方案。即,确定需要使用多少个并行计算分块(即,并行计算分块的数目),以及每个并行计算分块执行针对结果矩阵中的哪些结果矩阵元素的矩阵计算。换言之,每个并行计算分块负责矩阵计算中的哪些元素之间的矩阵计算。这里,每个并行计算分块所分配的分块线程资源分配方案被组织为三元组(NumT,a,b),其中,(a,b)用于映射结果矩阵中的结果矩阵元素位置。在一个示例中,在可处理矩阵分块尺寸固定的情况下,(a,b)也可以理解为该并行计算分块在结果矩阵中的分块索引。例如,假设根据可处理结果矩阵分块尺寸为4×8的基准矩阵分块,则可以使用该基准矩阵分块来从结果矩阵的左上角第一个元素开始依次划分,由此在X方向上被划分为1000/4=250个,以及在Y方向上被划分为1000/8=125,即,250×125=31250个分块,并且该31250个分块可以形成为由二维索引(a,b)组成的31250个分块索引。例如,(1,1)可以对应于第一行第一个分块,(1,2)对应于第一行第二个分块,(n,m)对应于第n行第m个分块,如此类推。
回到图4,在430,根据分块线程资源分配方案来调用并行计算架构执行并行计算得到计算结果。由于并行计算方案中已经限定了各个并行计算分块与结果矩阵中的元素位置之间的映射关系,从而可以依据映射关系来将各个并行计算分块的计算结果组合为最终的计算结果,而无需引入特定的映射处理。可选地,在一个示例中,所述并行计算架构可以包括模幂计算引擎和模乘计算引擎。相应地,由于在矩阵计算中会涉及到矩阵乘法或矩阵加法,从而可以根据计算任务的操作类型来调用模幂计算引擎或模乘计算引擎来执行并行计算。
在440,将计算结果提供给算法实现层,以算法实现层进行后续处理。
此外,可选地,在一个示例中,计算数据可以是密文数据。例如,可以是基于同态加密得到的密文数据。
此外,可选地,在一个示例中,在计算数据是密文数据的情况下,计算数据可以被存储为二元组(M,E),其中,M表示计算数据的尾数,以及E表示计算数据的指数。在计算机中一个任意二进制数N可以写成:N=2^E.M,其中,M称为浮点数的尾数,是一个纯小数,以及E是比例因子的指数,称为浮点数的指数,是一个整数。比例因子的基数2对二进记数制的机器是一个常数。尾数M用定点小数形式表示,尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。指数E用整数形式表示,常称为阶码,阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围。此外,浮点数需要有符号位。相应地,所述方法还可以包括:对计算数据进行指数对齐。
此外,可选地,在一个示例中,在所接收的计算数据不是密文数据的情况下,所述方法还可以包括:对所接收的计算数据进行同态加密得到密文计算数据。相应地,根据分块线程资源来调用并行计算架构执行并行计算得到计算结果包括:根据分块线程资源调用并行计算架构来基于密文计算数据执行并行计算得到密文计算结果。然后,将密文计算结果经过同态解密后提供给算法实现层。
下面以纵向联邦中的线性回归模型的模型训练过程为例来说明根据本说明书的实施例的硬件加速方法。
图9示出了根据本说明书的实施例的基于联邦学习的线性回归模型的模型训练过程900的流程图。在图8中,联邦学习系统包括任务协调方Arbiter、模型训练方A(下文中称为Host)以及模型训练方B(下文中称为Guest),其中,Host端具有模型WA和训练数据XA,Guest端具有模型WB、训练数据XB和标签数据Y。模型WA和WB按照纵向联邦方式组成待训练模型,以及训练数据XA和XB按照纵向联邦方式组成待训练模型的训练数据。
在图9中示出的实施例中,线性回归模型的目标函数L:
为了表示方便,将上面这个式子替换成:
其中:
此外,还将L拆分成三个部分:LA,LB和LAB。
L=LA+LB+LAB
如图9所示,在901,任务协调方Arbiter生成公私密钥,并在902,将公钥下发到Host和Guest端。
在906,Guest端在接收到和[[LA]]后,在本地调用硬件加速设备来利用本地数据计算出并使用私钥加密后得到然后,在907,在本地调用硬件加速设备来执行密文计算,得出[[LB]],[[LAB]]和[[L]]:
[[L]]=[[LA]]+[[LB]]+[[LAB]]
在909,Host端和Guest端分布在密态环境下计算各自的密文梯度信息。
然后,在910,Host端和Guest端将各自计算出的密文梯度信息发送给任务协调方。可选地,在一个示例中,Host端和Guest端可以将各自计算出的密文梯度信息分别加入混淆[[RA]]和[[RB]]后发送到任务协调方Arbiter。
在911,任务协调方Arbiter使用私钥对所接收的密文梯度信息进行解密,并在912,将解密后的梯度信息返回给Host端和Guest端。在所接收的密文梯度信息包含混淆信息的情况下,任务协调方Arbiter将和返回给Host端和Guest端。
在913,Host端和Guest端分别使用解密后的梯度信息来进行模型参数更新,由此完成一次训练过程。在解密后的信息包含混淆信息的情况下,Host端和Guest端分别从所得到的解密信息中减去各自的混淆信息,还原出真实的梯度信息,然后进行模型参数更新。
在914,判断是否达到模型训练结束条件。如果达到,则模型训练结束。否则,返回到903,执行下一训练过程,直到达到模型训练结束条件。所述模型训练结束条件例如是:模型收敛或者达到预定模型训练次数。
如上参照图1到图9描述了根据本说明书的实施例的用于实现联邦学习中的计算任务加速处理的方法。
利用该方法,可以通过使用基于分块并行和线程并行的双层并行处理方案来高效地实现联邦学习中的计算任务并行处理。
图10示出了根据本说明书的实施例的用于实现联邦学习中的计算任务加速处理的装置(下文中称为“硬件加速装置”)1000的方框图。如图10所示,硬件加速装置1000包括接收单元1010、并行计算方案确定单元1020、并行计算单元1030和计算结果提供单元1040。
接收单元1010被配置为从算法实现层接收计算任务和计算数据。接收单元1010的操作可以参考上面参照图4描述的410的操作。
并行计算方案确定单元1020被配置为根据计算任务的操作类型和计算数据的数据大小确定计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案,各个并行计算分块内利用所分配的多个线程来实现并行计算。并行计算方案确定单元1020的操作可以参考上面参照图4描述的420的操作。
并行计算单元1030被配置为根据分块线程资源分配方案来调用并行计算架构执行并行计算得到计算结果。并行计算单元1030的操作可以参考上面参照图4描述的430的操作。
计算结果提供单元1040被配置为将计算结果提供给算法实现层,以供算法实现层用于后续处理。
可选地,在一个示例中,所述计算数据为大数矩阵,各个并行计算分块之间执行矩阵级并行计算,以及各个并行计算分块内执行元素级并行计算。
可选地,在一个示例中,各个并行计算分块的分块线程资源被组织为三元组(NumT,a,b),其中,NumT是元素级并行处理所需的连续线程数量,(a,b)用于映射结果矩阵中的元素位置。
图11示出了根据本说明书的实施例的并行计算方案确定单元1100的一个实现示例的方框图。如图11所示,并行计算方案确定单元1100包括结果矩阵大小确定模块1110、可处理分块大小确定模块1120和分块线程资源确定模块1130。
结果矩阵大小确定模块1110根据计算任务的操作类型和计算数据的矩阵大小确定所述计算任务的结果矩阵大小。可处理分块大小确定模块1120根据结果矩阵大小和并行计算分块的最大可分配线程数量,确定并行计算分块的可处理结果矩阵分块尺寸。然后,并行计算方案确定模块1130根据结果矩阵大小和可处理结果矩阵分块尺寸,确定计算任务的并行计算方案,即,并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案。
可选地,在一个示例中,所述计算数据是密文数据,以及所述计算数据被存储为二元组(M,E),其中,M表示计算数据的尾数,以及E表示计算数据的指数。相应地,硬件加速装置1000还可以包括数据对齐单元(未示出)。数据对齐单元被配置为对计算数据进行指数对齐。
可选地,在一个示例中,硬件加速装置1000还可以包括加密单元(未示出)。加密单元被配置为对所接收的计算数据进行同态加密得到密文计算数据。相应地,并行计算单元1030根据分块线程资源调用并行计算架构来基于密文计算数据执行并行计算得到密文计算结果。
可选地,在一个示例中,硬件加速装置1000还可以包括解密单元(未示出)。解密单元被配置为对密文计算结果进行同态解密,得到明文计算结果。相应地,计算结果提供单元1040将明文计算结果提供给算法实现层。
如上参照图1到图11,对根据本说明书实施例的硬件加速方法和硬件加速装置进行了描述。上面的硬件加速装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图12示出了根据本说明书的实施例的用于实现联邦学习中的计算任务加速处理的计算设备1200的示意图。如图12所示,计算设备1200可以包括至少一个处理器1210、存储器(例如,非易失性存储器)1220、内存1230和通信接口1240,并且至少一个处理器1210、存储器1220、内存1230和通信接口1240经由总线1060连接在一起。至少一个处理器1210执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1210:从外部设备接收计算任务和计算数据;根据计算任务的操作类型和计算数据的数据大小确定计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案,各个并行计算分块内利用所分配的多个线程来实现并行计算;根据分块线程资源分配方案来调用并行计算架构执行并行计算得到计算结果;以及将计算结果提供给外部设备。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1210进行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。
根据一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (15)
1.一种用于实现联邦学习中的计算任务加速处理的方法,其特征在于,所述方法由联邦学习成员设备的后台计算系统执行,所述后台计算系统具有并行计算架构,所述联邦学习成员设备是GPU设备,所述GPU设备包括相同的多个流处理器SM,所述多个SM的每一个SM的线程资源以多个线程束的方式执行,该多个线程束具有相同的线程个数并且同一个线程束的线程连续及同时启动,所述方法包括:
从算法实现层接收计算任务和计算数据,所述计算数据为大数矩阵;
根据所述计算任务的操作类型和所述计算数据的数据大小确定所述计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目、各个并行计算分块的处理数据以及各个并行计算分块的分块线程资源分配方案;根据所述分块线程资源分配方案来调用所述并行计算架构执行并行计算得到计算结果,其中,各个并行计算分块之间执行矩阵级并行计算,并且各个并行计算分块内利用所分配的多个线程来实现元素级并行计算;以及
将所述计算结果提供给所述算法实现层,
其中,各个并行计算分块的分块线程资源分配方案在硬件层面上被组织为以三元组(NumT,a,b)表征的一维wrap,其中,NumT是元素级并行处理所需的连续线程数量,(a,b)用于映射计算结果矩阵中的元素位置,所述元素位置包括所述计算结果矩阵中的一个元素位置或者一个分块,其中,根据所述计算任务的操作类型和所述计算数据的数据大小确定所述计算任务的并行计算方案包括:
根据所述计算任务的操作类型和所述计算数据的矩阵大小确定所述计算任务的计算结果矩阵大小;
根据所述计算结果矩阵大小和并行计算分块的最大可分配线程数量,确定并行计算分块的可处理结果矩阵分块尺寸,其中,所述并行计算分块的最大可分配线程数量根据所述SM的计算能力大小确定;以及
根据所述计算结果矩阵大小和所确定的可处理结果矩阵分块尺寸,确定并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案;
其中,NumT根据所述计算数据的数据大小确定并且不大于所述SM的所述线程束的线程个数,
其中,各个并行计算分块内的已分配线程数量基于所述分块线程资源分配方案确定并且不超过所述并行计算分块的最大可分配线程数量。
2.如权利要求1所述的方法,其中,所述并行计算架构包括模幂计算引擎和模乘计算引擎。
3.如权利要求1所述的方法,其中,所述计算数据是密文数据。
4.如权利要求3所述的方法,其中,所述计算数据被存储为二元组(M,E),其中,M表示计算数据的尾数,以及E表示计算数据的指数,
所述方法还包括:
对所述计算数据进行指数对齐。
5.如权利要求1所述的方法,还包括:
对所接收的计算数据进行同态加密得到密文计算数据,
根据所述分块线程资源来调用所述并行计算架构执行并行计算得到计算结果包括:
根据所述分块线程资源调用所述并行计算架构来基于所述密文计算数据执行并行计算得到密文计算结果。
6.如权利要求5所述的方法,其中,将所述计算结果提供给所述算法实现层包括:
将所述密文计算结果经过同态解密后提供给所述算法实现层。
7.一种计算设备,包括:
至少一个处理器,以及
与所述至少一个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1到6中任一所述的方法。
8.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如权利要求1到6中任一所述的方法。
9.一种用于实现联邦学习中的计算任务加速处理的装置,其特征在于,所述装置应用于具有并行计算架构的计算设备,所述计算设备是GPU设备,所述GPU设备包括相同的多个流处理器SM,所述多个SM的每一个SM的线程资源以多个线程束的方式执行,该多个线程束具有相同的线程个数并且同一个线程束的线程连续及同时启动,所述装置包括:
接收单元,从算法实现层接收计算任务和计算数据,所述计算数据为大数矩阵;
并行计算方案确定单元,根据所述计算任务的操作类型和所述计算数据的数据大小确定所述计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目、各个并行计算分块的处理数据以及各个并行计算分块的分块线程资源分配方案;
并行计算单元,根据所述分块线程资源分配方案来调用所述并行计算架构执行并行计算得到计算结果,其中,各个并行计算分块之间执行矩阵级并行计算,并且各个并行计算分块内利用多个线程来实现元素级并行计算;以及
计算结果提供单元,将所述计算结果提供给所述算法实现层,
其中,各个并行计算分块的分块线程资源分配方案在硬件层面上被组织为以三元组(NumT,a,b)表征的一维wrap,其中,NumT是元素级并行处理所需的连续线程数量,(a,b)用于映射计算结果矩阵中的元素位置,所述元素位置包括所述计算结果矩阵中的一个元素位置或者一个分块,
其中,所述并行计算方案确定单元包括:
结果矩阵大小确定模块,根据所述计算任务的操作类型和所述计算数据的矩阵大小确定所述计算任务的计算结果矩阵大小;
可处理分块尺寸确定模块,根据所述计算结果矩阵大小和并行计算分块的最大可分配线程数量,确定并行计算分块的可处理结果矩阵分块尺寸,其中,所述并行计算分块的最大可分配线程数量根据所述SM的计算能力大小确定;以及
并行计算方案确定模块,根据所述结果矩阵大小和所确定出的可处理结果矩阵分块尺寸,确定并行计算分块数目以及各个并行计算分块的分块线程资源分配方案,
其中,NumT根据所述计算数据的数据大小确定并且不大于所述SM的所述线程束的线程个数,
其中,各个并行计算分块内的已分配线程数量基于所述分块线程资源分配方案确定并且不超过所述并行计算分块的最大可分配线程数量。
10.如权利要求9所述的装置,其中,所述计算数据是密文数据,以及所述计算数据被存储为二元组(M,E),其中,M表示计算数据的尾数,以及E表示计算数据的指数,
所述装置还包括:
数据对齐单元,对所述计算数据进行指数对齐。
11.如权利要求9所述的装置,还包括:
加密单元,对所接收的计算数据进行同态加密得到密文计算数据,
所述并行计算单元根据所述分块线程资源调用所述并行计算架构来基于所述密文计算数据执行并行计算得到密文计算结果。
12.如权利要求11所述的装置,还包括:
解密单元,对所述密文计算结果进行同态解密,得到明文计算结果,所述计算结果提供单元将所述明文计算结果提供给所述算法实现层。
13.一种联邦学习成员设备,包括:
前端,部署有用于实现联邦学习模型的算法实现层;以及
后台计算系统,包括如权利要求9到12中任一所述的装置以及并行计算架构。
14.一种联邦学习系统,包括:
至少两个如权利要求13所述的联邦学习成员设备。
15.一种用于联邦学习的方法,其特征在于,所述方法由联邦学习成员设备执行,所述联邦学习成员设备是GPU设备,所述GPU设备包括相同的多个流处理器SM,所述多个SM的每一个SM的线程资源以多个线程束的方式执行,该多个线程束具有相同的线程个数并且同一个线程束的线程连续及同时启动,所述方法包括:
响应于接收到联邦学习任务,在算法实现层对所述联邦学习任务进行解析得到计算任务和计算任务所需计算数据,并将所述计算任务和计算数据提供给后台计算系统,所述计算数据为大数矩阵;
在后台计算系统,根据所述计算任务的操作类型和所述计算数据的数据大小确定所述计算任务的并行计算方案,所述并行计算方案包括并行计算分块的数目、各个并行计算分块的处理数据以及各个并行计算分块的分块线程资源分配方案;根据所述分块线程资源分配方案来调用所述并行计算架构执行并行计算得到计算结果,其中,各个并行计算分块之间执行矩阵级并行计算,以及各个并行计算分块内利用所分配的多个线程来进行元素级并行计算;并且将所述计算结果提供给所述算法实现层;以及
所述算法实现层根据所述计算结果来确定所述联邦学习任务的处理结果,
其中,各个并行计算分块的分块线程资源分配方案在硬件层面上被组织为以三元组(NumT,a,b)表征的一维wrap,其中,NumT是元素级并行处理所需的连续线程数量,(a,b)用于映射计算结果矩阵中的元素位置,所述元素位置包括所述计算结果矩阵中的一个元素位置或者一个分块,
其中,根据所述计算任务的操作类型和所述计算数据的数据大小确定所述计算任务的并行计算方案包括:
根据所述计算任务的操作类型和所述计算数据的矩阵大小确定所述计算任务的计算结果矩阵大小;
根据所述计算结果矩阵大小和并行计算分块的最大可分配线程数量,确定并行计算分块的可处理结果矩阵分块尺寸,其中,所述并行计算分块的最大可分配线程数量根据所述SM的计算能力大小确定;以及
根据所述计算结果矩阵大小和所确定的可处理结果矩阵分块尺寸,确定并行计算分块的数目以及各个并行计算分块的分块线程资源分配方案;
其中,NumT根据所述计算数据的数据大小确定并且不大于所述SM的所述线程束的线程个数,
其中,各个并行计算分块内的已分配线程数量基于所述分块线程资源分配方案确定并且不超过所述并行计算分块的最大可分配线程数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011131111.8A CN112148437B (zh) | 2020-10-21 | 2020-10-21 | 用于联邦学习的计算任务加速处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011131111.8A CN112148437B (zh) | 2020-10-21 | 2020-10-21 | 用于联邦学习的计算任务加速处理方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148437A CN112148437A (zh) | 2020-12-29 |
CN112148437B true CN112148437B (zh) | 2022-04-01 |
Family
ID=73954317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011131111.8A Active CN112148437B (zh) | 2020-10-21 | 2020-10-21 | 用于联邦学习的计算任务加速处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148437B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112365006B (zh) * | 2021-01-12 | 2021-04-02 | 深圳致星科技有限公司 | 用于联邦学习的并行训练方法及系统 |
CN112988114B (zh) * | 2021-03-12 | 2022-04-12 | 中国科学院自动化研究所 | 基于gpu的大数计算系统 |
CN112990612B (zh) * | 2021-05-17 | 2021-08-10 | 湖南三湘银行股份有限公司 | 一种基于联邦学习的预测系统及方法 |
CN113468099B (zh) * | 2021-05-31 | 2022-02-08 | 深圳致星科技有限公司 | 可重构计算装置、处理器及方法 |
CN113537508B (zh) * | 2021-06-18 | 2024-02-02 | 百度在线网络技术(北京)有限公司 | 联邦计算的处理方法、装置、电子设备和存储介质 |
CN114118444B (zh) * | 2021-12-01 | 2024-04-12 | 杭州电子科技大学 | 一种利用启发式算法降低联邦学习中设备空跑时间的方法 |
CN114675965B (zh) * | 2022-03-10 | 2023-05-02 | 北京百度网讯科技有限公司 | 联邦学习方法、装置、设备和介质 |
CN117632442B (zh) * | 2024-01-25 | 2024-04-05 | 腾讯科技(深圳)有限公司 | 任务处理方法以及相关设备 |
CN117896067A (zh) * | 2024-03-13 | 2024-04-16 | 杭州金智塔科技有限公司 | 适用于国密sm2算法的并行模约减方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857543A (zh) * | 2018-12-21 | 2019-06-07 | 中国地质大学(北京) | 一种基于多节点多gpu计算的流线模拟加速方法 |
CN110490738A (zh) * | 2019-08-06 | 2019-11-22 | 深圳前海微众银行股份有限公司 | 一种混合联邦学习方法及架构 |
CN111580970A (zh) * | 2020-05-07 | 2020-08-25 | 电子科技大学 | 一种联邦学习的模型分发与聚合的传输调度方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533697B2 (en) * | 2007-02-14 | 2013-09-10 | The Mathworks, Inc. | Graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment |
US10402223B1 (en) * | 2017-04-26 | 2019-09-03 | Xilinx, Inc. | Scheduling hardware resources for offloading functions in a heterogeneous computing system |
CN109783232A (zh) * | 2018-12-21 | 2019-05-21 | 王家万 | 视频数据处理方法、装置及存储介质 |
WO2020185973A1 (en) * | 2019-03-11 | 2020-09-17 | doc.ai incorporated | System and method with federated learning model for medical research applications |
CN111158874A (zh) * | 2019-12-20 | 2020-05-15 | 深圳市商汤科技有限公司 | 数据处理方法和装置、电子设备及存储介质 |
-
2020
- 2020-10-21 CN CN202011131111.8A patent/CN112148437B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857543A (zh) * | 2018-12-21 | 2019-06-07 | 中国地质大学(北京) | 一种基于多节点多gpu计算的流线模拟加速方法 |
CN110490738A (zh) * | 2019-08-06 | 2019-11-22 | 深圳前海微众银行股份有限公司 | 一种混合联邦学习方法及架构 |
CN111580970A (zh) * | 2020-05-07 | 2020-08-25 | 电子科技大学 | 一种联邦学习的模型分发与聚合的传输调度方法 |
Non-Patent Citations (2)
Title |
---|
A Federated Learning Framework for Privacy-preserving and Parallel Training;Tien-Dung Cao等;《arXiv:2001.09782v2》;20190529;参见第1-9页 * |
Federated Machine Learning: Concept and Applications;QingYang等;《arXiv:1902.04885v1 》;20190213;参见第2-8页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112148437A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148437B (zh) | 用于联邦学习的计算任务加速处理方法、装置及设备 | |
Jung et al. | Over 100x faster bootstrapping in fully homomorphic encryption through memory-centric optimization with GPUs | |
Tan et al. | CryptGPU: Fast privacy-preserving machine learning on the GPU | |
Lee et al. | SPRING: a novel parallel chaos-based image encryption scheme | |
EP3557814B1 (en) | Outsourcing processing operations with homomorphic encryption | |
CN111832050B (zh) | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 | |
CN112988237B (zh) | 一种Paillier解密系统、芯片和方法 | |
US20130301826A1 (en) | System, method, and program for protecting cryptographic algorithms from side-channel attacks | |
EP3202079B1 (en) | Exponent splitting for cryptographic operations | |
Fadhil et al. | Parallelizing RSA algorithm on multicore CPU and GPU | |
US20220014363A1 (en) | Combined post-quantum security utilizing redefined polynomial calculation | |
US11902432B2 (en) | System and method to optimize generation of coprime numbers in cryptographic applications | |
JP2023063430A (ja) | 暗号システム、鍵生成装置、暗号化装置、復号装置、方法及びプログラム | |
Song et al. | A bitwise design and implementation for privacy-preserving data mining: from atomic operations to advanced algorithms | |
Pu et al. | Fastplay-a parallelization model and implementation of smc on cuda based gpu cluster architecture | |
US11985221B2 (en) | Efficient masking of secure data in ladder-type cryptographic computations | |
Wang et al. | Popcorn: Paillier meets compression for efficient oblivious neural network inference | |
CN113467752A (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
Cruz-Cortés et al. | A GPU parallel implementation of the RSA private operation | |
CN112487448B (zh) | 一种加密信息处理装置、方法及计算机设备 | |
US11954487B2 (en) | Techniques, devices, and instruction set architecture for efficient modular division and inversion | |
CN111461178B (zh) | 数据处理方法、系统及装置 | |
US20240171395A1 (en) | Encryption method using fixed-base comb method | |
US20230421351A1 (en) | Homomorphic encryption using smart contracts | |
CN112183566B (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 | ||
GR01 | Patent grant |