CN113553191A - 用于联邦学习和隐私计算的异构处理系统 - Google Patents
用于联邦学习和隐私计算的异构处理系统 Download PDFInfo
- Publication number
- CN113553191A CN113553191A CN202111094089.9A CN202111094089A CN113553191A CN 113553191 A CN113553191 A CN 113553191A CN 202111094089 A CN202111094089 A CN 202111094089A CN 113553191 A CN113553191 A CN 113553191A
- Authority
- CN
- China
- Prior art keywords
- task
- processing
- data
- subsystem
- result
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Abstract
本申请涉及一种用于联邦学习和隐私计算的异构处理系统。该异构处理系统包括:串行子系统,配置为下发处理任务和处理任务的配置信息,处理任务指示对一个或者多个操作数进行与计算模式对应的运算;和并行子系统,配置为对所述一个或者多个操作数进行与计算模式对应的运算得到处理任务的结果数据。并行子系统还配置为,根据配置信息,选择性地从位于并行子系统侧的中间结果区域获得一个或者多个操作数中的至少一个操作数并且从串行子系统获得一个或者多个操作数中的相对于所述至少一个操作数的剩余操作数,以及对根据配置信息而获得的操作数进行运算。如此改进串行子系统和并行子系统之间的数据交互且有利于降低资源消耗和提高任务处理效率。
Description
技术领域
本申请涉及数据安全和隐私保护技术领域,具体涉及一种用于联邦学习和隐私计算的异构处理系统。
背景技术
随着人工智能和大数据挖掘分析等应用领域的发展,对数据量的需求越来越大。例如训练人工智能的应用模型需要使用大量带有合适的数据标签或者特征数值的训练数据。高质量的数据往往来源于经营活动中产生和积累的应用数据。但是应用数据往往分散在不同的组织和个体手上,例如交易数据分散在各个金融机构,医疗诊断数据分散在各个医疗机构。跨行业跨领域的应用数据往往也是分散的,例如互联网领域的社交属性数据和电商交易数据往往由不同实体掌控。随着数据所有权的重要性、用户隐私和数据安全等受到更多重视,也随着法律法规对数据收集处理提出更严格的约束和要求,掌握应用数据的各个组织或个体往往不愿意或者没有合适手段进行彼此之间的合作,从而很难让各自掌握的应用数据共同发挥作用。这种数据分享和协同合作方面的困境被称之为数据孤岛现象。为了解决跨行业跨组织的数据合作难题,尤其是关键的隐私保护及数据安全的问题,提出了联邦学习(Federated Learning,FL)的概念。联邦学习指的是拥有数据的各个参与方,在不共享受保护的隐私数据且自有数据不传递到外部的前提下,通过加密的方式交换模型相关信息从而实现协同优化联邦学习模型。其中,联邦学习根据训练数据在不同参与方之间的数据特征空间和样本空间的分布情况,可以划分为在数据特征空间重叠较大而在样本空间重叠较小的横向联邦学习,在数据特征空间重叠较小而在样本空间重叠较大的纵向联邦学习,以及在数据特征空间和样本空间均重叠较小的联邦迁移学习。
在联邦学习、隐私计算、分布式人工智能等应用场景中,需要大量的密态运算和大整数位宽数据,还经常涉及到大数据量循环计算、递归计算、依赖计算等,因此带来了从存储资源到计算性能的巨大挑战。为此,需要一种用于联邦学习和隐私计算的异构处理系统,能够应对联邦学习、隐私计算、分布式人工智能等应用场景中各种复杂计算包括大数据量循环计算、递归计算、依赖计算等,而且具有高效计算、低处理延迟和高内存利用率的特点。
发明内容
第一方面,本申请实施例提供了一种异构处理系统,应用于联邦学习和隐私计算。所述异构处理系统包括:串行子系统,其中,所述串行子系统配置为下发处理任务和所述处理任务的配置信息,所述处理任务指示对一个或者多个操作数进行与计算模式对应的运算;和并行子系统,其中,所述并行子系统配置为对所述一个或者多个操作数进行与所述计算模式对应的运算得到所述处理任务的结果数据。其中,所述并行子系统还配置为,根据所述配置信息,选择性地从位于所述并行子系统侧的中间结果区域获得所述一个或者多个操作数中的至少一个操作数并且从所述串行子系统获得所述一个或者多个操作数中的相对于所述至少一个操作数的剩余操作数,以及对根据所述配置信息而获得的操作数进行与所述计算模式对应的运算。
第一方面所描述的技术方案,改进了将联邦学习和隐私计算的算法展开后得到的多个处理任务彼此之间的数据传输问题以及跨平台跨系统的数据交互问题,从而避免内存资源的浪费、处理能力的浪费以及输入输出能力的浪费,具有高效计算、低处理延迟和高内存利用率的优点。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述并行子系统还配置为,根据所述配置信息,选择性地将所述结果数据写入所述中间结果区域以作为相对于所述处理任务的另一处理任务的操作数。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述并行子系统还配置为,根据所述配置信息,选择性地将所述结果数据写入位于所述并行子系统侧的最终结果区域从而使得所述结果数据可被上传到所述串行子系统。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述并行子系统的内存包括任务下发区域,所述中间结果区域和最终结果区域,所述串行子系统配置为下发所述处理任务和所述配置信息到所述任务下发区域。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述任务下发区域,所述中间结果区域和所述最终结果区域各自包括多个任务区间,多个处理任务与所述任务下发区域的多个任务区间一一对应,所述多个处理任务与所述中间结果区域的多个任务区间一一对应,所述多个处理任务与所述最终结果区域的多个任务区间一一对应,其中,针对所述多个处理任务中的每一个处理任务,所述串行子系统配置为下发该处理任务和该处理任务的配置信息到所述任务下发区域的与该处理任务对应的任务区间。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,针对所述多个处理任务中的每一个处理任务,所述并行子系统还配置为,根据该处理任务的配置信息,选择性地从所述中间结果区域的与该处理任务对应的任务区间获得该处理任务所指示的操作数中的至少一个操作数并且从所述任务下发区域的与该处理任务对应的任务区间获得该处理任务所指示的操作数中的剩余操作数,以及对根据该处理任务的配置信息而获得的操作数进行与该处理任务所指示的计算模式对应的运算。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,针对所述多个处理任务中的每一个处理任务,所述并行子系统还配置为,根据该处理任务的配置信息,选择性地将该处理任务的结果数据写入所述中间结果区域的不同于与该处理任务对应的任务区间的另一任务区间以作为相对于该处理任务的另一处理任务的操作数。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,针对所述多个处理任务中的每一个处理任务,所述并行子系统还配置为,根据该处理任务的配置信息,选择性地将该处理任务的结果数据写入最终结果区域的与该处理任务对应的任务区间从而使得该处理任务的结果数据可被上传到所述串行子系统。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述任务下发区域,所述中间结果区域和所述最终结果区域各自的第一配置参数和第二配置参数相同,其中,所述第一配置参数是单个任务区间所占据的最大物理内存空间,所述第二配置参数是任务区间最大数量。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述计算模式是多个预设计算模式中的一个预设计算模式,所述多个预设模式包括模幂计算、模乘计算、RSA交集计算、同态加密、同态解密、DH秘钥交换、密态加法、密态乘法、密态乘加、矩阵乘法、密文求和。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述配置信息包括多个控制字段,所述多个控制字段至少包括操作数个数字段、操作数来源标识符字段和操作数数据地址信息字段。其中,所述并行子系统还配置为:根据所述操作数个数字段确定所述一个或者多个操作数的个数;和根据所述操作数来源标识符字段确定所述一个或者多个操作数中的每一个操作数是否来自于所述中间结果区域,如果是,则根据所述操作数数据地址信息字段从所述中间结果区域获得该操作数。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述多个控制字段还包括计算结果存放标识符字段,其中,所述并行子系统根据所述计算结果存放标识符字段确定所述结果数据适合上传到所述串行子系统,所述多个控制字段还包括以下至少之一:任务编号字段、计算模式字段、任务批次号字段、任务批次总数字段、参数个数字段、参数宽度字段、操作数宽度字段、操作数数据总长度字段。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述多个控制字段还包括用户自定义字段,所述用户自定义字段用于调整所述串行子系统和所述并行子系统之间的数据交互。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述中间结果区域和所述最终结果区域各自包括检验信息用于校验下发到所述任务下发区域的所述配置信息。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述异构处理系统还包括:任务地址配置寄存器,其中,所述任务地址配置寄存器包括:任务源数据起始地址配置寄存器定义,用于识别所述任务下发区域的与所述多个处理任务各自对应的任务区间;任务中间结果数据起始地址配置寄存器定义,用于识别所述中间结果区域的与所述多个处理任务各自对应的任务区间;和任务最终结果数据起始地址配置寄存器定义,用于识别所述最终结果区域的与所述多个处理任务各自对应的任务区间。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述串行子系统和所述并行子系统之间的数据交互基于所述任务地址配置寄存器,所述串行子系统根据所述并行子系统的可用资源或者所述并行子系统的处理能力来调整所述任务地址配置寄存器。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述异构处理系统还包括:任务状态寄存器,其中,所述任务状态寄存器包括多个记录,所述任务状态寄存器的多个记录与所述多个处理任务一一对应,所述串行子系统和所述并行子系统基于所述任务状态寄存器的多个记录对所述多个处理任务分别进行状态控制。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,针对所述多个处理任务中的每一个处理任务,所述任务状态寄存器的多个记录中与该处理任务对应的记录包括:任务启动标识符,用于指示该处理任务是否已经启动;计算引擎工作状态标识符,用于指示所述并行子系统中用于该处理任务的计算引擎的工作状态;和任务处理错误标识符,用于指示该处理任务的错误类型。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述串行子系统和所述并行子系统基于所述任务状态寄存器的多个记录对所述多个处理任务分别进行状态控制,包括:针对所述多个处理任务中的每一个处理任务,所述串行子系统通过查询所述任务状态寄存器来判断所述任务状态寄存器多个记录中与该处理任务对应的记录的任务启动标识符是否指示该处理任务已经启动,如果是则所述串行子系统被禁止进行与该处理任务相关的操作;针对所述多个处理任务中的每一个处理任务,所述并行子系统通过查询所述任务状态寄存器来判断所述任务状态寄存器多个记录中与该处理任务对应的记录的任务启动标识符是否指示该处理任务已经启动,如果是则所述并行子系统被允许进行与所述处理任务相关的操作。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述异构处理系统还包括:任务结果寄存器,其中,所述任务结果寄存器包括多个记录,所述任务结果寄存器的多个记录与所述多个处理任务一一对应。其中,针对所述多个处理任务中的每一个处理任务,所述任务结果寄存器的多个记录中与该处理任务对应的记录包括任务处理结果标识符,该任务处理结果标识符用于指示该处理任务是否完成计算,该任务处理结果标识符仅能由所述并行子系统设定为完成计算,所述串行子系统通过查询所述任务状态寄存器来确定该处理任务的处理结果。
第二方面,本申请实施例提供了一种异构处理系统。所述异构处理系统包括:CPU,其中,所述CPU配置为下发多个处理任务和所述多个处理任务各自的配置信息,所述多个处理任务各自指示对一个或者多个操作数进行运算;FPGA,其中,所述FPGA包括并行计算引擎,所述并行计算引擎包括并行的多个子计算引擎,所述FPGA配置为通过所述并行计算引擎对所述多个处理任务进行并行化计算。其中,所述FPGA的内存包括任务下发区域、中间结果区域和最终结果区域,所述任务下发区域、所述中间结果区域和所述最终结果区域各自包括多个任务区间并且分别与所述多个处理任务一一对应。其中,针对所述多个处理任务中的每一个处理任务:所述CPU配置为下发该处理任务和该处理任务的配置信息到所述任务下发区域的与该处理任务对应的任务区间,所述FPGA配置为,根据该处理任务的配置信息,选择性地从所述中间结果区域的与该处理任务对应的任务区间获得该处理任务所指示的操作数中的至少一个操作数并且从所述任务下发区域的与该处理任务对应的任务区间获得该处理任务所指示的操作数中的剩余操作数,以及对根据该处理任务的配置信息而获得的操作数进行与该处理任务对应的运算。
第二方面所描述的技术方案,改进了将联邦学习和隐私计算的算法展开后得到的多个处理任务彼此之间的数据传输问题以及跨平台跨系统的数据交互问题,从而避免内存资源的浪费、处理能力的浪费以及输入输出能力的浪费,具有高效计算、低处理延迟和高内存利用率的优点。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,针对所述多个处理任务中的每一个处理任务,所述FPGA还配置为,根据该处理任务的配置信息,选择性地将该处理任务的结果数据写入所述中间结果区域的不同于与该处理任务对应的任务区间的另一任务区间以作为相对于该处理任务的另一处理任务的操作数。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,针对所述多个处理任务中的每一个处理任务,所述FPGA还配置为,根据该处理任务的配置信息,选择性地将该处理任务的结果数据写入最终结果区域的与该处理任务对应的任务区间从而使得该处理任务的结果数据可被上传到所述CPU。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述多个处理任务中的每一个处理任务的配置信息均包括多个控制字段,针对所述多个处理任务中的每一个处理任务,该处理任务的配置信息的多个控制字段至少包括操作数个数字段、操作数来源标识符字段和操作数数据地址信息字段。其中,所述FPGA还配置为:根据所述操作数个数字段确定该处理任务所指示的操作数的个数;和根据所述操作数来源标识符字段确定该处理任务所指示的操作数中的每一个操作数是否来自于所述中间结果区域,如果是,则根据所述操作数数据地址信息字段从所述中间结果区域获得该操作数。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述中间结果区域和所述最终结果区域各自包括检验信息用于校验下发到所述任务下发区域的所述多个处理任务各自的配置信息。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述异构处理系统还包括:任务地址配置寄存器,其中,所述任务地址配置寄存器包括:任务源数据起始地址配置寄存器定义,用于识别所述任务下发区域的与所述多个处理任务各自对应的任务区间;任务中间结果数据起始地址配置寄存器定义,用于识别所述中间结果区域的与所述多个处理任务各自对应的任务区间;和任务最终结果数据起始地址配置寄存器定义,用于识别所述最终结果区域的与所述多个处理任务各自对应的任务区间。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述CPU和所述FPGA之间的数据交互基于所述任务地址配置寄存器,所述CPU根据所述FPGA的可用资源或者所述FPGA的处理能力来调整所述任务地址配置寄存器。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述异构处理系统还包括:任务状态寄存器,其中,所述任务状态寄存器包括多个记录,所述任务状态寄存器的多个记录与所述多个处理任务一一对应,所述CPU和所述FPGA基于所述任务状态寄存器的多个记录对所述多个处理任务分别进行状态控制。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,针对所述多个处理任务中的每一个处理任务,所述任务状态寄存器的多个记录中与该处理任务对应的记录包括:任务启动标识符,用于指示该处理任务是否已经启动;计算引擎工作状态标识符,用于指示所述FPGA中用于该处理任务的子计算引擎的工作状态;和任务处理错误标识符,用于指示该处理任务的错误类型。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述CPU和所述FPGA基于所述任务状态寄存器的多个记录对所述多个处理任务分别进行状态控制,包括:针对所述多个处理任务中的每一个处理任务,所述CPU通过查询所述任务状态寄存器来判断所述任务状态寄存器多个记录中与该处理任务对应的记录的任务启动标识符是否指示该处理任务已经启动,如果是则所述CPU被禁止进行与该处理任务相关的操作;针对所述多个处理任务中的每一个处理任务,所述FPGA通过查询所述任务状态寄存器来判断所述任务状态寄存器多个记录中与该处理任务对应的记录的任务启动标识符是否指示该处理任务已经启动,如果是则所述FPGA被允许进行与所述处理任务相关的操作。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述异构处理系统还包括:任务结果寄存器,其中,所述任务结果寄存器包括多个记录,所述任务结果寄存器的多个记录与所述多个处理任务一一对应。其中,针对所述多个处理任务中的每一个处理任务,所述任务结果寄存器的多个记录中与该处理任务对应的记录包括任务处理结果标识符,该任务处理结果标识符用于指示该处理任务是否完成计算,该任务处理结果标识符仅能由所述FPGA设定为完成计算,所述CPU通过查询所述任务状态寄存器来确定该处理任务的处理结果。
附图说明
为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1示出了本申请实施例提供的异构处理系统的结构框图。
图2示出了本申请实施例提供的图1所示的异构处理系统的并行子系统侧内存的结构示意图。
图3示出了本申请实施例提供的另一种实施方式的异构处理系统的结构框图。
图4示出了本申请实施例提供的基于图3所示的异构处理系统进行处理任务的流程示意图。
具体实施方式
本申请实施例为了解决如何能够应对联邦学习、隐私计算、分布式人工智能等应用场景中各种复杂计算包括大数据量循环计算、递归计算、依赖计算等,而且具有高效计算、低处理延迟和高内存利用率的特点,这样的技术难题,提供了一种用于联邦学习和隐私计算的异构处理系统。如此,改进了将联邦学习和隐私计算的算法展开后得到的多个处理任务彼此之间的数据传输问题以及跨平台跨系统的数据交互问题,从而避免内存资源的浪费、处理能力的浪费以及输入输出能力的浪费,具有高效计算、低处理延迟和高内存利用率的优点。
本申请实施例可用于以下应用场景,包括但是不限于,多方安全计算、与联邦学习有关的机器学习模型训练、数据安全、隐私保护或者应用隐私计算框架或算法的其它应用场景等。
本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。
请参阅图1,图1示出了本申请实施例提供的异构处理系统的结构框图。图1所示的异构处理系统100包括串行子系统110和并行子系统120,其中,串行子系统110是以串行计算为主,例如中央处理器(Central Processing Unit,CPU)或者类似的基于指令集控制体系的处理器;并行子系统120是以并行计算为主例如现场可编程逻辑门阵列(FieldProgrammable Gate Array,FPGA)或者类似的针对并行化计算优化过的处理装置。在联邦学习、隐私计算、分布式人工智能等应用场景中,通过串行子系统110对复杂的算法进行拆解,得到适合通过并行计算方式进行加速的多个处理任务,将多个处理任务下发给并行子系统120,由并行子系统120进行处理后将处理结果上传给串行子系统110。这样做,既利用了并行子系统120的高度并行化、处理延迟低及可灵活配置的特点,也利用了串行子系统110的系统性控制、处理复杂应用场景的特点。另外,串行子系统110下发给并行子系统120的处理任务在时间上有先后之分,在前下发的处理任务的处理结果可能会用于在后下发的处理任务的输入数据,特别是在涉及到大数据量循环计算、递归计算、依赖计算等类似的应用场景。而受限于有限的计算资源,并行子系统120一般很难一次性将所有处理任务都处理完。对于在前下发的处理任务的处理结果,如果这些处理任务的处理结果经并行子系统120上传给串行子系统110后再由串行子系统110作为在后下发的处理任务的输入数据一起下发给并行子系统120,则会造成将业务数据从并行子系统120上传给串行子系统110后又由串行子系统110下发给并行子系统120,从而在资源和效率上带来负面影响。并且,这些业务数据还需要经串行子系统110的主处理器112完成在主存储器114的写入和读写操作,而在串行子系统110的主处理器112和主存储器114之间的读写操作会增加延迟,并且带来内存资源的浪费、处理能力的浪费以及输入输出能力的浪费。为了避免上述内存资源的浪费、处理能力的浪费以及输入输出能力的浪费,也为了避免将业务数据从并行子系统120上传给串行子系统110后又由串行子系统110下发给并行子系统120所带来的负面影响,异构处理系统100提供了在串行子系统110和并行子系统120之间的数据交互方面的改进以及在并行子系统内存140方面的改进,下面会详细说明这些改进。
应当理解的是,在大数据量循环计算、递归计算、依赖计算等类似的应用场景,需要对几个步骤所组成的迭代计算部分进行多次迭代计算,并且其中在先步骤的计算结果是在后步骤的输入数据。通过对联邦学习和隐私计算相关的算法进行解析,可以展开成多个计算模式的组合,其中,每个计算模式可以表示成对一个、两个、三个或者更多个操作数进行特定运算的计算式。上述的迭代计算部分也可以展开为若干个计算模式所组成的带有特定迭代终止条件的循环运算。下面以Paillier解密算法为例说明如何展开成多个计算模式的组合,请参考下面的公式(1)至公式(8)。
上述公式(1)表示公钥对和私钥对各自的参数,其中N本身以及N的二次方是取模运算中的模数也是公钥,而私钥对(λ,μ)是在Paillier加密时生成,用于后续解密的密钥。公式(2)是未展开的Paillier解密的数学表达式,其中C是密态数据也就是加密后得到的密文,m是解密后得到的明文。公式(3)是公式(2)中的函数L(x)的表达式,将公式(3)代入公式(2)后展开得到公式(4)。公式(4)是展开后的Paillier解密的数学表达式。从公式(4)可知,对于每一个密文C,根据公式(1)中的公钥对也就是N本身以及N的二次方,还有根据公式(1)中的私钥对(λ,μ),可以进行特定运算得到明文m。其中,公式(4)表明有两次取模运算,一次是以N的二次方为模数,另一次是以N为模数。并且,公式(1)至公式(4)表明,对于同一个批次的多个密文或者说同一个批次的多个输入数据,适用相同的公钥对和私钥对也就是适用相同的参数,这意味着每一次有新的输入数据也就是新的密文C,可以保留公式(4)中的参数不变,按照公式(4)进行特定运算得到的结果就是明文m。
公式(4)所示的展开后的Paillier解密的数学表达式可以进一步展开为由公式(5)至公式(8)的多个计算模式的组合。具体地,首先根据公式(5)计算R1,公式(5)意味着进行模幂计算,其中密文数据C是幂底数,私钥λ是幂指数,mod表示取模运算,N的二次方是公钥也是模数。公式(6)意味着进行对R1减去正整数1的操作,得到的减法运算结果就是R2。公式(7)意味着对R2进行除法运算,除数是公钥N,得到的除法运算结果就是R3。公式(8)意味着模乘计算操作,除法运算结果R3和私钥μ是用于模乘计算的两个参数,而公钥N是模数。可以利用蒙哥马利模乘原理,将公式(8)的模幂计算转换成先对R3和私钥μ分别进行蒙哥马利化,再通过蒙哥马利化域下的混淆运算得到混淆运算结果,最后对该混淆运算结果进行去蒙哥马利化,得到公式(8)的模乘计算结果,也就是公式(4)的Paillier解密结果也即明文数据m。应当理解的是,公式(4)所示的展开后的Paillier解密的数学表达式进一步展开后按照次序分成多个步骤,分别用公式(5)至公式(8)表示。也就是说,对于同一个批次的多个密文或者说同一个批次的多个输入数据,在适用相同的公钥对和私钥对也就是适用相同的参数的情况下,必须对每一个密文数据C逐个执行公式(5)至公式(8)各自对应的计算模式。并且,公式(5)至公式(8)各自对应的计算模式可以表示成对一个、两个、三个或者更多个操作数进行特定运算的计算式。例如,公式(5)是以密文C为操作数进行取模运算,公式(6)是以公式(5)的结果R1为操作数进行减去正整数1的操作,以下统一简称为减一运算,公式(7)是以公式(6)的结果R2为操作数进行除法运算,公式(8)是以公式(7)的结果R3为操作数进行模乘计算。
以上述的Paillier解密算法为例,通过对联邦学习和隐私计算相关的算法进行解析,可以展开成多个计算模式的组合,其中每个计算模式是对一个或者更多个操作数进行特定运算的计算式,这里每个计算模式的操作数可以是其它计算模式的结果也可以是新的输入数据例如新的密文。例如,可以对以下算法进行解析而展开成多个计算模式的组合:求交集算法、纵向安全梯度提升树算法、纵向逻辑回归算法、本地sklearn逻辑回归算法、纵向线性回归算法、纵向泊松回归算法、横向逻辑回归算法、横向神经网络算法、纵向快速安全梯度提升树算法、纵向安全梯度提升树特征编码算法、纵向神经网络算法、横向安全梯度提升树算法、纵向联邦迁移学习算法、纵向k-means算法、Feldman安全求和算法。对于包括了迭代计算部分的如大数据量循环计算、递归计算、依赖计算等,则可以将迭代计算部分也展开为若干个计算模式进行循环运算。如此,可以将联邦学习、隐私计算、分布式人工智能等应用场景中各种复杂计算解析后展开为多个计算模式。并且,如上述将Paillier解密算法展开后得到的公式(5)至公式(8)所示,其中一个计算模式的结果可以作为另一个的计算模式的输入数据。此外,同一个批次的多个输入数据例如上述采用Paillier解密算法的同一批次的多个密文,适用相同的参数,这也就意味着,同一个计算模式要对同一批次的多个输入数据进行多次的运算,每次运算保持参数不变只是改变操作数。例如,与公式(5)对应的计算模式需要对同一批次的多个密文,将每一个密文作为操作数进行一次取模运算。而与公式(6)对应的计算模式也需要将同一批次的多个输入数据中的每一个输入数据作为操作数进行一次减一运算,与公式(6)对应的计算模式的输入数据或者说操作数来自于与公式(5)对应的计算模式的输出结果。上述的公式(5)至公式(8)仅反映了单个操作数的情况。假设某个联邦学习算法展开后为多个计算模式的组合且每个计算模式包括至少两个操作数,则每个计算模式需要对同一批次的输入数据进行多次的运算,每次运算保持参数不变只是改变该至少两个操作数。类似地,对联邦学习和隐私计算相关的算法进行解析及展开的方式可以适用于包括三个操作数或者更多操作数的计算模式。应当理解的是,对于同一批次的数据而言,在联邦学习和隐私计算的相关应用场景中,可以适用相同的参数例如基于密钥确定的模数等,所以同一个计算模式可以在保持参数不变的前提下仅根据输入数据而改变操作数,从而完成对同一批次的输入数据的运算。
在联邦学习、隐私计算、分布式人工智能等应用场景中,需要大量的密态运算和大整数位宽数据,还经常涉及到例如大数据量循环计算、递归计算、依赖计算等具有迭代计算部分的情况,这些迭代计算部分与非迭代计算部分一样可以展开成包括一个或者多个操作数的计算模式,并且其中一个计算模式的结果可以作为另一个计算模式的输入数据。通过将组成迭代计算部分的若干个计算模式按照特定次序进行多次迭代计算可以完成对应的迭代计算部分。在实际应用中,对联邦学习和隐私计算的相关算法进行解析和展开的工作一般通过适合于进行复杂运算和系统控制的硬件来实现,例如通过图1所示的串行子系统110。经解析和展开而得到的各种计算模式,因为它们自身可以表示成对一个、两个、三个或者更多个操作数进行特定运算的计算式,所以适合通过并行化处理进行加速,例如通过图1所示的并行子系统120。具体地,串行子系统110对联邦学习和隐私计算的相关算法进行解析和展开,例如通过主处理器112对上述公式(4)所示的Paillier解密算法进行解析和展开,从而得到多个处理任务;每个处理任务对应一个计算模式,每个计算模式可以表示成对一个、两个、三个或者更多个操作数进行特定运算的计算式如上述的公式(5)至公式(8)。串行子系统110将多个处理任务下发给并行子系统120。考虑到一个处理任务的结果可以作为另一个处理任务的输入数据,例如与公式(6)对应的计算模式及相应处理任务的输入数据来自于与公式(5)对应的计算模式及相应处理任务的结果。为了避免将业务数据从并行子系统120上传给串行子系统110后又由串行子系统110下发给并行子系统120所带来的如延迟和读写操作方面的负面影响,下面结合图1详细说明串行子系统110和并行子系统120之间的数据交互方面的改进以及在并行子系统内存140方面的改进。
请继续参阅图1,如上所述,串行子系统110包括主处理器112和主存储器114,串行子系统110对联邦学习和隐私计算的相关算法进行解析和展开从而得到多个处理任务。每个处理任务对应一个计算模式,每个计算模式可以表示成对一个、两个、三个或者更多个操作数进行特定运算的计算式。主处理器112可以包括一个或者多个CPU,每个CPU可以各自提供处理任务也可以一起提供处理任务。主处理器112还可以包括其它适合进行串行计算的处理器或者集成电路用来提供处理任务。串行子系统110将多个处理任务下发到并行子系统120。并行子系统120包括接口控制模块122,接口控制模块122用于负责串行子系统110和并行子系统120之间的数据交互和通讯功能,包括接收从串行子系统110下发到并行子系统120的处理任务以及上传并行子系统120的结果数据到串行子系统110。接口控制模块122可以采用高速通讯接口,例如采用高速串行计算机扩展总线标准(peripheral componentinterconnect express,PCIE)接口。并行子系统120还包括并行计算引擎130,并行计算引擎130包括多个子计算引擎,多个子计算引擎彼此之间独立可以用于并行处理计算任务。并行计算引擎130可以同时并行处理多个计算任务,其中可以安排一个子计算引擎处理一个计算任务,也可以安排多个子计算引擎处理同一个计算任务。从串行子系统110下发到并行子系统120的多个处理任务,其中的运算例如上述公式(5)至公式(8)所示的运算,可以作为计算任务通过并行计算引擎130完成。一个处理任务可以作为一个计算任务也可以作为多个计算任务,一个处理任务可以通过一个子计算引擎完成也可以由多个子计算引擎完成。换句话说,一个计算模式可以看做一个计算任务也可以看做多个计算任务,一个计算模式可以通过一个子计算引擎完成也可以由多个子计算引擎完成。总之,并行计算引擎130可以通过任意合适的并行处理技术和数据分发技术从而通过所包括的多个子计算引擎来完成从串行子系统110下发到并行子系统120的多个处理任务。多个子计算引擎可以具有相同的结构和功能,也可以具有不同的结构和功能;可以具有相同的数据处理位宽也可以具有不同的数据处理位宽;可以具有相同或者不同的数据通路设计。
应当理解的是,图1所示的异构处理系统100所包括的串行子系统110和并行子系统120之间的数据交互是在异构计算或者异构运算的范畴。这里,异构计算或称之为异构运算,指的是一般意义上使用不同类型的指令集或者不同的体系架构的计算单元来组成系统进行计算的方式。其中,串行子系统110是以串行计算为主例如CPU,并行子系统120是以并行计算为主例如FPGA。任意其它合适的体系架构或者处理器技术也能用于构建或者补充串行子系统110或者并行子系统120,包括但是不限于,专用集成电路(Application-SpecificIntegrated Circuit,ASIC),粗颗粒可重构计算架构(Coarse-grained ReconfigurableArchitecture,CGRA),数字信号处理(Digital Signal Processing,DSP)。只要符合串行子系统110用于串行计算和并行子系统120用于并行计算这一特点,并且可用于实现串行子系统110和并行子系统120之间的数据交互方面的改进以及在并行子系统内存140方面的改进,任意合适的处理器或者计算单元都可用于组成、补充或者部分或全部替代串行子系统110或者并行子系统120,并且这些处理器或者计算单元可以在以下方面上保持一致或者具有不一致:指令集、指令体系、硬件架构、控制流、数据流、可重构性特别是动态可重构性,以及其它任意适合的指标或者特征。并且,本申请旨在包括在本申请提交或公布之后随着异构计算这一概念的演变而被包括在异构计算的概念相关理解中的指标或者特征以及适合用于串行计算或者并行计算的处理器技术或者集成电路硬件结构。
请继续参阅图1,并行子系统120还包括任务管理模块124,任务管理模块124用于负责调度、响应、处理以及管理从串行子系统110下发到并行子系统120的处理任务,也用于将待处理的数据及参数发送给并行计算引擎130进行计算,也用于接收并行计算引擎130的结果。任务管理模块124与接口控制模块122通信地连接,也与并行计算引擎130通信地连接,还与内存读写控制模块126通信地连接。内存读写控制模块126与并行子系统内存140通信地连接,内存读写控制模块126用于对并行子系统内存140的不同区域进行读写操作。任务管理模块124通过内存读写控制模块126而获取待计算的数据及参数,将并行计算引擎130的结果写入并行子系统内存140,以及读取储存在并行子系统内存140的结果。应当理解的是,任务管理模块124和内存读写控制模块126各自的功能可以重新组合或划分,可以通过整合而成的单一芯片实现也可以分别实现,可以用硬件、软件、固件或固态逻辑电路中的任何一种或组合来实现,并且可以结合信号处理、控制和/或专用电路来实现。本申请具体实施例提供的设备或装置可以包括一个或多个处理器(例如,微处理器,控制器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)等),这些处理器处理各种计算机可执行指令从而控制设备或装置的操作。本申请具体实施例提供的设备或装置可以包括将各个组件耦合在一起的系统总线或数据传输系统。系统总线可以包括不同总线结构中的任何一种或不同总线结构的组合,例如存储器总线或存储器控制器,外围总线,通用串行总线和/或利用多种总线体系结构中的任何一种的处理器或本地总线。本申请具体实施例提供的设备或装置可以是单独提供,也可以是系统的一部分,也可以是其它设备或装置的一部分。应当理解的是,并行子系统内存140以及所包括的各个区域,可以是并行子系统120的一部分,例如当并行子系统120是FPGA时并行子系统内存140是FPGA上用于数据存储的部分;或者,并行子系统内存140可以单独提供但是位于并行子系统120侧,例如与并行子系统120属于同一个硬件平台或者是相对于并行子系统120而言的本地存储器上。这样使得并行子系统120访问并行子系统内存140满足高速访问要求例如访问本地存储器或者同一个硬件平台或者同一个FPGA上的内存。
请继续参阅图1,并行子系统内存140进行区域划分和配置,从而得到三个区域,分别是任务下发区域142,中间结果区域144以及最终结果区域146。其中,任务下发区域142包括多个任务区间(“Task Section”),每个任务区间对应一个处理任务。串行子系统110可以一次性或者在一段时间内下发多个处理任务到并行子系统120,被下发的多个处理任务各自下发到任务下发区域142的多个任务区间中的一个任务区间。并行子系统120能同时处理的最大任务数根据任务下发区域142所包括的任务区间的数量确定。例如,任务下发区域142有16个任务区间,并行子系统120能同时处理的最大任务数是16个。每个任务区间的大小也就是每个任务区间所占据的实际物理内存空间的大小可以是一致的也可以是按照特定方式变化的。例如,任务区间可以均为1GB(Gigabyte)的大小,也可以根据任意合适规律变化。任务下发区域142用于提供执行处理任务所需的数据、参数以及配置信息,而中间结果区域144用于优化不同处理任务之间的数据传输,而最终结果区域146则用于保存要上传到串行子系统110的结果。
在一种可能的实施方式中,中间结果区域144和最终结果区域146各自的区间划分与任务下发区域一致。例如,任务下发区域142有16个任务区间,则中间结果区域144和最终结果区域146各自有16个任务区间。并且,中间结果区域144和最终结果区域146各自的任务区间的大小的变化规律也与任务下发区域142的任务区间的大小的变化规律一致。在另一种可能的实施方式中,任务下发区域142、中间结果区域144以及最终结果区域146在两个配置参数上保持一致:第一个配置参数是单个处理任务所支持的最大数据空间(称之为“TaskSize”)也即单个任务区间所能占据的最大物理内存空间;第二个配置参数是能支持的最大任务数也即同一区域内的任务区间的最大数量(称之为“Task Num”)。例如,任务下发区域142有16个任务区间且每个任务区间大小均为1GB,这意味着第一个配置参数(“TaskSize”)是1GB,而第二个配置参数(“Task Num”)是16。再例如,任务下发区域142有32个任务区间,而任务区间大小是在1GB、2GB和4GB中间选择,这意味着第一个配置参数(“TaskSize”)是4GB,而第二个配置参数(“Task Num”)是32。在根据任务下发区域142确定了第一个配置参数和第二个配置参数后,中间结果区域144以及最终结果区域146也符合这两个配置参数,从而可以实现任务下发区域142、中间结果区域144以及最终结果区域146之间的匹配。例如,任务下发区域142有16个任务区间且每个任务区间大小均为1GB,则中间结果区域144也有16个任务区间且每个任务区间大小均为1GB,最终结果区域146也有16个任务区间且每个任务区间大小均为1GB。应当理解的是,第一个配置参数(“Task Size”)也即单个处理任务所支持的最大数据空间以及第二个配置参数(“Task Num”)也即能支持的最大任务数,可以灵活设定和调整,也可以基于可重构技术例如基于静态可重构技术在上电前调整或者基于动态可重构技术在运行中调整,这些根据实际需求和并行子系统内存140的实际物理内存大小等确定,在此不做具体限定。只要将并行子系统内存140划分成三个区域也就是任务下发区域142、中间结果区域144以及最终结果区域146,并且这三个区域在第一个配置参数和第二个配置参数上保持一致,就可以实现这三个区域之间的匹配,从而有利于配合并行子系统120的其它部件实现并行处理多个处理任务。
任务下发区域142所包括的多个任务区间,每个任务区间对应一个处理任务。例如,设任务下发区域142有16个任务区间,这16个任务区间与16个处理任务一一对应。并且,每个任务区间内包含与该任务区间对应的处理任务的配置信息,配置信息中至少包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息。前面提到对联邦学习和隐私计算的相关算法进行解析和展开从而得到多个处理任务,每个处理任务对应一个计算模式,每个计算模式可以表示成对一个、两个、三个或者更多个操作数进行特定运算的计算式。任务下发区域142的任务区间所包括的与该任务区间对应的处理任务的配置信息可以包括各种信息,其中至少包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息。这样,任务管理模块124通过内存读写控制模块126,可以读取并行子系统内存140的任务下发区域142的任务区间内的配置信息,从而获得与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息,进而能够协调并行子系统120的并行计算引擎130来执行与该处理任务对应的计算模式。其中,与该处理任务对应的计算模式的操作数个数指的是该计算模式需要对多少个操作数进行特定运算,各个操作数各自的来源标识符用于标识各个操作数分别来自于串行子系统下发的数据或者来自于并行子系统内存的中间结果区域,例如通过1个比特的来源标识符进行标识,标记为0意味着来自于串行子系统下发的数据而标记为1意味着来自于并行子系统内存的中间结果区域。各个操作数各自的数据地址信息用于标识各个操作数的数据地址从而可以获取各个操作数。例如,各个操作数各自的数据地址信息可以包括各个操作数的数据地址信息中的数据首地址的低32位和数据首地址的高32位,再通过拼接数据首地址的低32位和数据首地址的高32位得到完整的数据首地址。在一些示例性实施例中,可以将数据首地址分成三段或者更多段,通过各个段的拼接得到完整的数据首地址,例如通过4个32位的段的拼接得到相当于128位的数据首地址。这样可以减少数据首地址的每个段所占据的物理内存空间的大小。在一些示例性实施例中,各个操作数各自的数据地址信息可以采用任意合适的数据格式或者存储技术,只要能用于标识各个操作数的数据地址从而可以获取各个操作数。在一些示例性实施例中,计算模式是多个预设计算模式中的一个预设计算模式,所述多个预设模式包括模幂计算、模乘计算、RSA交集计算、同态加密、同态解密、DH秘钥交换、密态加法、密态乘法、密态乘加、矩阵乘法、密文求和。
如此,在任务下发区域142的多个任务区间,每个任务区间对应一个处理任务并且每个任务区间内包含与该任务区间对应的处理任务的配置信息,该配置信息中至少包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息。通过各个操作数各自的来源标识符可以确定各个操作数分别来自于串行子系统下发的数据或者来自于并行子系统内存的中间结果区域,再通过各个操作数的数据地址信息可以获取各个操作数。因此,通过为下发到并行子系统120的每个处理任务分配任务区间并且在任务区间内提供配置信息,该配置信息中至少包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息,从而使得任务管理模块124可以通过该配置信息而确定当前的处理任务及相应计算模式所涉及的操作数是来自于串行子系统下发的数据或者来自于并行子系统内存的中间结果区域,并且通过该配置信息来获得各自的操作数。因此,通过为每个处理任务分配任务区间并在该任务区间提供上述配置信息,将原本需要复杂控制操作来完成的串行子系统110和并行子系统120之间的数据交互通过数据流驱动的方式实现。具体地,上面提到一个处理任务的结果可以作为另一个处理任务的输入数据,例如与公式(6)对应的计算模式及相应处理任务的输入数据来自于与公式(5)对应的计算模式及相应处理任务的结果。本申请实施例可以在公式(6)的处理任务相对应的任务区间的配置信息中将该操作数的来源标识符设为来自于并行子系统内存的中间结果区域,这样并行子系统120会通过该操作数的来源标识符来读取中间结果区域并获得该操作数也就是来自于与公式(5)对应的计算模式及相应处理任务的结果。这样避免了将业务数据从并行子系统120上传给串行子系统110后又由串行子系统110下发给并行子系统120所带来的如延迟和读写操作方面的负面影响。当涉及到多个操作数例如三个操作数的情况,各个操作数各自的来源标识符彼此独立,用来确定各个操作数分别来自于串行子系统下发的数据或者来自于并行子系统内存的中间结果区域。例如可以标识第一个操作数来自于串行子系统下发的数据,第二个操作数来自于并行子系统内存的中间结果区域,而第三个操作数来自于串行子系统下发的数据。这样并行子系统120可以从串行子系统下发的数据中获得第一个操作数和第三个操作数,而从中间结果区域获得第二个操作数。也就是说,面对一个处理任务的结果可以作为另一个处理任务的输入数据的情况,可以从中间结果区域获得该处理任务的结果并作为该另一个处理任务相对应的计算模式的操作数,从而节省了将业务数据上传和下发的操作也节省了内存读写操作。这样可以灵活应对将联邦学习和隐私计算的相关算法进行解析和展开之后的各种可能情况,有利于优化各种可能情况下的数据交互,有助于实现高效计算、低处理延迟和高内存利用率的好处。
在一种可能的实施方式中,为了进一步优化数据交互,该配置信息中还可以包括计算结果存放标识符,计算结果存放标识符用于标识本处理任务的结果存放于中间结果区域或者最终结果区域。任务管理模块124可以通过该配置信息而确定当前的处理任务及相应计算模式的结果存放于中间结果区域或者最终结果区域。例如与公式(6)对应的计算模式及相应处理任务的输入数据来自于与公式(5)对应的计算模式及相应处理任务的结果。本申请实施例可以在公式(5)的处理任务相对应的任务区间的配置信息中设定计算结果存放标识符标识本处理任务的结果存放于中间结果区域,这样并行子系统120会通过该计算结果存放标识符来将该处理任务的结果存放于中间结果区域,从而有利于后续处理。并且,串行子系统110还可以根据计算结果存放标识符来获悉该处理任务的结果存放于中间结果区域,而这也就意味着该处理任务的结果可用于其它处理任务,因此也不需要由串行子系统110进行数据读取操作,从而降低延迟和节省资源。当计算结果存放标识符标识本处理任务的结果存放于最终结果区域,则意味着本处理任务的结果不会用于后续的处理任务,可能可以上传到串行子系统110。但是,在一种可能的实施方式中,计算结果存放标识符标识本处理任务的结果存放于最终结果区域,可能仅意味着本处理任务的结果与下一波要下发的处理任务或者尚在运行中需要循环执行的处理任务之间没有数据传输需要,也就是说本处理任务的结果无需用于这些处理任务的输入数据。但是,本处理任务的结果也许可用于更下一波或者更后续的处理任务,只是适合于将本处理任务的结果上传回串行子系统110并作为输入数据在合适的时候下发而不是保存在中间结果区域144中。这样做是因为考虑到中间结果区域144的大小有限,所以有时候适合将处理任务的结果上传回串行子系统110。也就是说,计算结果存放标识符代表了从整体上考虑而施加在特定处理任务的结果上的控制操作。
在一种可能的实施方式中,为了进一步优化数据交互,该配置信息中还可以包括任务批次号和任务批次总数。其中,任务批次号用于标识采用同一计算模式对同一批次输入数据进行运算的批次,任务批次总数用于记录采用同一计算模式对同一批次输入数据进行运算的批次总数。上面提到对于同一批次的数据而言,在联邦学习和隐私计算的相关应用场景中,可以适用相同的参数例如基于密钥确定的模数等,所以同一个计算模式可以在保持参数不变的前提下仅根据输入数据而改变操作数,从而完成对同一批次的输入数据的运算。也就是说,同一批次的多个输入数据归属于同一个处理任务和相应的计算模式,也适用相同的参数,只需要每次采用新的输入数据时改变操作数。因此,任务批次总数意味着同一批次的输入数据的总数,也是需要执行同一计算模式进行运算的批次总数,而任务批次号用于标识其中特定的批次。例如,设同一批次有10个输入数据,均需要进行如上述公式(5)所示的模幂计算且适用相同的参数,其中共用的参数是幂指数和模数;可以设任务批次总数为10,任务批次号的初始值为0;对本处理任务执行10次,每次获取新的输入数据用作新的操作数,并对任务批次号递增,直到执行10次后使得任务批次号递增到10并与任务批次总数相等。
在一种可能的实施方式中,为了进一步优化数据交互,该配置信息中还可以包括其它信息,包括但是不限于,任务编号,用于标识本处理任务从而与其它处理任务区分开;与本处理任务对应的计算模式,用于标识计算模式的类型,例如标记为上述公式(5)所示的模幂计算;参数个数,用于标识与本处理任务对应的计算模式所涉及的参数的个数,例如上述公式(5)所示的计算模式涉及到两个参数,分别是幂指数和模数;参数宽度,用于说明每个参数的宽度,一般来说参数宽度指的是每个参数可以表示成多少位的二进制数,也即以比特为单位;各个操作数的宽度,也就是各个操作数分别可以表示成多少位的二进制数,用于后续读取操作;各个操作数的数据总长度,用于后续读取操作,数据总长度一般以字节(byte)为单位也即是8个比特位。
请参阅图2,图2示出了本申请实施例提供的图1所示的异构处理系统的并行子系统侧内存的结构示意图。图1所示的并行子系统内存140对应图2所示的并行子系统内存240。图1所示的并行子系统内存140所包括的任务下发区域142、中间结果区域144以及最终结果区域146分别对应图2所示的并行子系统内存240的任务下发区域242、中间结果区域244以及最终结果区域246。其中,任务下发区域242包括多个任务区间,每个任务区间进一步划分成配置信息子区间、参数子区间和数据子区间。其中,配置信息子区间用于存储与该任务区间对应的处理任务的配置信息,该配置信息中至少包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息。另外,该配置信息还可以包括计算结果存放标识符、任务批次号和任务批次总数、任务编号、与本处理任务对应的计算模式、参数个数、参数宽度、各个操作数的宽度、各个操作数的数据总长度等。配置信息子区间所存储的配置信息,可以通过多个字段,每个字段对应一种类型的配置信息。下面结合表1来说明。
请参考上述表1,表1示出了配置信息所包括的多个字段,这些字段各自具有编号CMD ID,字段含义CMD DATA,以及相关说明。其中,字段编号(表1中的“CMD ID”)仅为示例性,只要不同含义的字段分配不同的编号,可以有任意合适的字段编号方式。另外,只要满足字段编号与字段含义(表1中的“CMD DATA”)一一对应,也就是不同的字段含义具有不同的字段编号,则配置信息中各个字段的排列方式也是可以任意调整的,表1中的字段编号从上到下依次为编号1、编号2直到编号23仅为一种示例性排列方式。如上所述,配置信息中至少包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息。这些在表1中指代:表1中编号为8的字段(“OPDATA_NUMBER”)是与本处理任务对应的计算模式的操作数个数(一般为2个或者3个);编号为15、16和17的字段(“OPDATA1_SRC_FLAG”、“OPDATA2_SRC_FLAG”、“OPDATA3_SRC_FLAG”)分别是第1个操作数的来源标识符、第2个操作数的来源标识符和第3个操作数的来源标识符;编号为18和19的字段分别是第1个操作数的数据地址信息中的数据首地址的低32位和高32位;编号为20和21的字段分别是第2个操作数的数据地址信息中的数据首地址的低32位和高32位;编号为22和23的字段分别是第3个操作数的数据地址信息中的数据首地址的低32位和高32位。另外,配置信息中还可以包括计算结果存放标识符,这在表1中指代:表1中编号为5的字段(“RESULT_BUF_FLAG”)是计算结果存放标识符,用于标识本处理任务的结果存放于中间结果区域或者最终结果区域。另外,配置信息中还可以包括任务批次号和任务批次总数,这在表1中指代:表1中编号为3的字段(“BATCH_ID”)是任务批次号,用于标识采用同一计算模式对同一批次输入数据进行运算的批次;表1中编号为4的字段(“BATCH_SIZE”)是任务批次总数,用于记录采用同一计算模式对同一批次输入数据进行运算的批次总数。该配置信息中还可以包括其它信息,包括但是不限于,编号为1的字段是任务编号;编号为2的字段是与本处理任务对应的计算模式;编号为6的字段是参数个数;编号为7的字段是参数宽度;编号为9至11的字段是各个操作数的宽度;编号为12至14的字段是各个操作数的数据总长度。因此,表1所示的配置信息的各个字段,也可以理解成配置信息包括多个控制字段用于控制数据交互。其中,多个控制字段包括表1中所列出的各个字段,包括但是不限于,操作数个数字段、操作数来源标识符字段、操作数数据地址信息字段、任务编号字段、计算模式字段、任务批次号字段、任务批次总数字段、计算结果存放标识符字段、参数个数字段、参数宽度字段、操作数宽度字段、操作数数据总长度字段,以及其它表1上列出的字段还有任意用户自定义或者参与方约定的内容。例如,表1所示出的配置信息所包括的多个字段,或者叫做多个控制字段,还可以包括用户自定义字段,该用户自定义字段用于调整串行子系统110和并行子系统120之间的数据交互。
应当理解的是,编号为2的字段是与本处理任务对应的计算模式,而计算模式指的是在对联邦学习和隐私计算的相关算法进行解析和展开从而得到多个处理任务后,每个处理任务对应一个计算模式。因此,计算模式定义了相对应的处理任务要进行的特定运算。在一些示例性实施例中,计算模式(表1中编号为2的字段“OP_MODE”)可以是用户自定义的,或者可以是联邦学习参与方一起约定的,或者可以是预设的多种计算模式之一。预设的多种计算模式可以是根据联邦学习常见问题所涉及的计算而确定,例如可以包括以下定义的计算模式:模幂计算、模乘计算、RSA交集计算、同态加密、同态解密、DH秘钥交换、密态加法、密态乘法、密态乘加、矩阵乘法及密文求和。表1中对应的字段可以通过数字编号或者任意合适方式来区别不同的计算模式,在此不做具体限定。
应当理解的是,配置信息子区所存储的配置信息以及表1所示的字段,还可以包括任意其它信息,以便于执行本处理任务,并且可以包括由用户自定义的内容。并且,字段编号和字段含义也可以自由配置,只要满足一一对应关系从而可以根据字段编号来快速识别和区分字段含义。另外,除了以表1中多个字段来描述的方式,配置信息还可以用任意合适的方式来描述不同类型的配置信息,例如采用检索表、图像等方式。在一种可能的实施方式中,采用与表1类似的多字段方式来描述配置信息,并且设定整个配置信息子区间大小为32千字节(Kilobyte,KB),相对应的字段编号(表1中的“CMD ID”)与字段含义(表1中的“CMDDATA”)各自占4个字节且一起定义为一个字段,每个字段大小为8字节。以表1为例,共有23个字段。大小为32KB的配置信息子区间整体上可以容纳最多四千个字段,也就是可以定义四千个不同含义的字段。另外,配置信息子区间还可以保留4个字节大小的物理内存空间以指示所包括的字段总数也就是用4个字节大小的专属空间来保存字段总数这一信息。配置信息子区间还可以提供更多专属空间来保存其它特殊信息以便执行本处理任务。
请继续参阅图2,如上所述,任务下发区域242包括多个任务区间,每个任务区间进一步划分成配置信息子区间、参数子区间和数据子区间。配置信息子区间所存储的配置信息用于提供执行与任务区间对应的处理任务的相关信息,也用于提供解析及利用参数子区间和数据子区间的必要信息,从而有利于执行该处理任务。其中,配置信息至少包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息。参数子区间用于存储该计算模式的参数。如上所述,对于同一批次的数据而言,在联邦学习和隐私计算的相关应用场景中,可以适用相同的参数例如基于密钥确定的模数等,所以同一个计算模式可以在保持参数不变的前提下仅根据输入数据而改变操作数,从而完成对同一批次的输入数据的运算。也就是说,同一批次的多个输入数据归属于同一个处理任务和相应的计算模式,也适用相同的参数,只需要每次采用新的输入数据时改变操作数。例如,上述公式(5)所示的模幂计算适用相同的参数。参数子区间所存储的参数相关信息可以表示为,例如上述表1所示的编号为6的字段也就是参数个数(参数子区间所包括的参数的个数);以及编号为7的字段也就是参数宽度(参数子区间每个参数的宽度)。
请继续参阅图2,数据子区间用于存储待计算的数据也就是各个操作数。上面提到,对联邦学习和隐私计算的相关算法进行解析和展开从而得到多个处理任务,每个处理任务对应一个计算模式,每个计算模式可以表示成对一个、两个、三个或者更多个操作数进行特定运算的计算式。因此,计算模式所对应的特定运算的计算式例如上述公式(5)包括两种类型的数据,分别是参数和操作数。操作数可以是明文、密态数据或者任意待计算的原始数据,而参数则是同一批次的输入数据共用的参数。对于同一批次的多个输入数据,同一个计算模式可以在保持参数不变的前提下仅根据输入数据而改变操作数,而每一次采用新的输入数据则意味着新的批次并用上述表1中所示的编号为3的字段所对应的任务批次号进行标注。通过配置信息中所包括的与该处理任务对应的计算模式的操作数个数以及各个操作数各自的数据地址信息,可以获得各个操作数。例如表1中示例性示出了三个操作数的情况,可以通过编号为18至23的字段来获得第1个操作数、第2个操作数以及第3个操作数。另外,对于同一批次的新的输入数据,可以根据各个操作数的宽度和数据总长度,再结合各个操作数的数据地址信息进行推算,从而得到新的输入数据对应的各个操作数。例如,设计算模式是对三个操作数进行密态乘加运算,第一个操作数与第二个操作数相乘得到的结果再与第三个操作数相加。再设同一批次有两个输入数据,也就是要进行两次密态乘加运算。对于第一个输入数据,可以通过第1个操作数的宽度(表1中编号为9的字段)及第1个操作数的数据总长度(表1中编号为12的字段)来读取第1个操作数从而确定读取操作所需要读取的范围,通过第1个操作数的数据地址信息(表1中编号为18和19的字段)确定读取操作的对象,从而完成对第1个操作数的读取操作。类似地,通过确定各个操作数各自的宽度、数据总长度及数据地址信息,可以完成对第2个操作数和第3个操作数的读取操作。在一种可能的实施方式中,可以预先设定各个操作数具有固定的宽度和数据总长度,例如设定宽度为8字节而数据总长度为1024字节,这样只需要数据地址信息就可以完成读取操作。对于第二个输入数据,需要在第一个输入数据所对应的各个操作数的读取操作基础上进行简单的推算,从而完成第二个输入数据所对应的各个操作数的读取操作。具体地,可以在第一个输入数据的第1个操作数的数据地址信息上增加特定数值,该特定数值可以是第1个操作数的宽度的八分之一,这样增加后得到的数据地址信息对应第二个输入数据的第1个操作数。特定数值是用于根据前一个输入数据的操作数的数据地址信息来推定下一个输入数据的操作数的数据地址信息,因此可以根据操作数的宽度来确定。在一些示例性实施例中,可以采用任意合适的地址分布方式来安排不同输入数据的操作数的数据地址信息只要能进行操作数的读取操作。类似地,可以在第一个输入数据的第2个操作数的数据地址信息上增加特定数值,该特定数值是第2个操作数的宽度的八分之一,这样增加后得到的数据地址信息对应第二个输入数据的第2个操作数;可以在第一个输入数据的第3个操作数的数据地址信息上增加特定数值,该特定数值是第3个操作数的宽度的八分之一,这样增加后得到的数据地址信息对应第二个输入数据的第3个操作数。结合上述表1,通过编号为18的字段和编号为19的字段可以获得第1个操作数的数据地址信息的低32位和高32位,从而获得完整的第1个操作数的数据地址信息,这是第一个输入数据的第1个操作数的数据地址信息;第二个输入数据的第1个操作数的数据地址信息在第一个输入数据的第1个操作数的数据地址信息上增加第1个操作数的宽度(编号为9的字段)的八分之一;依次类推可以获得更多的输入数据的第1个操作数的数据地址信息。类似地,通过编号为20的字段和编号为21的字段可以获得第2个操作数的数据地址信息的低32位和高32位,从而获得完整的第2个操作数的数据地址信息,这是第一个输入数据的第2个操作数的数据地址信息;第二个输入数据的第2个操作数的数据地址信息在第一个输入数据的第2个操作数的数据地址信息上增加第2个操作数的宽度(编号为10的字段)的八分之一;依次类推可以获得更多的输入数据的第2个操作数的数据地址信息。类似地,通过编号为22的字段和编号为23的字段可以获得第3个操作数的数据地址信息的低32位和高32位,从而获得完整的第3个操作数的数据地址信息,这是第一个输入数据的第3个操作数的数据地址信息;第二个输入数据的第3个操作数的数据地址信息在第一个输入数据的第3个操作数的数据地址信息上增加第3个操作数的宽度(编号为11的字段)的八分之一;依次类推可以获得更多的输入数据的第3个操作数的数据地址信息。
如上所述,任务下发区域242包括多个任务区间,每个任务区间进一步划分成配置信息子区间、参数子区间和数据子区间。通过配置信息子区间所存储的配置信息,可以解析并获得参数子区间所存储的参数,还可以解析并获得数据子区间所存储的待计算的数据也就是各个操作数,从而可以执行与本处理任务对应的计算模式。并且,配置信息至少包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息,从而使得通过各个操作数各自的来源标识符来确定当前的处理任务及相应计算模式所涉及的操作数是来自于串行子系统下发的数据或者来自于并行子系统内存的中间结果区域,并且通过数据地址信息获得各自的操作数。并且,配置信息还可以包括计算结果存放标识符用于标识本处理任务的结果存放于中间结果区域或者最终结果区域。配置信息还可以包括其它信息以便执行本处理任务。因此,对联邦学习和隐私计算的相关算法进行解析和展开从而得到多个处理任务,每个处理任务对应一个计算模式,每个计算模式可以表示成对一个、两个、三个或者更多个操作数进行特定运算的计算式,每个处理任务的待计算数据和参数被下发到与该处理任务对应的任务区间的配置信息子区间、参数子区间和数据子区间。通过配置信息中所包括的操作数个数以及各个操作数各自的来源标识符和数据地址信息,可以避免数据上传和下发的操作,从而减低延迟和提高计算效率,并且通过配置信息中所包括的计算结果存放标识符可以选择性地将个别处理任务的结果写入中间结果区域从而有利于后续处理任务从中间结果区域读取。并且,配置信息还可以包括其它信息包括用户自定义的信息,用于更好地利用参数子区间和数据子区间,有利于灵活应对将联邦学习和隐私计算的相关算法进行解析和展开之后的各种可能情况。
应当理解的是,表1所示的配置信息所包括的多个字段,以及上述的配置信息所包括的各种信息,均为示例性,可以根据实际需要进行调整、改进或者补充。例如,配置信息可以包括更多的操作数如四个操作数,则表1中的字段也要相应地增加第4个操作数的宽度、第4个操作数的数据总长度、第4个操作数的来源标识符以及第4个操作数的数据地址信息等。另外,关于各个字段的字段编号、字段含义以及每个字段的大小,也是可以灵活调整,在配置信息子区间内的各个字段的排列次序也可以调整。再例如,表1中的具体标记也可以灵活调整,比如编号为5的字段是计算结果存放标识符(“RESULT_BUF_FLAG”),可以用0标记结果存放于中间结果区域而用1标记结果存放于最终结果区域,或者相反。类似地,编号为15的字段是第1个操作数的来源标识符,也可以灵活调整具体标记,只要能与相关部件协调完成所需的功能。另外,关于配置信息子区间、参数子区间和数据子区间的大小,在一种可能的实施方式中,可以设定配置信息子区间的大小是32KB,参数子区间的大小是32KB,而整个任务区间的大小也就是上述的单个任务区间所能占据的最大物理内存空间(“Task Size”)是1GB,所以数据子区间是任务区间的大小减去配置信息子区间的大小以及参数子区间的大小的差值。这些可以根据实际需要进行调整,只要保证在配置信息子区间、参数子区间和数据子区间之间匹配,从而可以根据配置信息解析并获得所需的参数和操作数。
请继续参阅图2,中间结果区域244和最终结果区域246各自的区间划分与任务下发区域242一致,也就是具有同样多的任务区间。例如,任务下发区域242有16个任务区间,则中间结果区域244和最终结果区域246各自有16个任务区间。中间结果区域244的每一个任务区间进一步划分成数据信息子区间和结果数据子区间。最终结果区域246的每一个任务区间进一步划分成数据信息子区间和结果数据子区间。其中,中间结果区域244的数据信息子区间和最终结果区域246的数据信息子区间均用于解析各自的结果数据子区间并获得所需数据。并且,中间结果区域244和最终结果区域246的数据信息子区间保持一致的格式,包括一些用于检验的信息。在一种可能的实施方式中,数据信息子区间包括的信息至少有任务编号、任务批次号、任务批次总数、计算模式、结果数据宽度以及结果数据长度。这里,任务编号、任务批次号、任务批次总数、计算模式分别对应上述表1所示的编号为1、3、4、2的字段。结果数据宽度指的是在结果数据子区间内保存的结果数据的宽度,例如以比特为单位。结果数据长度指的是在结果数据子区间内保存的结果数据的长度,例如以字节为单位。数据信息子区间还可以包括其它信息例如用户自定义或者参与方约定的内容。例如,用户可以自定义数据优先级的字段,用于标识不同的结果数据之间的优先级。中间结果区域244和最终结果区域246的结果数据子区间也保持一致的格式,用于保存之前的处理任务的结果数据。而数据信息子区间所保存的结果数据宽度以及结果数据长度可用于解析并获得这些结果数据。应当理解的是,中间结果区域244和最终结果区域246各自的数据信息子区间包括检验信息用于校验任务下发区域242的配置信息子区间所存储的配置信息。通过将检验信息与配置信息比较,如果二者一致则认为操作正常,如果二者不一致则停止对当前任务的处理。具体地,中间结果区域244和最终结果区域246各自的数据信息子区间包括检验信息具有结果数据宽度以及结果数据长度,分别用于校验配置信息的操作数的宽度(例如表1中的“OPDATA1_WIDTH”)和操作数的数据总长度(例如表1中的“OPDATA1_LENGTH”)。
在一种可能的实施方式中,任务下发区域242的每个任务区间各自所包括的配置信息子区间、参数子区间和数据子区间,其中配置信息子区间的大小是32KB,参数子区间的大小是32KB,而整个任务区间的大小是1GB,所以数据子区间的大小是1GB减去64KB的差值。而中间结果区域244的每个任务区间各自所包括的数据信息子区间和结果数据子区间,其中数据信息子区间的大小是64KB,而整个任务区间的大小是1GB,所以结果数据子区间的大小是1GB减去64KB的差值。而最终结果区域246的每个任务区间各自所包括的数据信息子区间和结果数据子区间,其中数据信息子区间的大小是64KB,而整个任务区间的大小是1GB,所以结果数据子区间的大小是1GB减去64KB的差值。因此,任务下发区域242的每个任务区间所包括的数据子区间与中间结果区域244的每个任务区间所包括的结果数据子区间具有相同大小,也与最终结果区域246的每个任务区间所包括的结果数据子区间具有相同大小。这样,结合上述的第一配置参数(单个任务区间所能占据的最大物理内存空间)和第二配置参数(同一区域内的任务区间的最大数量)保持一致,再加上区间划分上保持一致,可以有利于并行子系统内存240的不同区域之间的匹配,有利于提高整体上的计算性能。
请参阅图1和图2,如上所述,表1所示的配置信息中的内容至少包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息,并且来源标识符可以标识该操作数来自于串行子系统下发的数据或者来自于并行子系统内存的中间结果区域。因此,当某个操作数的来源标识符标识该操作数来自于串行子系统下发的数据,则可以通过该操作数的数据地址信息从任务下发区域的对应任务区间的数据子区间中获得该操作数;而某个操作数的来源标识符标识该操作数来自于并行子系统内存的中间结果区域,则可以通过该操作数的数据地址信息从中间结果区域的对应任务区间的结果数据子区间获得该操作数。因此,为了读取操作的简便,在一种可能的实施方式中,任务下发区域的任务区间的数据子区间与中间结果区域的任务区间的结果数据子区间采用一致的方式保存数据,从而使得可以根据该操作数的数据地址信息从任务下发区域或者中间结果区域获得该操作数。并且,通过设定一致的保存数据方式,还使得可以根据中间结果区域的任务区间的数据信息子区间来验证是否发生错误。例如,可以读取中间结果区域的任务区间的数据信息子区间所保存的任务编号、任务批次号、任务批次总数、计算模式中的一个或者多个,并与任务下发区域的任务区间的配置信息子区间的内容进行比对和验证,以便确定是否发生错误。另外,通过设定一致的保存数据方式,既可以通过任务下发区域的任务区间的配置信息子区间所保存的该操作数的数据地址信息来获得该操作数,也可以通过中间结果区域的任务区间的数据信息子区间所保存的结果数据宽度以及结果数据长度来获得该操作数。并且,可以将数据地址信息与结果数据宽度以及结果数据长度进行比对和验证,以便确定是否发生错误。下面结合表2来说明如何应对不同处理任务之间的数据传输问题。
如上表2所示,在一种可能的实施方式中,设有3个处理任务,分别为处理任务1、处理任务2及处理任务3。其中,处理任务1涉及两个操作数,并且处理任务1的结果存放于中间结果区域。处理任务2涉及三个操作数,其中第1个操作数和第2个操作数来自于下发数据,而第3个操作数来自于中间结果区域并且是处理任务1的结果,并且处理任务2的结果存放于中间结果区域。因此,通过上述如表1所示的配置信息及字段,还有上述的中间结果区域的数据保存方式,执行处理任务2时可以从中间结果区域获得所需的第3个操作数,而不需要经过数据上传和下发的操作。另外,处理任务3涉及三个操作数,其中第1个操作数来自于下发数据,第2个操作数来自于中间结果区域并且是处理任务1的结果,而第3个操作数来自于中间结果区域并且是处理任务3的结果。因此,执行处理任务3时可以从中间结果区域获得所需的第2个操作数以及第3个操作数,而不需要经过数据上传和下发的操作。对联邦学习和隐私计算的相关算法进行解析和展开从而得到多个处理任务后,这些多个处理任务之间可能具有数据传输的需要,也就是其中一个处理任务的结果用于另一个处理任务的输入数据或者至少一部分输入数据,而且若干个处理任务可能构成需要进行循环计算的迭代计算部分。如果通过外部控制器例如CPU或者控制指令来统筹这些处理任务之间的数据传输,则往往涉及到数据上传和下发的操作,从而不利于减低延迟和提高计算效率。为此,本申请实施例提供了,如图1和图2所示的,通过添加控制字段到数据流中的方式从而在并行子系统侧就完成必要的数据传输,从而避免了将业务数据从并行子系统上传到串行子系统再由串行子系统下发到并行子系统的操作,因此优化了串行子系统和并行子系统之间的数据交互。以表2为例,在处理任务1的配置信息中设定计算结果存放标识符为0,这意味着处理任务1的结果存放于中间结果区域。在处理任务2的配置信息中设定计算结果存放标识符为0,这意味着处理任务2的结果存放于中间结果区域;第3个操作数的来源标识符为1,这意味着处理任务2的第3个操作数来自于中间结果区域。因此,通过处理任务1的配置信息和处理任务2的配置信息,就完成了处理任务1与处理任务2之间的数据传输,也就是将处理任务1的结果作为处理任务2的第3个操作数也即一部分输入数据。另外,处理任务3的计算结果存放标识符为1,这意味着处理任务3的结果存放于最终结果区域,也就是可以用于上传到串行子系统。应当理解的是,表2仅为示例性说明。
请参阅图1和图2,本申请实施例提供了如表1所示的配置信息以及各个字段,从而使得负责进行并行计算的并行子系统可以根据配置信息来判断所需的操作数是来自于下发数据或者来自于中间结果区域,也可以根据配置信息来判断本处理任务的结果是存放于中间结果区域或者存放于最终结果区域。因此,通过添加控制字段到数据流中的方式,以及通过对并行子系统内存按照特定方式进行区域划分得到彼此之间有紧密联系的任务下发区域、中间结果区域以及最终结果区域,从而将联邦学习和隐私计算中各种复杂计算特别其中所涉及的数据交互方面的控制问题,转化为基于控制字段的数据流驱动的问题,进而使得主要负责并行加速计算的并行子系统可以在无需将数据上传到串行子系统并接收控制指令的前提下,仅通过在并行子系统内存侧的配置信息就完成各个处理任务之间的数据传输,从而避免内存资源的浪费、处理能力的浪费以及输入输出能力的浪费,具有高效计算、低处理延迟和高内存利用率的优点。并且,配置信息可以包括各种类型的信息来进一步优化数据交互,例如用户自定义内容和参与方约定内容,从而能更好地实现通过配置信息的内容也就是控制字段来实现数据流驱动。换句话说,异构处理系统的管理方或者用户可以通过能灵活配置且自定义的配置信息如表1中的各个字段,从而将用户需求整合到数据流中。配置信息应与相对应的处理任务一起下发到并行子系统,或者说不同时下发但是在并行子系统开始执行处理任务前就配置好相应的配置信息也就是控制字段,从而使得并行子系统可以根据配置信息也即控制字段进行处理任务的输入数据的读取操作以及结果的写入操作。如此,通过提供必要的控制字段来实现不同处理任务之间的数据传输,包括将某个处理任务的结果写入中间结果区域以及从中间结果区域读取用于某个处理任务的输入数据,从而避免数据上传和下发的操作,并且通过能灵活配置且自定义的配置信息可以将用户需求等各种需求整合到数据流驱动方式中,并且通过上述的数据宽度、数据长度以及物理内存空间的大小规划等实现了不同区域之间的匹配从而有利于提高整体计算性能。并且,中间结果区域作为实现不同处理任务之间数据传输的关键区域,既用于写入处理任务的结果也用于读取处理任务的操作数,而且通过设定配置信息中的计算结果存放标识符可以控制是否写入中间结果区域。因此,考虑到中间结果区域的大小有限或者说并行子系统内存的资源有限,可以在生成处理任务时就预先安排写入中间结果区域的时机或者说选择性地让个别处理任务的结果不写入中间结果区域而是先上传回串行子系统再下发。当中间结果区域的大小相对于数据流需求而言不太足够时,这样做可以更充分地利用中间结果区域的作用,有利于提高整体上的计算性能。
请参阅图1和图2,上面提到对联邦学习和隐私计算的相关算法进行解析和展开从而得到多个处理任务,在生成处理任务的过程中就需要对算法进行解析并展开成计算模式。而在生成处理任务的同时或者之后可以生成相应的配置信息,也就是与每个处理任务对应的控制字段,其中控制字段应包括必要的执行本处理任务的信息,包括与该处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息,从而使得执行该处理任务时可以获得必要的操作数。控制字段还应该包括其它信息以获得必要的参数。当面对由复杂算法所生成的多个处理任务,并行子系统出于性能和资源的限制每次无法处理全部的处理任务,这种情况下可以通过控制字段也即配置信息中的计算结果存放标识符来选择性地设定将特定处理任务的结果存放在中间结果区域或者最终结果区域,并且设定在执行相关的处理任务时从中间结果区域或者下发数据中获取操作数。这意味着,可以根据实际需要特别是中间结果区域的大小来选择性地触发数据上传和下发操作,从而提供更多的灵活性来定制化设计以及灵活调整整体控制流程。然而,无论是否选择触发数据上传和下发操作,这些控制流程都是通过控制字段来实现,而控制字段应该在执行处理任务之前就配置在相应的任务区间的任务下发区域内。如此,数据交互方面的控制问题被转化为基于控制字段的数据流驱动的问题,并且可以通过控制字段的灵活设计来完成原本复杂的控制流程,而且还可以通过特定字段的设计来实现更精细的资源控制和内存操作。
请参阅图3,图3示出了本申请实施例提供的另一种实施方式的异构处理系统的结构框图。如图3所示,异构处理系统300包括串行子系统310和并行子系统320。其中,串行子系统310的结构和功能与图1所示的异构处理系统100的串行子系统110相似,并行子系统320的结构和功能与图1所示的异构处理系统100的并行子系统120相似。因此,结合图1和图2,上面提到的通过控制字段的灵活设计来完成原本复杂的控制流程,包括通过控制字段来实现不同的处理任务之间的传输(例如将一个处理任务的结果作为另一个处理任务的输入数据),同时避免将业务数据上传和下发的操作,也适用于异构处理系统300的串行子系统310和并行子系统320。因此,串行子系统310对联邦学习和隐私计算的相关算法进行解析和展开从而得到多个处理任务并生成相应的配置信息或称控制字段。串行子系统310将多个处理任务下发给并行子系统320,并行子系统320的内存与图2所示的并行子系统内存240类似,有三个区域,分别为任务下发区域、中间结果区域和最终结果区域。这三个区域各自有多个任务区间,每个任务区间对应多个处理任务中的一个处理任务。上面提到的关于通过特定字段的设计来实现更精细的资源控制和内存操作,例如通过控制字段也即配置信息中的计算结果存放标识符来选择性地设定将特定处理任务的结果存放在中间结果区域或者最终结果区域,也适用于并行子系统320。总之,通过添加控制字段到数据流中的方式,以及通过对并行子系统320的内存按照特定方式进行区域划分得到彼此之间有紧密联系的任务下发区域、中间结果区域以及最终结果区域,从而将数据交互方面的控制问题转化为基于控制字段的数据流驱动的问题,进而使得主要负责并行加速计算的并行子系统320可以在无需将数据上传到串行子系统310并接收控制指令的前提下,仅通过在并行子系统320的内存侧的配置信息就完成各个处理任务之间的数据传输,从而避免内存资源的浪费、处理能力的浪费以及输入输出能力的浪费,具有高效计算、低处理延迟和高内存利用率的优点。
为了进一步改进串行子系统310和并行子系统320之间的数据交互,也为了进一步简化控制问题而改进整体计算性能,异构处理系统300还包括多个寄存器,分别是任务地址配置寄存器350、任务状态寄存器352和任务结果寄存器354。其中,任务地址配置寄存器350存储有多个记录,每条记录对应一个数据起始地址,每条记录有寄存器地址、寄存器名称以及说明。这些记录可以分成三种类型,分别对应任务下发区域、中间结果区域和最终结果区域中的数据起始地址。串行子系统310将多个处理任务下发到并行子系统320,并从并行子系统320接收结果数据,为了确保串行子系统310和并行子系统320进行处理任务和结果数据交互时,串行子系统310和并行子系统320能彼此知晓每个处理任务的相关数据、参数的物理内存地址,因此需要通过参考任务地址配置寄存器350的各个记录来获得合适的数据起始地址以便后续操作。这里,数据起始地址是用于识别与特定处理任务相对应的任务区间并在任务区间的存储内容连续分布的情况下结合任务区间大小来读取与该任务区间的所有数据。如上所述特定处理任务在任务下发区域、中间结果区域和最终结果区域中各自有对应的任务区间。任务地址配置寄存器350也相应的提供三种类型的数据起始地址,分别为任务源数据起始地址、任务中间结果数据起始地址以及任务最终结果数据起始地址,以下面表3为例。
上面表3示意性示出了任务地址配置寄存器350中的内容,其中提供了任务源数据起始地址、任务中间结果数据起始地址以及任务最终结果数据起始地址从而分别对应任务下发区域、中间结果区域和最终结果区域。如表3所示,与任务下发区域对应的任务源数据起始地址配置寄存器定义包括六条记录,每条记录有寄存器地址、寄存器名称以及说明。其中,任务编号1任务源数据起始地址低4字节和任务编号1任务源数据起始地址高4字节合并就可以得到完整的任务编号1任务源数据起始地址,可用于获得与任务编号1对应的处理任务在任务下发区域中的相应任务区间的起始地址,这样结合上述的任务下发区域中的任务区间的大小,例如第一个配置参数(“Task Size”),就可以获得该任务区间内的数据。类似地,任务编号2任务源数据起始地址低4字节和任务编号2任务源数据起始地址高4字节合并就可以得到完整的任务编号2任务源数据起始地址,可用于获得与任务编号2对应的处理任务在任务下发区域中的相应任务区间的起始地址;任务编号3任务源数据起始地址低4字节和任务编号3任务源数据起始地址高4字节合并就可以得到完整的任务编号3任务源数据起始地址,可用于获得与任务编号3对应的处理任务在任务下发区域中的相应任务区间的起始地址。继续参考表3,与中间结果区域对应的任务中间结果数据起始地址配置寄存器定义也包括六条记录,每条记录有寄存器地址、寄存器名称以及说明。通过合并相同任务编号的任务中间结果数据起始地址低4字节和任务中间结果数据起始地址高4字节可以得到各个任务编号的完整的任务中间结果数据起始地址,并可用于获得各个任务编号的处理任务在中间结果区域中的相应任务区间的起始地址。类似地,与最终结果区域对应的任务最终结果数据起始地址配置寄存器定义也有六条记录,每条记录有寄存器地址、寄存器名称以及说明。通过合并相同任务编号的任务最终结果数据起始地址低4字节和任务最终结果数据起始地址高4字节可以得到各个任务编号的完整的任务最终结果数据起始地址,并可用于获得各个任务编号的处理任务在最终结果区域中的相应任务区间的起始地址。例如,假设任务区间大小为1GB,在任务源数据起始地址配置寄存器定义中,将第一条记录(寄存器地址为0x00001000,对应寄存器名称为task_1_srcdata_addr_l)中的数据起始地址配置为0x00000000,第二条记录(寄存器地址为0x00001004,对应寄存器名称为task_1_srcdata_addr_h)中的数据起始地址配置为0x00000000;第三条记录(寄存器地址为0x00001008,对应寄存器名称为task_2_srcdata_addr_l)中的数据起始地址配置为0x40000000;第四条记录(寄存器地址为0x0000100C,对应寄存器名称为task_2_srcdata_addr_h)中的数据起始地址配置为0x00000000。这样意味着,任务编号1的处理任务的任务源数据起始地址是将第一条记录和第二条记录各自记录的数据起始地址拼接得到0x00000000,再结合任务区间的大小为1GB,可以得知与任务编号1的处理任务相对应的任务源数据末地址是3FFFFFFF,如此便于读取与任务编号1的处理任务相对应的任务区间的数据。类似地,任务编号2的处理任务的任务源数据起始地址是将第三条记录和第四条记录各自记录的数据起始地址拼接得到0x40000000,再结合任务区间的大小为1GB,可以得知与任务编号2的处理任务相对应的任务源数据末地址是7FFFFFFF,如此便于读取与任务编号2的处理任务相对应的任务区间的数据。
应当理解的是,表3所示的配置寄存器定义仅为示例性,只要不同的处理任务之间没有内存地址上的冲突,可以灵活调整并且可以由用户自定义不同处理任务的数据起始地址。并且,不同处理任务的数据起始地址之间可以配置为连续的也可以配置为非连续的或者两者兼有。另外,表3中将数据起始地址分成低4字节和高4字节两部分分别保存在两条记录中。根据实际需要,也可以将数据起始地址分成更多部分,例如分成三部分每部分有4字节,并通过拼接各个部分的方式得到完整的数据起始地址。表3中示例性只示出了任务编号为1、2和3的数据起始地址,任务地址配置寄存器350可以包括对应任意数量处理任务的记录。例如,任务地址配置寄存器350可以在表3基础上拓展后使得与任务下发区域对应的任务源数据起始地址配置寄存器定义、与中间结果区域对应的任务中间结果数据起始地址配置寄存器定义以及与最终结果区域对应的任务最终结果数据起始地址配置寄存器定义各自包括32条记录,每两条记录成对且记录了同一处理任务的数据起始地址的低4字节和高4字节,从而对应16个处理任务。并且,为了串行子系统310和并行子系统320之间的数据交互,需要事先约定任务地址配置寄存器350中的配置方式,并且在开始计算之前配置好,这样后续才能按照事先约定的配置方式来从任务地址配置寄存器350获得每个处理任务的数据起始地址并用于读写操作。如此,通过让串行子系统310和并行子系统320在数据交互中利用任务地址配置寄存器350来获得处理任务的数据起始地址,从而简化了串行子系统310和并行子系统320的数据交互,并且使得可以通过调整任务地址配置寄存器350的记录来灵活应对各种复杂环境,例如根据并行子系统320的处理能力及内存的变化来调整任务地址配置寄存器350的记录。这样在并行子系统320为FPGA或者类似的硬件结构时,可以更好地利用FPGA的资源可配置的特点,结合实际上分配给并行子系统320的资源或者说并行子系统320的处理能力来灵活调整任务地址配置寄存器350的记录,例如当并行子系统320的处理能力较强时可以增加任务地址配置寄存器350的记录数量及相应的能用于并行计算的处理任务的数量,而当并行子系统320的处理能力较弱时可以减少任务地址配置寄存器350的记录数量及相应的能用于并行计算的处理任务的数量,从而进一步简化控制问题及改进整体计算性能。
上面提到通过任务地址配置寄存器350来获得处理任务的数据起始地址,异构处理系统300所提供的任务状态寄存器352可以用来获得处理任务的状态、计算引擎工作状态以及任务处理错误。具体地,任务状态寄存器352包括多个记录,每个记录至少包括任务编号、任务启动标识符、计算引擎工作状态标识符以及任务处理错误标识符。其中,任务编号用于标识任务处理结果归属于哪个任务,与上述下发任务时所用的任务编号一致(例如表1中的编号为1的字段)。参考上述关于任务地址配置寄存器350的说明,不同的任务编号也意味着不同的数据起始地址。任务启动标识符用于指示任务是否启动,例如标记为1则意味着任务已经启动以及标记为0则意味着任务未启动处于空闲状态。通常情况下任务启动标识符设置为未启动(例如标记为0);当串行子系统310准备完毕可以开启处理任务,则由串行子系统310将任务启动标识符设置为已经启动(例如标记为1);并行子系统320通过读取任务状态寄存器352可以获悉该处理任务是否已经开启并开始后续操作;当并行子系统320完成该处理任务计算后可以将任务启动标识符设置为未启动(例如标记为0)也就是说并行子系统320具有对任务状态寄存器352中的任务启动标识符的清零权限。并且,串行子系统310无法对已经启动的任务再进行操作,也就是说串行子系统310也会读取任务状态寄存器352并确定该处理任务是否已经开启,如果已经开启则不会再次操作该处理任务。计算引擎工作状态标识符用于指示在该任务编号下的该处理任务相对应的计算引擎的工作状态。上面提到,以图1所示的并行子系统120的并行计算引擎130为例,并行计算引擎130包括多个子计算引擎,多个子计算引擎中的一个或者多个可以用于同一处理任务。这里,任务状态寄存器352的记录中的计算引擎工作状态标识符用于指示的是用于该处理任务的一个或者多个子计算引擎的整体工作状态。考虑到实际应用中,基于任务并行度和数据并行度的差异,并行子系统320分配给不同处理任务的计算资源可能不同,为此通过计算引擎工作状态标识符来指示分配给在该任务编号下的该处理任务的计算资源的状态。在一种可能的实施方式中,计算引擎工作状态标识符可以指示多种状态并给每种状态分配特定状态值,包括:处于空闲状态(状态值0),解析任务配置信息中(状态值1),读取任务源数据中(状态值2),实时计算中(状态值3),写入结果数据到内存中(状态值4)以及完成处理任务(状态值5)。其中,计算引擎工作状态标识符标记为处于空闲状态意味着相关计算资源没有被分配任何任务;计算引擎工作状态标识符标记为解析任务配置信息中意味着在解析该处理任务的配置信息(例如上述表1中所包括的多个字段);计算引擎工作状态标识符标记为读取任务源数据中意味着在读取该处理任务的任务源数据(例如上述表3中所示的任务编号1任务源数据起始地址所指代的任务源数据);计算引擎工作状态标识符标记为实时计算中意味着在进行计算;计算引擎工作状态标识符标记为写入结果数据到内存中意味着将结果数据写入到中间结果区域或者最终结果区域;计算引擎工作状态标识符标记为完成处理任务意味着完成该处理任务的所有结算且结果数据已经准备好。应当理解的是,计算引擎工作状态标识符的各种状态的状态值可以根据实际需要调整,在此不做具体限定。任务处理错误标识符用于指示在该任务编号下的该处理任务是否发生错误以及错误类型。具体地,任务处理错误标识符可以指示多种错误类型并给每种错误类型分配状态值,包括任务没有错误(状态值0),串行子系统配置信息出错(状态值1),串行子系统下发数据出错(状态值2),并行子系统解析配置信息出错(状态值3),并行子系统数据读写出错(状态值4)以及并行子系统计算出错(状态值5)。其中,任务处理错误标识符标记为任务没有错误意味着没有检测到错误;任务处理错误标识符标记为串行子系统配置信息出错意味着串行子系统所提供的该处理任务的配置信息存在错误;任务处理错误标识符标记为串行子系统下发数据出错意味着串行子系统所提供的该处理任务的下发数据存在错误;任务处理错误标识符标记为并行子系统解析配置信息出错意味着并行子系统在解析该处理任务的配置信息时发生错误,这可能是由于并行子系统自身的问题造成的;任务处理错误标识符标记为并行子系统数据读写出错意味着并行子系统在进行数据读写操作时发生错误,这可能是由于并行子系统自身的问题造成的;任务处理错误标识符标记为并行子系统计算出错意味着并行子系统在进行该处理任务的计算时发生错误。应当理解的是,任务处理错误标识符的各种错误类型的状态值可以根据实际需要调整,在此不做具体限定。在一种可能的实施方式中,任务状态寄存器352的每条记录占据的物理内存空间大小是32比特,其中8比特用于存放任务编号,8比特用于存放任务处理错误标识符,8比特用于存放任务启动标识符,8比特用于存放计算引擎工作状态标识符。如此,通过查询任务状态寄存器352可以获得各个处理任务的状态、用于各个处理任务的计算引擎各自的工作状态以及各个处理任务各自的任务处理错误,这些状态可以用于简化控制及提高整体计算性能。例如,并行子系统320通过查询任务启动标识符可以确定是否启动特定处理任务而不需要额外占用串行子系统的操作。再例如,串行子系统310通过查询计算引擎工作状态标识符可以获悉用于特定处理任务的计算资源的状态而不需要在查询时还动用并行子系统320的资源,串行子系统310通过查询任务处理错误标识符可以获悉特定处理任务是否发生错误以及错误类型而不需要在查询时还动用并行子系统320的资源。这样,在串行子系统310和并行子系统320的数据交互中,包括从串行子系统310下发处理任务到并行子系统320以及从并行子系统320上传结果数据到串行子系统310,可以通过查询任务状态寄存器352来获得必要的信息以做出相应的应对和操作,有利于改进串行子系统310和并行子系统320之间的数据交互、简化控制和提高整体计算性能。
上面提到通过任务地址配置寄存器350来获得处理任务的数据起始地址以及通过任务状态寄存器352来获得处理任务的状态、计算引擎工作状态以及任务处理错误,异构处理系统300所提供的任务结果寄存器354可以用来获得任务处理结果。具体地,任务结果寄存器354包括多个记录,每个记录至少包括任务编号和任务处理结果标识符。其中,任务编号用于标识任务处理结果归属于哪个任务,与上述下发任务时所用的任务编号一致(例如表1中的编号为1的字段)。参考上述关于任务地址配置寄存器350的说明,不同的任务编号也意味着不同的数据起始地址。任务处理结果标识符用于指示该任务编号下的处理任务是否已经完成所有的计算。只有当所有的计算都完成,该任务处理结果标识符才会标识完成,例如用1来表示计算完成;而当所有的计算没有完成,该任务处理结果标识符会标识未完成,例如用0来表示计算未完成。应当理解的是,任务处理结果标识符一旦标识完成,例如设为1后,并行子系统320不会主动将任务处理结果标识符设为未完成,也就是不会主动将任务处理结果标识符从1复位归零,而是必须由串行子系统310来将任务处理结果标识符设为未完成也就是说串行子系统310具有对任务结果寄存器354中的任务处理结果标识符的清零权限。这样做使得任务结果寄存器354的记录中的任务处理结果标识符可用于通知串行子系统310该任务编号下的处理任务是否完成所有的计算,并且相应的结果数据也准备好上传给串行子系统310。串行子系统310在读取相应的结果数据后可以将任务处理结果标识符设为未完成,并且由此反馈给并行子系统320可以开始新的处理任务的计算。在一种可能的实施方式中,任务结果寄存器354的每条记录占据的物理内存空间大小是32比特,其中8比特用于存放任务编号,8比特用于存放任务处理结果标识符,剩下16比特用于用户自定义或者参与方约定的内容。如此,通过要求任务结果寄存器354中与特定处理任务对应的任务处理结果标识符一旦由并行子系统320设为完成后仅能由串行子系统310设为未完成,以及通过要求并行子系统320只有当该特定处理任务的计算全部完成且结果数据已经做好上传准备后才能将任务处理结果标识符设为完成,从而使得串行子系统310可以通过查询任务结果寄存器354就获得已经下发的处理任务的任务处理结果(例如通过轮询或者任意合适的查询机制)而不需要在查询时还动用并行子系统320的资源,有利于改进串行子系统310和并行子系统320之间的数据交互、简化控制和提高整体计算性能。
应当理解的是,任务地址配置寄存器350、任务状态寄存器352和任务结果寄存器354均通过任务编号来区别不同的任务。其中,任务地址配置寄存器350可能有多个记录对应同一个任务编号也即同一个任务,这是因为该任务的数据起始地址可能分成多个部分分别保存在多个记录中,例如表3中将数据起始地址分成低4字节和高4字节两部分分别保存在两条记录中。而任务状态寄存器352和任务结果寄存器354各自有多个记录,其中每个记录对应一个任务编号,也就是说每个处理任务对应任务状态寄存器352中的一条记录也对应任务结果寄存器354中的一条记录。这意味着,对于每个处理任务而言,用于该处理任务的状态控制的任务状态寄存器352的记录和用于该处理任务的数据交互(结果数据的上传)的任务结果寄存器354的记录是彼此独立的,这样有利于使得该处理任务的状态控制和数据交互也是彼此独立。另外,在任务状态寄存器352和任务结果寄存器354中,不同的记录对应不同的处理任务,而不同的处理任务也分配不同的寄存器地址,从而避免不同处理任务之间发生冲突。
如上所述,通过任务地址配置寄存器350来获得处理任务的数据起始地址,通过任务状态寄存器352来获得处理任务的状态、计算引擎工作状态以及任务处理错误,通过任务结果寄存器354来获得任务处理结果。这样,在串行子系统310和并行子系统320的数据交互的过程中,例如从串行子系统310下发处理任务到并行子系统320以及从并行子系统320上传结果数据到串行子系统310,串行子系统310和并行子系统320中的一方在进行操作之前、进行操作同时或者进行操作之后,可以通过查询任务地址配置寄存器350、任务状态寄存器352和任务结果寄存器354来获得必要的数据和信息,从而可以做出相应操作,而查询这些寄存器的操作是不需要额外占用串行子系统310和并行子系统320中的另一方的资源。例如,串行子系统310可以通过查询任务结果寄存器354就获得已经下发的处理任务的任务处理结果而不需要在查询时还动用并行子系统320的资源。再例如,串行子系统310通过查询任务处理错误标识符可以获悉特定处理任务是否发生错误以及错误类型而不需要在查询时还动用并行子系统320的资源。上面提到,联邦学习、隐私计算、分布式人工智能等应用场景中各种复杂计算特别是大数据量循环计算、递归计算、依赖计算等所涉及的数据交互方面的控制问题,被转化为基于控制字段的数据流驱动的问题,从而可以通过控制字段特别是配置信息的灵活设计来实现原本复杂的控制流程,还能通过用户自定义或者参与方约定的控制字段来满足复杂多变的需求。因此,结合控制字段设计方面的改进,以及允许一方通过多种寄存器来查询必要的数据和信息而不占用另一方额外的操作,从而进一步改进包括了串行子系统和并行子系统的异构处理系统内部的数据交互,特别是改进了将联邦学习和隐私计算的算法展开后得到的多个处理任务彼此之间的数据传输问题,从而避免内存资源的浪费、处理能力的浪费以及输入输出能力的浪费,具有高效计算、低处理延迟和高内存利用率的优点。
请参阅图4,图4示出了本申请实施例提供的基于图3所示的异构处理系统进行处理任务的流程示意图。如图4所示,异构处理系统包括串行子系统410,并行子系统420以及交互寄存器430。其中,串行子系统410的结构和功能与图1所示的异构处理系统100的串行子系统110相似,并行子系统420的结构和功能与图1所示的异构处理系统100的并行子系统120相似。交互寄存器430包括任务地址配置寄存器、任务状态寄存器和任务结果寄存器,分别与图3所示的任务地址配置寄存器350、任务状态寄存器352和任务结果寄存器354相似,在此不再赘述。下面结合图4说明以下步骤。
S442:配置交互寄存器,包括配置任务地址配置寄存器。
其中,配置交互寄存器430包括配置任务地址配置寄存器,也就是对寄存器进行写入操作,将分别对应任务下发区域、中间结果区域和最终结果区域的任务源数据起始地址、任务中间结果数据起始地址以及任务最终结果数据起始地址写入相应的配置寄存器定义中或者说相应记录中,例如将任务编号为1的处理任务的各个数据起始地址写入表1所示的各个寄存器地址中,从而有利于后续数据交互以及使得后续才能按照事先约定的配置方式来从任务地址配置寄存器获得每个处理任务的数据起始地址并用于读写操作。
S444:根据任务状态寄存器的任务启动标识符判断任务是否开启。
其中,任务状态寄存器包括多个记录,其中与本处理任务对应的记录中包括任务启动标识符用于指示任务是否启动。如上所述,串行子系统无法对已经启动的任务再进行操作,也就是说串行子系统会根据任务状态寄存器的任务启动标识符来确定该处理任务是否已经开启,如果已经开启则不会再次操作该处理任务。
S446:如果任务启动标识符标记为未启动,下发任务数据及有关信息到任务下发区域的相应任务区间以及将任务启动标识符设置为已启动。
其中,如果任务启动标识符标记为未启动,则串行子系统下发任务数据及有关信息到任务下发区域的相应任务区间以及将任务启动标识符设置为已启动。串行子系统可以将任务启动的指令发送到并行子系统从而并行子系统开始后续操作,或者,并行子系统可以通过查询任务状态寄存器的任务启动标识符来获悉任务是否已经启动并开始后续操作。
S448:解析任务配置信息。
其中,并行子系统获悉任务已经启动并开始后续操作,首先解析本处理任务的配置信息也就是控制字段。如上所述,配置信息至少包括与本处理任务对应的计算模式的操作数个数以及各个操作数各自的来源标识符和数据地址信息。并行子系统可以根据配置信息来判断所需的操作数是来自于下发数据或者来自于中间结果区域,也可以根据配置信息来判断本处理任务的结果是存放于中间结果区域或者存放于最终结果区域。当某个操作数的来源标识符标识该操作数来自于串行子系统下发的数据,则可以通过该操作数的数据地址信息从任务下发区域的对应任务区间的数据子区间中获得该操作数;而某个操作数的来源标识符标识该操作数来自于并行子系统内存的中间结果区域,则可以通过该操作数的数据地址信息从中间结果区域的对应任务区间的结果数据子区间获得该操作数。特别地,通过提供配置信息包括必要的控制字段来实现不同处理任务之间的数据传输,包括将某个处理任务的结果写入中间结果区域以及从中间结果区域读取用于某个处理任务的输入数据,从而避免数据上传和下发的操作,并且通过能灵活配置且自定义的配置信息可以将用户需求等各种需求整合到数据流驱动方式中,并且通过上述的数据宽度、数据长度以及物理内存空间的大小规划等实现了不同区域之间的匹配从而有利于提高整体计算性能。
S450:获取待计算数据和参数并进行计算。
其中,在解析完毕本处理任务的配置信息后,就可以根据配置信息获得待计算数据也就是操作数和参数,并进行计算。上面提到了,并行子系统可以根据配置信息来判断所需的操作数是来自于下发数据或者来自于中间结果区域。并且,根据本处理任务的需求,并行子系统可以通过例如任务管理模块将待计算数据和参数发送给并行计算引擎进行计算,可以由并行计算引擎中的一个或者多个子计算引擎进行并行化处理。
S452:根据配置信息中的计算结果存放标识符将结果数据写入中间结果区域或者最终结果区域。
其中,并行子系统可以根据配置信息来判断本处理任务的结果是存放于中间结果区域或者存放于最终结果区域。具体地,配置信息还可以包括计算结果存放标识符用于标识本处理任务的结果存放于中间结果区域或者最终结果区域。例如与公式(6)对应的计算模式及相应处理任务的输入数据来自于与公式(5)对应的计算模式及相应处理任务的结果。可以在公式(5)的处理任务相对应的任务区间的配置信息中设定计算结果存放标识符标识该处理任务的结果存放于中间结果区域,这样并行子系统会通过该计算结果存放标识符来将该处理任务的结果存放于中间结果区域,从而有利于后续处理。当计算结果存放标识符标识本处理任务的结果存放于最终结果区域,则意味着该处理任务的结果不会用于后续的处理任务。
S454:完成计算,将结果数据写入最终结果区域并将任务启动标识符设置为未启动以及将任务结果寄存器的任务处理结果标识符设置为计算完成。
其中,上述步骤S450和步骤S452完成了一次计算。同一批次的多个输入数据归属于同一个处理任务和相应的计算模式,也适用相同的参数,只需要每次采用新的输入数据时改变操作数也就是读取新的待计算数据。因此,步骤S450和步骤S452可以进行多次,直到同一批次的多个输入数据都计算完成,这样才能完成该处理任务的计算。如上所述,可以采用任意合适的地址分布方式来安排不同输入数据的操作数的数据地址信息,例如在第一个输入数据所对应的各个操作数的读取操作基础上进行简单的推算,从而完成第二个输入数据所对应的各个操作数的读取操作。当同一批次的多个输入数据都计算完成,则并行子系统完成计算,这意味着本处理任务结束。当并行子系统完成本处理任务计算后可以将任务启动标识符设置为未启动,而且并行子系统将结果数据写入最终结果区域以及将任务结果寄存器的任务处理结果标识符设置为计算完成。任务结果寄存器的任务处理结果标识符用于指示本处理任务是否已经完成所有的计算。只有当所有的计算都完成,该任务处理结果标识符才会标识完成。任务处理结果标识符一旦标识完成,并行子系统不会主动将任务处理结果标识符设为未完成,而是必须由串行子系统来将任务处理结果标识符设为未完成。这样做使得任务结果寄存器的记录中的任务处理结果标识符可用于通知串行子系统本处理任务是否完成所有的计算,并且相应的结果数据也准备好上传给串行子系统。因此,完成计算后,并行子系统将任务启动标识符设置为未启动也将任务结果寄存器的任务处理结果标识符设置为计算完成。
S456:根据任务处理结果标识符设置判断任务是否完成,如完成则将任务处理结果标识符设置为计算未完成,并且根据计算结果存放标识符来选择性地读取结果数据。
其中,在一种可能的实施方式中,当串行子系统在步骤S446下发任务数据及有关信息到任务下发区域的相应任务区间以及将任务启动标识符设置为已启动之后,串行子系统可以通过轮询或者其它合适查询方式来查询任务启动标识符是否发生变化,也就是任务启动标识符是否为未启动。一旦检测到任务启动标识符为未启动,则串行子系统可以接着查询任务处理结果标识符是否为计算完成,如果任务处理结果标识符为计算完成则判断任务完成,串行子系统接着将任务处理结果标识符设置为计算未完成并且根据计算结果存放标识符来选择性地读取结果数据。在另一种可能的实施方式中,串行子系统在步骤S446下发任务数据及有关信息到任务下发区域的相应任务区间以及将任务启动标识符设置为已启动,串行子系统在步骤S446还可以将任务处理结果标识符设置为计算未完成,这样串行子系统可以通过轮询或者其它合适查询方式来查询任务处理结果标识符是否发生变化,也就是任务处理结果标识符是否为计算完成。总之,串行子系统在步骤S446发起整个处理任务的流程(在此之前需要完成步骤S442的必要的配置交互寄存器特别是任务地址配置寄存器的操作),并且在发起时可以将任务启动标识符设置为已启动也将任务结果寄存器的任务处理结果标识符设置为计算未完成,这样,后续只有当计算完成后才能由并行子系统在步骤S454将任务启动标识符设置为未启动也将任务结果寄存器的任务处理结果标识符设置为计算完成。如此,串行子系统可以通过监控任务启动标识符以及任务处理结果标识符来获悉任务是否完成,或者,串行子系统可以通过仅监控任务处理结果标识符来获悉任务是否完成。
继续参阅步骤S456,将任务处理结果标识符设置为计算未完成可以发生在读取结果数据之前或者之后或者同时。另外,根据计算结果存放标识符来选择性地读取结果数据,意味着串行子系统可以根据计算结果存放标识符来获悉本处理任务的结果存放于中间结果区域,而这也就意味着该处理任务的结果可用于其它处理任务,因此也不需要由串行子系统进行数据读取操作,从而降低延迟和节省资源。因此,并非每次任务完成后都需要串行子系统进行数据读取操作,而是根据计算结果存放标识符来选择性地读取结果数据。即使计算结果存放标识符表明本处理任务的结果存放于中间结果区域,因此不需要由串行子系统进行数据读取操作,串行子系统仍将任务处理结果标识符设置为计算未完成,这样意味着可以重新使用相关任务区间用于新的任务下发和处理。计算结果存放标识符代表了从整体上考虑而施加在特定处理任务的结果上的控制操作。通过配置信息中所包括的计算结果存放标识符可以选择性地将个别处理任务的结果写入中间结果区域从而有利于后续处理任务从中间结果区域读取也有利于节省串行子系统的数据读取操作。
上述表2说明了如何应对不同处理任务之间的数据传输问题,其中示例性地提供了处理任务1和处理任务2。其中,处理任务1涉及两个操作数均来自于下发数据,并且处理任务1的结果存放于中间结果区域;处理任务2涉及三个操作数,并且第1个操作数和第2个操作数来自于下发数据而第3个操作数来自于中间结果区域并且是处理任务1的结果。下面结合表2和图4所示的各个步骤来说明异构处理系统进行表2中的处理任务1和处理任务2的流程。仅处于说明性目的,可以设处理任务1是以第1个操作数为幂底数和第2个操作数为幂指数做模幂运算,例如进行加密得到密文,其中模数是参数;处理任务2则是以第1个操作数和第2个操作数相乘之后再与第3个操作数相加,例如进行密态运算,其中第3个操作数是处理任务1的加密运算得到的密文。应当理解的是,不同处理任务之间的数据传输问题涉及的是待计算数据或者说操作数的传输问题,因此根据实际需求和应用场景,可以适用于不同的计算模式。首先进行处理任务1的流程,具体包括:串行子系统410下发处理任务1的数据及有关信息到并行子系统420的下发任务区域的与处理任务1相对应的任务区间(参见步骤S446);并行子系统420解析处理任务1的配置信息(参见步骤S448);并行子系统420根据处理任务1的配置信息判断处理任务1的操作数1和操作数2均来自于下发数据,因此从下发任务区域获取处理任务1的操作数1和操作数2(参见步骤S450);并行子系统420根据处理任务1的配置信息将结果数据写入中间结果区域(参见步骤S452)。然后进行处理任务2的流程,具体包括:串行子系统410下发处理任务2的数据及有关信息到并行子系统420的下发任务区域的与处理任务2相对应的任务区间(参见步骤S446);并行子系统420解析处理任务2的配置信息(参见步骤S448);并行子系统420根据处理任务2的配置信息判断处理任务2的操作数1和操作数2均来自于下发数据,因此从下发任务区域获取处理任务2的操作数1和操作数2,以及判断处理任务2的操作数3来自于中间结果区域因此从中间结果区域获取处理任务2的操作数3,也就是说,处理任务2的数据流向既需要从任务下发区域读取任务源数据也需要从中间结果区域读取任务中间结果数据(参见步骤S450);并行子系统420根据处理任务2的配置信息将结果数据写入最终结果区域(参见步骤S452)。如此,通过添加控制字段到数据流中的方式,也就是仅依靠处理任务1和处理任务2各自的配置信息就实现了处理任务1与处理任务2之间的数据传输,从而改进包括了串行子系统和并行子系统的异构处理系统内部的数据交互,具有高效计算、低处理延迟和高内存利用率的优点。
请参阅图1至图4,特别结合图4所示的各个步骤,应当理解的是,交互寄存器或者说任务地址配置寄存器、任务状态寄存器和任务结果寄存器,均配置为可通过直接存储器访问(Direct Memory Access,DMA)的方式进行访问,而DMA的方式不需要传统的处理器操作例如CPU内核的参与。本申请实施例所提及的在并行子系统内存方面的改进以及配置信息也即控制字段的设计使得可以通过数据流驱动的方式来实现原本复杂的控制流程,而且可以通过DMA方式直接访问各寄存器来获得控制字段和其它信息,从而提供了一种非常高效的异构处理系统的任务处理机制。并且,在大数据量循环计算、递归计算、依赖计算等类似的应用场景,需要对几个步骤所组成的迭代计算部分进行多次迭代计算,这些迭代计算部分也可以展开为若干个计算模式所组成的带有特定迭代终止条件的循环运算。上面提到,可以通过控制字段特别是配置信息的灵活设计来实现原本复杂的控制流程,其中包括不同处理任务之间的数据传输问题,因此对于迭代计算部分展开而成的循环计算,只需要设计相应的控制字段从而使得需要循环使用的数据在上一轮循环结束后作为中间结果数据又被作为输入数据用于下一轮循环,或者可以根据实际需要通过配置信息也即控制字段实现更复杂的循环过程的控制。
请参阅图1至图4,以及结合表1至表3,本申请实施例提供的异构处理系统和各种机制,至少从三个方面改进了整体计算性能和多任务处理效率,包括:第一方面是改进了串行子系统如CPU和并行子系统如FPGA之间的数据交互,特别是大幅节省了将业务数据上传到串行子系统再下发到并行子系统的操作,从而提高了数据上传下发的速度和效率;第二方面是改进了不同处理任务之间的数据传输效率,包括任务请求、应答及相互响应的机制,例如通过可灵活设计的配置信息也即控制字段实现了一个处理任务的结果作为另一个处理任务的输入数据,再例如通过对任务区域的划分、寄存器的定义以及处理任务之间数据传输机制来提高任务处理效率;第三方面是改进了并行子系统进行多任务计算的效率,例如通过对并行子系统内存按照特定方式进行区域划分从而有利于多个处理任务的并行处理,而且通过内部高度并行化的并行计算引擎结合任务解析处理流程的改进实现了高效处理多任务。并且,本申请实施例提供的异构处理系统和内在机制,还通过高速通讯接口,例如采用16个通道的PCIE接口,以及在数据上传下发上采用DMA方式,从而进一步提高数据传输效率。并且,本申请实施例提供的异构处理系统和内在机制,在一种可能的实施方式中,还利用任务地址配置寄存器来获得处理任务的数据起始地址从而使得可以通过调整任务地址配置寄存器的记录来灵活应对各种复杂环境;而且还通过用于状态控制的任务状态寄存器和用于数据交互的任务结果寄存器进一步改进串行子系统和并行子系统之间的数据交互,有利于实现跨平台或者跨系统的任务处理。
应当理解的是,本申请提供的具体实施例可以包括计算机可读存储介质或与计算机可读存储介质相结合,例如能够提供非暂时性数据存储的一个或多个存储设备。计算机可读存储介质/存储设备可以被配置为保存数据,程序器和/或指令,这些数据,程序器和/或指令在由本申请具体实施例提供的设备或装置的处理器执行时使这些设备或装置实现有关操作。计算机可读存储介质/存储设备可以包括以下一个或多个特征:易失性,非易失性,动态,静态,可读/写,只读,随机访问,顺序访问,位置可寻址性,文件可寻址性和内容可寻址性。在一个或多个示例性实施例中,计算机可读存储介质/存储设备可以被集成到本申请具体实施例提供的设备或装置中或属于公共系统。计算机可读存储介质/存储设备可以包括光存储设备,半导体存储设备和/或磁存储设备等等,也可以包括随机存取存储器(RAM),闪存,只读存储器(ROM),可擦可编程只读存储器(EPROM),电可擦可编程只读存储器(EEPROM),寄存器,硬盘,可移动磁盘,可记录和/或可重写光盘(CD),数字多功能光盘(DVD),大容量存储介质设备或任何其他形式的合适存储介质。
应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。本申请实施例以及附图所示的结构并不构成对有关装置或系统的具体限定。在本申请另一些实施例中,有关装置或系统可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
Claims (31)
1.一种异构处理系统,应用于联邦学习和隐私计算,其特征在于,所述异构处理系统包括:
串行子系统,其中,所述串行子系统配置为下发处理任务和所述处理任务的配置信息,所述处理任务指示对一个或者多个操作数进行与计算模式对应的运算;和
并行子系统,其中,所述并行子系统配置为对所述一个或者多个操作数进行与所述计算模式对应的运算得到所述处理任务的结果数据,
其中,所述并行子系统还配置为,根据所述配置信息,选择性地从位于所述并行子系统侧的中间结果区域获得所述一个或者多个操作数中的至少一个操作数并且从所述串行子系统获得所述一个或者多个操作数中的相对于所述至少一个操作数的剩余操作数,以及对根据所述配置信息而获得的操作数进行与所述计算模式对应的运算。
2.根据权利要求1所述的异构处理系统,其特征在于,所述并行子系统还配置为,根据所述配置信息,选择性地将所述结果数据写入所述中间结果区域以作为相对于所述处理任务的另一处理任务的操作数。
3.根据权利要求2所述的异构处理系统,其特征在于,所述并行子系统还配置为,根据所述配置信息,选择性地将所述结果数据写入位于所述并行子系统侧的最终结果区域从而使得所述结果数据可被上传到所述串行子系统。
4.根据权利要求3所述的异构处理系统,其特征在于,所述并行子系统的内存包括任务下发区域,所述中间结果区域和最终结果区域,所述串行子系统配置为下发所述处理任务和所述配置信息到所述任务下发区域。
5.根据权利要求4所述的异构处理系统,其特征在于,所述任务下发区域,所述中间结果区域和所述最终结果区域各自包括多个任务区间,多个处理任务与所述任务下发区域的多个任务区间一一对应,所述多个处理任务与所述中间结果区域的多个任务区间一一对应,所述多个处理任务与所述最终结果区域的多个任务区间一一对应,其中,针对所述多个处理任务中的每一个处理任务,所述串行子系统配置为下发该处理任务和该处理任务的配置信息到所述任务下发区域的与该处理任务对应的任务区间。
6.根据权利要求5所述的异构处理系统,其特征在于,针对所述多个处理任务中的每一个处理任务,所述并行子系统还配置为,根据该处理任务的配置信息,选择性地从所述中间结果区域的与该处理任务对应的任务区间获得该处理任务所指示的操作数中的至少一个操作数并且从所述任务下发区域的与该处理任务对应的任务区间获得该处理任务所指示的操作数中的剩余操作数,以及对根据该处理任务的配置信息而获得的操作数进行与该处理任务所指示的计算模式对应的运算。
7.根据权利要求6所述的异构处理系统,其特征在于,针对所述多个处理任务中的每一个处理任务,所述并行子系统还配置为,根据该处理任务的配置信息,选择性地将该处理任务的结果数据写入所述中间结果区域的不同于与该处理任务对应的任务区间的另一任务区间以作为相对于该处理任务的另一处理任务的操作数。
8.根据权利要求7所述的异构处理系统,其特征在于,针对所述多个处理任务中的每一个处理任务,所述并行子系统还配置为,根据该处理任务的配置信息,选择性地将该处理任务的结果数据写入最终结果区域的与该处理任务对应的任务区间从而使得该处理任务的结果数据可被上传到所述串行子系统。
9.根据权利要求5至8中任一项所述的异构处理系统,其特征在于,所述任务下发区域,所述中间结果区域和所述最终结果区域各自的第一配置参数和第二配置参数相同,其中,所述第一配置参数是单个任务区间所占据的最大物理内存空间,所述第二配置参数是任务区间最大数量。
10.根据权利要求1至8中任一项所述的异构处理系统,其特征在于,所述计算模式是多个预设计算模式中的一个预设计算模式,所述多个预设模式包括模幂计算、模乘计算、RSA交集计算、同态加密、同态解密、DH秘钥交换、密态加法、密态乘法、密态乘加、矩阵乘法、密文求和。
11.根据权利要求1至8中任一项所述的异构处理系统,其特征在于,所述配置信息包括多个控制字段,所述多个控制字段至少包括操作数个数字段、操作数来源标识符字段和操作数数据地址信息字段,
其中,所述并行子系统还配置为:
根据所述操作数个数字段确定所述一个或者多个操作数的个数;和
根据所述操作数来源标识符字段确定所述一个或者多个操作数中的每一个操作数是否来自于所述中间结果区域,如果是,则根据所述操作数数据地址信息字段从所述中间结果区域获得该操作数。
12.根据权利要求11所述的异构处理系统,其特征在于,所述多个控制字段还包括计算结果存放标识符字段,其中,所述并行子系统根据所述计算结果存放标识符字段确定所述结果数据适合上传到所述串行子系统,所述多个控制字段还包括以下至少之一:任务编号字段、计算模式字段、任务批次号字段、任务批次总数字段、参数个数字段、参数宽度字段、操作数宽度字段、操作数数据总长度字段。
13.根据权利要求11所述的异构处理系统,其特征在于,所述多个控制字段还包括用户自定义字段,所述用户自定义字段用于调整所述串行子系统和所述并行子系统之间的数据交互。
14.根据权利要求4至8中任一项所述的异构处理系统,其特征在于,所述中间结果区域和所述最终结果区域各自包括检验信息用于校验下发到所述任务下发区域的所述配置信息。
15.根据权利要求5所述的异构处理系统,其特征在于,所述异构处理系统还包括:
任务地址配置寄存器,其中,所述任务地址配置寄存器包括:
任务源数据起始地址配置寄存器定义,用于识别所述任务下发区域的与所述多个处理任务各自对应的任务区间;
任务中间结果数据起始地址配置寄存器定义,用于识别所述中间结果区域的与所述多个处理任务各自对应的任务区间;和
任务最终结果数据起始地址配置寄存器定义,用于识别所述最终结果区域的与所述多个处理任务各自对应的任务区间。
16.根据权利要求15所述的异构处理系统,其特征在于,所述串行子系统和所述并行子系统之间的数据交互基于所述任务地址配置寄存器,所述串行子系统根据所述并行子系统的可用资源或者所述并行子系统的处理能力来调整所述任务地址配置寄存器。
17.根据权利要求5所述的异构处理系统,其特征在于,所述异构处理系统还包括:
任务状态寄存器,其中,所述任务状态寄存器包括多个记录,所述任务状态寄存器的多个记录与所述多个处理任务一一对应,所述串行子系统和所述并行子系统基于所述任务状态寄存器的多个记录对所述多个处理任务分别进行状态控制。
18.根据权利要求17所述的异构处理系统,其特征在于,针对所述多个处理任务中的每一个处理任务,所述任务状态寄存器的多个记录中与该处理任务对应的记录包括:
任务启动标识符,用于指示该处理任务是否已经启动;
计算引擎工作状态标识符,用于指示所述并行子系统中用于该处理任务的计算引擎的工作状态;和
任务处理错误标识符,用于指示该处理任务的错误类型。
19.根据权利要求18所述的异构处理系统,其特征在于,所述串行子系统和所述并行子系统基于所述任务状态寄存器的多个记录对所述多个处理任务分别进行状态控制,包括:
针对所述多个处理任务中的每一个处理任务,所述串行子系统通过查询所述任务状态寄存器来判断所述任务状态寄存器多个记录中与该处理任务对应的记录的任务启动标识符是否指示该处理任务已经启动,如果是则所述串行子系统被禁止进行与该处理任务相关的操作;
针对所述多个处理任务中的每一个处理任务,所述并行子系统通过查询所述任务状态寄存器来判断所述任务状态寄存器多个记录中与该处理任务对应的记录的任务启动标识符是否指示该处理任务已经启动,如果是则所述并行子系统被允许进行与所述处理任务相关的操作。
20.根据权利要求5所述的异构处理系统,其特征在于,所述异构处理系统还包括:
任务结果寄存器,其中,所述任务结果寄存器包括多个记录,所述任务结果寄存器的多个记录与所述多个处理任务一一对应,
其中,针对所述多个处理任务中的每一个处理任务,所述任务结果寄存器的多个记录中与该处理任务对应的记录包括任务处理结果标识符,该任务处理结果标识符用于指示该处理任务是否完成计算,该任务处理结果标识符仅能由所述并行子系统设定为完成计算,所述串行子系统通过查询所述任务状态寄存器来确定该处理任务的处理结果。
21.一种异构处理系统,其特征在于,所述异构处理系统包括:
CPU,其中,所述CPU配置为下发多个处理任务和所述多个处理任务各自的配置信息,所述多个处理任务各自指示对一个或者多个操作数进行运算;
FPGA,其中,所述FPGA包括并行计算引擎,所述并行计算引擎包括并行的多个子计算引擎,所述FPGA配置为通过所述并行计算引擎对所述多个处理任务进行并行化计算,
其中,所述FPGA的内存包括任务下发区域、中间结果区域和最终结果区域,所述任务下发区域、所述中间结果区域和所述最终结果区域各自包括多个任务区间并且分别与所述多个处理任务一一对应,
其中,针对所述多个处理任务中的每一个处理任务:
所述CPU配置为下发该处理任务和该处理任务的配置信息到所述任务下发区域的与该处理任务对应的任务区间,
所述FPGA配置为,根据该处理任务的配置信息,选择性地从所述中间结果区域的与该处理任务对应的任务区间获得该处理任务所指示的操作数中的至少一个操作数并且从所述任务下发区域的与该处理任务对应的任务区间获得该处理任务所指示的操作数中的剩余操作数,以及对根据该处理任务的配置信息而获得的操作数进行与该处理任务对应的运算。
22.根据权利要求21所述的异构处理系统,其特征在于,针对所述多个处理任务中的每一个处理任务,所述FPGA还配置为,根据该处理任务的配置信息,选择性地将该处理任务的结果数据写入所述中间结果区域的不同于与该处理任务对应的任务区间的另一任务区间以作为相对于该处理任务的另一处理任务的操作数。
23.根据权利要求22所述的异构处理系统,其特征在于,针对所述多个处理任务中的每一个处理任务,所述FPGA还配置为,根据该处理任务的配置信息,选择性地将该处理任务的结果数据写入最终结果区域的与该处理任务对应的任务区间从而使得该处理任务的结果数据可被上传到所述CPU。
24.根据权利要求21至23中任一项所述的异构处理系统,其特征在于,所述多个处理任务中的每一个处理任务的配置信息均包括多个控制字段,针对所述多个处理任务中的每一个处理任务,该处理任务的配置信息的多个控制字段至少包括操作数个数字段、操作数来源标识符字段和操作数数据地址信息字段,
其中,所述FPGA还配置为:
根据所述操作数个数字段确定该处理任务所指示的操作数的个数;和
根据所述操作数来源标识符字段确定该处理任务所指示的操作数中的每一个操作数是否来自于所述中间结果区域,如果是,则根据所述操作数数据地址信息字段从所述中间结果区域获得该操作数。
25.根据权利要求21至23中任一项所述的异构处理系统,其特征在于,所述中间结果区域和所述最终结果区域各自包括检验信息用于校验下发到所述任务下发区域的所述多个处理任务各自的配置信息。
26.根据权利要求21所述的异构处理系统,其特征在于,所述异构处理系统还包括:
任务地址配置寄存器,其中,所述任务地址配置寄存器包括:
任务源数据起始地址配置寄存器定义,用于识别所述任务下发区域的与所述多个处理任务各自对应的任务区间;
任务中间结果数据起始地址配置寄存器定义,用于识别所述中间结果区域的与所述多个处理任务各自对应的任务区间;和
任务最终结果数据起始地址配置寄存器定义,用于识别所述最终结果区域的与所述多个处理任务各自对应的任务区间。
27.根据权利要求26所述的异构处理系统,其特征在于,所述CPU和所述FPGA之间的数据交互基于所述任务地址配置寄存器,所述CPU根据所述FPGA的可用资源或者所述FPGA的处理能力来调整所述任务地址配置寄存器。
28.根据权利要求21所述的异构处理系统,其特征在于,所述异构处理系统还包括:
任务状态寄存器,其中,所述任务状态寄存器包括多个记录,所述任务状态寄存器的多个记录与所述多个处理任务一一对应,所述CPU和所述FPGA基于所述任务状态寄存器的多个记录对所述多个处理任务分别进行状态控制。
29.根据权利要求28所述的异构处理系统,其特征在于,针对所述多个处理任务中的每一个处理任务,所述任务状态寄存器的多个记录中与该处理任务对应的记录包括:
任务启动标识符,用于指示该处理任务是否已经启动;
计算引擎工作状态标识符,用于指示所述FPGA中用于该处理任务的子计算引擎的工作状态;和
任务处理错误标识符,用于指示该处理任务的错误类型。
30.根据权利要求29所述的异构处理系统,其特征在于,所述CPU和所述FPGA基于所述任务状态寄存器的多个记录对所述多个处理任务分别进行状态控制,包括:
针对所述多个处理任务中的每一个处理任务,所述CPU通过查询所述任务状态寄存器来判断所述任务状态寄存器多个记录中与该处理任务对应的记录的任务启动标识符是否指示该处理任务已经启动,如果是则所述CPU被禁止进行与该处理任务相关的操作;
针对所述多个处理任务中的每一个处理任务,所述FPGA通过查询所述任务状态寄存器来判断所述任务状态寄存器多个记录中与该处理任务对应的记录的任务启动标识符是否指示该处理任务已经启动,如果是则所述FPGA被允许进行与所述处理任务相关的操作。
31.根据权利要求21所述的异构处理系统,其特征在于,所述异构处理系统还包括:
任务结果寄存器,其中,所述任务结果寄存器包括多个记录,所述任务结果寄存器的多个记录与所述多个处理任务一一对应,
其中,针对所述多个处理任务中的每一个处理任务,所述任务结果寄存器的多个记录中与该处理任务对应的记录包括任务处理结果标识符,该任务处理结果标识符用于指示该处理任务是否完成计算,该任务处理结果标识符仅能由所述FPGA设定为完成计算,所述CPU通过查询所述任务状态寄存器来确定该处理任务的处理结果。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111094089.9A CN113553191B (zh) | 2021-09-17 | 2021-09-17 | 用于联邦学习和隐私计算的异构处理系统 |
US17/888,024 US11676074B2 (en) | 2021-09-17 | 2022-08-15 | Heterogeneous processing system for federated learning and privacy-preserving computation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111094089.9A CN113553191B (zh) | 2021-09-17 | 2021-09-17 | 用于联邦学习和隐私计算的异构处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113553191A true CN113553191A (zh) | 2021-10-26 |
CN113553191B CN113553191B (zh) | 2022-01-04 |
Family
ID=78134653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111094089.9A Active CN113553191B (zh) | 2021-09-17 | 2021-09-17 | 用于联邦学习和隐私计算的异构处理系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11676074B2 (zh) |
CN (1) | CN113553191B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237476A (zh) * | 2021-11-15 | 2022-03-25 | 深圳致星科技有限公司 | 基于任务盒的联邦学习任务发起方法、装置及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050203988A1 (en) * | 2003-06-02 | 2005-09-15 | Vincent Nollet | Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof |
CN106020425A (zh) * | 2016-05-27 | 2016-10-12 | 浪潮(北京)电子信息产业有限公司 | 一种fpga异构加速计算系统 |
CN106708777A (zh) * | 2017-01-23 | 2017-05-24 | 张军 | 一种多核异构cpu‑gpu‑fpga系统架构 |
CN106933579A (zh) * | 2017-03-01 | 2017-07-07 | 西安电子科技大学 | 基于cpu+fpga的图像快速去雾方法 |
CN111831330A (zh) * | 2020-07-10 | 2020-10-27 | 深圳致星科技有限公司 | 用于联邦学习的异构计算系统设备交互方案 |
CN112000598A (zh) * | 2020-07-10 | 2020-11-27 | 深圳致星科技有限公司 | 用于联邦学习的处理器、异构处理系统及隐私数据传输方法 |
CN112346833A (zh) * | 2020-09-30 | 2021-02-09 | 深圳致星科技有限公司 | 用于隐私计算的任务处理方法、处理器及异构处理系统 |
CN112685159A (zh) * | 2020-12-30 | 2021-04-20 | 深圳致星科技有限公司 | 基于fpga异构处理系统的联邦学习计算任务处理方案 |
CN113177211A (zh) * | 2021-04-20 | 2021-07-27 | 深圳致星科技有限公司 | 用于隐私计算的fpga芯片、异构处理系统及计算方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102520017B1 (ko) * | 2016-12-31 | 2023-04-11 | 인텔 코포레이션 | 이종 컴퓨팅을 위한 시스템들, 방법들, 및 장치들 |
US20200364088A1 (en) * | 2019-05-16 | 2020-11-19 | Nvidia Corporation | Resource sharing by two or more heterogeneous processing cores |
US11606416B2 (en) * | 2021-03-31 | 2023-03-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Network controlled machine learning in user equipment |
-
2021
- 2021-09-17 CN CN202111094089.9A patent/CN113553191B/zh active Active
-
2022
- 2022-08-15 US US17/888,024 patent/US11676074B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050203988A1 (en) * | 2003-06-02 | 2005-09-15 | Vincent Nollet | Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof |
CN106020425A (zh) * | 2016-05-27 | 2016-10-12 | 浪潮(北京)电子信息产业有限公司 | 一种fpga异构加速计算系统 |
CN106708777A (zh) * | 2017-01-23 | 2017-05-24 | 张军 | 一种多核异构cpu‑gpu‑fpga系统架构 |
CN106933579A (zh) * | 2017-03-01 | 2017-07-07 | 西安电子科技大学 | 基于cpu+fpga的图像快速去雾方法 |
CN111831330A (zh) * | 2020-07-10 | 2020-10-27 | 深圳致星科技有限公司 | 用于联邦学习的异构计算系统设备交互方案 |
CN112000598A (zh) * | 2020-07-10 | 2020-11-27 | 深圳致星科技有限公司 | 用于联邦学习的处理器、异构处理系统及隐私数据传输方法 |
CN112346833A (zh) * | 2020-09-30 | 2021-02-09 | 深圳致星科技有限公司 | 用于隐私计算的任务处理方法、处理器及异构处理系统 |
CN112685159A (zh) * | 2020-12-30 | 2021-04-20 | 深圳致星科技有限公司 | 基于fpga异构处理系统的联邦学习计算任务处理方案 |
CN113177211A (zh) * | 2021-04-20 | 2021-07-27 | 深圳致星科技有限公司 | 用于隐私计算的fpga芯片、异构处理系统及计算方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237476A (zh) * | 2021-11-15 | 2022-03-25 | 深圳致星科技有限公司 | 基于任务盒的联邦学习任务发起方法、装置及介质 |
CN114237476B (zh) * | 2021-11-15 | 2024-02-27 | 深圳致星科技有限公司 | 基于任务盒的联邦学习任务发起方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
US11676074B2 (en) | 2023-06-13 |
US20230088897A1 (en) | 2023-03-23 |
CN113553191B (zh) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112865954B (zh) | 用于Paillier解密的加速器、芯片及系统 | |
JP2014081922A (ja) | ライセンス調整のための方法、システム、プログラム、および記録媒体 | |
CN112883408B (zh) | 用于隐私计算的加解密系统和芯片 | |
CN103973431A (zh) | 一种基于OpenCL的AES并行化实现方法 | |
US20230274129A1 (en) | Method for execution of computational graph in neural network model and apparatus thereof | |
CN107273195A (zh) | 一种大数据的批处理方法、装置及计算机系统 | |
CN112070222A (zh) | 用于联邦学习的处理架构、加速器及方法 | |
CN113553191B (zh) | 用于联邦学习和隐私计算的异构处理系统 | |
CN111831330A (zh) | 用于联邦学习的异构计算系统设备交互方案 | |
CN114064278A (zh) | 用于联邦学习的异构加速引擎及方法 | |
CN113743955A (zh) | 基于智能合约的食材溯源数据安全访问控制方法 | |
CN107526620A (zh) | 一种用户态输入输出设备配置方法及装置 | |
US9804903B2 (en) | Data processing apparatus for pipeline execution acceleration and method thereof | |
CN100470571C (zh) | 一种用于密码学运算的微处理器内核装置 | |
CN115408107A (zh) | 一种虚拟机的热迁移方法、设备、系统及存储介质 | |
US20200177370A1 (en) | Batched execution of encryption operations | |
CN107577962B (zh) | 一种密码卡多算法并列执行的方法、系统及相关装置 | |
WO2023124677A1 (zh) | 数据处理的方法和计算平台 | |
CN116244062A (zh) | 一种数据处理方法、装置、电子设备和存储介质 | |
CN200941211Y (zh) | 用于密码学运算的微处理器内核 | |
CN103942035B (zh) | 处理指令的方法、编译器及指令处理器 | |
CN112187909B (zh) | 一种基于区块链融资信息生成系统及方法 | |
CN114996760A (zh) | 隐私计算、隐私数据及联邦学习的数据管理系统及方法 | |
CN113946846A (zh) | 用于联邦学习和隐私计算的密文计算装置及方法 | |
CN116166402B (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 |