CN111831330A - 用于联邦学习的异构计算系统设备交互方案 - Google Patents
用于联邦学习的异构计算系统设备交互方案 Download PDFInfo
- Publication number
- CN111831330A CN111831330A CN202010661426.7A CN202010661426A CN111831330A CN 111831330 A CN111831330 A CN 111831330A CN 202010661426 A CN202010661426 A CN 202010661426A CN 111831330 A CN111831330 A CN 111831330A
- Authority
- CN
- China
- Prior art keywords
- processing device
- slave
- task
- processing
- register
- 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
- 238000012545 processing Methods 0.000 claims abstract description 562
- 238000000034 method Methods 0.000 claims abstract description 70
- 230000003993 interaction Effects 0.000 claims abstract description 48
- 238000004364 calculation method Methods 0.000 claims description 83
- 230000015654 memory Effects 0.000 claims description 65
- 230000008569 process Effects 0.000 claims description 25
- 230000002452 interceptive effect Effects 0.000 claims description 11
- 238000011010 flushing procedure Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000007596 consolidation process Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 6
- 230000006854 communication Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000005111 flow chemistry technique Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Abstract
本说明书的实施例提供用于控制异构计算系统的设备交互的方法。异构计算系统包括主处理设备和从处理设备,从处理设备用于执行主处理设备所调度任务的任务计算处理。从处理设备包括状态寄存器和配置寄存器。在执行设备间交互时,设备交互控制装置读取从处理设备处的状态寄存器的寄存器值。在所读取的寄存器值指示从处理设备处于处理准备就绪状态时,设备交互控制装置控制主处理设备与从处理设备执行所述处理所需的交互处理。利用该交互方法,可以在主处理设备和从处理设置之间实现可靠交互。
Description
技术领域
本说明书实施例通常涉及异构计算领域,尤其涉及异构计算系统的设备交互控制方法、设备交互控制装置及异构计算系统。
背景技术
在联邦学习应用中,为了保护用户隐私数据,需要对用户隐私数据进行加密处理。通常采用的加密方法可以包括同态加密算法等。同态加密算法所涉及的计算比较复杂,并且中间计算结果数据量庞大。此外,同态加密算法还涉及对计算的实时性要求。这要求计算系统具有高效的计算性能。
为了满足上述针对计算系统的高效计算性能要求,提出了异构计算(Heterogeneous computer)系统。异构计算系统指使用不同体系架构的处理设备组成的系统。异构计算系统通常采用主-从处理设备架构。主处理设备负责异构计算系统中的处理任务调度和配置,并且通过比如PCIE的高速传输接口来将任务配置信息和处理任务源数据提供给从处理设备,以由从处理设备来具体执行。主-从处理设备之间的数据/信息交互效率,成为了影响异构计算系统的计算性能的重要因素。
发明内容
鉴于上述,本说明书的实施例提供一种异构计算系统的设备交互控制方法、设备交互控制装置及异构计算系统。利用该设备交互控制方法,可以实现异构计算系统中的主-从处理设备之间的可靠交互,从而提高异构计算系统的计算性能和计算效率。
根据本说明书的实施例的一个方面,提供一种用于控制异构计算系统的设备交互的方法,所述异构计算系统包括主处理设备和从处理设备,所述从处理设备用于执行所述主处理设备所调度任务的任务计算处理,所述从处理设备包括状态寄存器和配置寄存器,所述方法包括:读取所述从处理设备处的状态寄存器的寄存器值;以及在所读取的寄存器值指示所述从处理设备处于处理准备就绪状态时,控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理。
可选地,在上述方面的一个示例中,所述处理可以包括写数据处理,以及所述状态寄存器包括写数据状态寄存器,所读取的寄存器值指示所述从处理设备处于数据接收就绪状态,控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理可以包括:控制所述主处理设备将写数据配置信息写入所述从处理设备的配置寄存器,所述写数据配置信息包括任务配置信息以及任务计算源数据在所述从处理设备的从存储器的存储位置信息;以及控制所述主处理设备根据所述写数据配置信息,将所述任务计算源数据写入所述从处理设备的从存储器的相应存储位置。
可选地,在上述方面的一个示例中,所述处理可以包括任务计算处理,以及所述状态寄存器包括工作状态寄存器,所读取的寄存器值指示所述从处理设备处于任务计算就绪状态,控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理可以包括:控制所述主处理设备将任务计算启动命令写入所述从处理设备的配置寄存器,所述从处理设备响应于接收到所述任务计算启动命令来启动任务计算处理。
可选地,在上述方面的一个示例中,所述处理可以包括读数据处理,以及所述状态寄存器包括读数据状态寄存器,所读取的寄存器值指示所述从处理设备处于数据输出就绪状态,控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理可以包括:控制所述主处理设备从所述从处理设备的配置寄存器中读取读数据配置信息,所述读数据配置信息包括所述任务计算结果数据在所述从处理设备的从存储器中的存储位置信息;以及控制所述主处理设备根据所述读数据配置信息,从所述从处理设备的相应存储位置读取所述任务计算结果数据并写入所述主处理设备的主存储器中。
可选地,在上述方面的一个示例中,所述方法还可以包括:控制所述主处理设备将用于清空状态寄存器的清空命令写入所述从处理设备的配置寄存器,所述从处理设备根据所述清空命令来清空所述状态寄存器。
可选地,在上述方面的一个示例中,所述处理包括写数据处理、任务计算处理和读数据处理,以及所述写数据处理、所述任务计算处理和所述读数据处理所需的交互处理依序执行。
可选地,在上述方面的一个示例中,所述从处理设备用于执行多任务并行计算处理,每个任务对应一个寄存器组,每个寄存器组包括状态寄存器和配置寄存器,其中,在当前任务的任务计算处理已经启动后,所述主处理设备与所述从处理设备之间启动执行针对下一任务的写数据处理。
可选地,在上述方面的一个示例中,所述从处理设备用于执行多任务并行计算处理,每个任务对应一个寄存器组,每个寄存器组包括状态寄存器和配置寄存器,其中,各个任务的读数据状态寄存器的读取顺序根据各个任务计算处理的计算效率来安排。
可选地,在上述方面的一个示例中,所述工作状态寄存器的寄存器值包括配置错误标志位,所述方法还可以包括:在所读取的寄存器值中的配置错误标志位指示发生写配置错误时,控制所述主处理设备与所述从处理设备重新执行与所述写配置错误所指示的写数据处理对应的交互处理。
可选地,在上述方面的一个示例中,所述工作状态寄存器的寄存器值包括任务计算错误标志位,所述方法还可以包括:在所读取的寄存器值中的任务计算错误标志位指示发生任务计算处理错误时,控制所述从处理设备重新执行对应的任务计算处理。
可选地,在上述方面的一个示例中,所述主处理设备和所述从处理设备之间的交互通过高速传输接口实现。
可选地,在上述方面的一个示例中,所述主处理设备是基于CPU的处理设备,以及所述从处理设备是基于FPGA的处理设备。
可选地,在上述方面的一个示例中,所述异构计算系统应用于联邦学习中的同态加密计算。
根据本说明书的实施例的另一方面,提供一种用于控制异构计算系统的设备交互的装置,所述异构计算系统包括主处理设备和从处理设备,所述从处理设备用于执行所述主处理设备所调度任务的任务计算处理,所述从处理设备包括状态寄存器和配置寄存器,所述装置包括:寄存器值读取单元,被配置为读取所述从处理设备处的状态寄存器的寄存器值;以及交互控制单元,被配置为在所读取的寄存器值指示所述从处理设备处于处理准备就绪状态时,控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理。
可选地,在上述方面的一个示例中,所述处理包括写数据处理,以及所述状态寄存器包括写数据状态寄存器,所读取的寄存器值指示所述从处理设备处于数据接收就绪状态,所述交互控制单元被配置为控制所述主处理设备将写数据配置信息写入所述从处理设备的配置寄存器,所述写数据配置信息包括任务配置信息以及任务计算源数据在所述从处理设备的从存储器的存储位置信息;以及控制所述主处理设备根据所述写数据配置信息,将所述任务计算源数据写入所述从处理设备的从存储器的相应存储位置。
可选地,在上述方面的一个示例中,所述处理包括任务计算处理,以及所述状态寄存器包括工作状态寄存器,所读取的寄存器值指示所述从处理设备处于任务计算就绪状态,所述交互控制单元被配置为控制所述主处理设备将任务计算启动命令写入所述从处理设备的配置寄存器,所述从处理设备响应于接收到所述任务计算启动命令来启动任务计算处理。
可选地,在上述方面的一个示例中,所述处理包括读数据处理,以及所述状态寄存器包括读数据状态寄存器,所读取的寄存器值指示所述从处理设备处于数据输出就绪状态,所述交互控制单元被配置为控制所述主处理设备从所述从处理设备的配置寄存器中读取读数据配置信息,所述读数据配置信息包括所述任务计算结果数据在所述从处理设备的从存储器中的存储位置信息;以及控制所述主处理设备根据所述读数据配置信息,从所述从处理设备的相应存储位置读取所述任务计算结果数据并写入所述主处理设备的主存储器中。
可选地,在上述方面的一个示例中,所述交互控制单元还被配置为控制所述主处理设备将用于清空状态寄存器的清空命令写入所述从处理设备的配置寄存器,所述从处理设备根据所述清空命令来清空所述状态寄存器。
可选地,在上述方面的一个示例中,所述工作状态寄存器的寄存器值包括配置错误标志位,在所读取的寄存器值中的配置错误标志位指示发生写配置错误时,所述交互控制单元被配置为控制所述主处理设备与所述从处理设备重新执行与所述写配置错误所指示的写数据处理对应的交互处理。
可选地,在上述方面的一个示例中,所述工作状态寄存器的寄存器值包括任务计算错误标志位,在所读取的寄存器值中的任务计算错误标志位指示发生任务计算处理错误时,所述交互控制单元被配置为控制所述从处理设备重新执行对应的任务计算处理。
可选地,在上述方面的一个示例中,所述装置应用于所述主处理设备、所述从处理设备或者第三方设备。
根据本说明书的实施例的另一方面,提供一种异构计算系统,包括:主处理设备,被配置为执行任务调度以及任务计算源数据分发;从处理设备,包括状态寄存器和配置寄存器,被配置为执行所述主处理设备所调度任务的任务计算处理;以及如上所述的设备交互控制装置。
根据本说明书的实施例的另一方面,提供一种计算设备,包括:至少一个处理器,以及与所述至少一个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的设备交互控制方法。
根据本说明书的实施例的另一方面,提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的设备交互控制方法。
附图说明
通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了根据本说明书的实施例的异构计算系统的示例架构示意图。
图2示出了根据本说明书的实施例的具有并行计算能力的从处理器的示例示意图。
图3示出了根据本说明书的实施例的具有多层数据分发/合并机制的并行计算架构的示例示意图。
图4示出了根据本说明书的实施例的异构计算系统的设备交互控制方法的流程图。
图5示出了根据本说明书的实施例的异构计算系统的任务处理过程的示例流程图。
图6示出了根据本说明书的实施例的具备多任务并行处理能力的从处理设备中的寄存器组的示例示意图。
图7示出了根据本说明书的实施例的在多任务并行处理时的交互处理过程的示例示意图。
图8示出了根据本说明书的实施例的配置错误标志位的一个示例的示意图。
图9示出了根据本说明书的实施例的任务计算错误标志位的另一示例的示意图。
图10示出了根据本说明书的实施例的设备交互控制装置的方框图。
图11示出了根据本说明书的实施例的用于异构计算系统的设备交互控制的计算设备的示意图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
图1示出了根据本说明书的实施例的异构计算系统100的示例架构示意图。如图1所示,异构计算系统100包括主处理设备110、从处理设备120和设备交互控制装置130。在图1示出的示例中,设备交互控制装置130作为主处理设备110的组件包含在主设备设备110中。在本说明书的其它实施例中,设备交互控制装置130也可以作为从处理设备120的组件包含在从处理设备120中。或者,设备交互控制装置130也可以设置在主处理设备110和从处理设备120之外的第三方设备上。
主处理设备110负责异构计算系统100中的整体系统处理任务的控制和调度。如图1中所示,主处理设备110可以包括主处理器111和主存储器112。主处理器111可以包括接口模块113。主处理器111可以从外部设备获取处理任务信息和处理任务源数据,并且将处理任务源数据存储在主存储器112中。主处理器111执行主处理设备110和从处理设备120的处理任务调度和控制,得到主处理设备110和从处理设备120的任务配置信息。在得到主处理设备110和从处理设备120的任务配置信息后,主处理器111在设备交互控制装置130的控制下,与从处理设备120进行交互来将任务配置信息和处理任务源数据提供给从处理设备120,以由从处理设备120来具体执行任务计算处理,以及获取从处理设备120的任务计算结果数据。此外,主处理设备110也可以执行所适合的任务处理。在一个示例中,主处理设备110和从处理设备120的接口模块例如可以采用比如PCIE的高速传输接口。要说明的是,图1中示出的仅仅是主处理设备的一个实现示例。在本说明书的其它实施例中,可以采用其它适合的实现方式。交互处理装置的结构和操作将在下面参照附图详细描述。
在一个示例中,主处理设备110可以是基于CPU的处理设备。相应地,主处理器111是CPU,以及主存储器112是CPU存储器,例如,CPU内存。
从处理设备120负责执行主处理设备110所调度任务的任务计算处理。在本说明书中,从处理设备120也可以称为协处理设备。从处理设备120包括从处理器121和从存储器125。从处理器121可以包括接口模块122、状态寄存器123和配置寄存器124。
接口模块122被配置为在设备交互控制装置130的控制下,经由与主处理设备110中的接口模块113之间的交互来从主处理设备110接收任务处理源数据和任务配置数据,以进行任务计算处理。此外,接口模块122还被配置为在从处理设备120完成任务计算处理后,在设备交互控制装置130的控制下,将任务计算结果数据发送给主处理设备110。
在本说明书中,接口模块122可以采用DMA(direct memory access)接口模块实现。可选地,所采用的DMA接口模块可以是高效DMA且支持双向DMA。即,支持主处理设备110中的主处理器111直接访问从存储器125,也可以支持从处理器121直接访问主存储器112。
DMA是一种高效的数据传输机制。在实际工作时,可以在不需要主处理器111过多干预的情况下,将大量的待计算数据先从主存储器(例如,CPU内存)112直接搬移到从存储器(例如,FPGA内存)125里的源数据空间(source memory)。然后,从处理器121再从本侧的源数据空间里取出来进行任务计算(例如,算法计算)。待从处理器121计算完毕后,将结果数据写到从存储器125的结果数据空间(result memory)中缓存,同时告知主处理器111对应的任务已经计算完成,则主处理器111再次通过DMA方式从从存储器125的结果数据空间直接搬移到主存储器112,由此完成一次算法任务的数据交互。
从处理器121执行主处理设备110所调度任务的任务计算处理。在一个示例中,从处理设备120可以是基于FPGA的处理设备。相应地,从处理器121可以是FPGA处理器。在本说明书的其它实施例中,从处理器121也可以采用其它计算架构的处理器实现,比如,GPU、ASIC等。
在一个示例中,从处理器121可以支持多任务并行计算或者单任务并行计算。图2示出了可以支持并行计算的从处理器的示例示意图。如图2所示,除了接口模块122、状态寄存器123和配置寄存器124之外,从处理器121还可以包括系统控制/监控模块126、数据读/写控制模块127、任务管理模块128、数据分发/合并模块129和并行计算架构131。为了描述方便,在图2中未示出状态寄存器123和配置寄存器124。
如图2所示,系统控制/监控模块126设置在接口模块122与任务管理模块128和并行计算架构131之间,并且与任务管理模块128和并行计算架构131之间可通信(双向通信)地连接。系统控制/监控模块126被配置为将接口模块122所接收的任务配置数据提供给任务管理模块128和并行计算架构131。此外,系统控制/监控模块126还被配置为在线监控并行计算架构131的任务处理状态。并行计算架构131的内部处理单元可以设计有多组监测寄存器,例如,状态寄存器和配置寄存器,用于监测处理任务的数据量、计算状态、任务统计信息等。并行计算架构131的内部任务处理状态监控可以采用寄存器读写方式来实现。
数据读/写控制模块127设置在任务管理模块128和从存储器125之间,并且可与接口模块122、任务管理模块128和从存储器125双向通信。数据读/写控制模块127被配置为控制针对从存储器125中的数据的读/写操作。由此,接口模块122所接收的任务处理源数据可以在数据读/写控制模块127的控制下,写入从存储器125。此外,任务管理模块128可以在数据读/写控制模块131的控制下,从从存储器125中读取并行计算架构131的并行计算处理所需的任务处理源数据,以及将并行计算架构131的并行计算处理结果数据存储到从存储器125中。
任务管理模块128被配置为根据任务配置数据,将任务处理源数据分发给并行计算架构131并行处理,得到任务计算结果数据。在得到任务计算结果数据后,任务管理模块128将任务计算结果数据提供给主处理设备110中的主处理器111。
并行计算架构131可以是由多个处理单元组成的分层结构,各个处理单元是具备独立任务处理能力的最小处理单元。换言之,各个处理单元能够独立完成算法的全流程处理。在一个示例中,并行计算架构131可以采用多核心(Multi-Kernel)计算架构,该多核心计算架构是嵌套式分层计算架构。
在本说明书中,Multi-Kernel计算架构包括多个计算层次,每个计算层次可以由多个处理单元(Kernel-Engine)、多个下级计算层次或者两者组合(即,下文中描述的下级引擎)构成。每个计算层次或每个处理单元都能够独立完成算法全流程处理。这里,处理单元是并行计算架构的最小组件单元,不能被进一步细分。图3示出了根据本说明书的实施例的并行计算架构的示例示意图。
如图3所示,Multi-Kernel计算架构可以分为多层。第一层称为Die_Engine(DIE引擎层),其可以包括从处理器内部单独一个DIE下所有的下级引擎。在每个Die_Engine层中,可以细分为多个Kernel_Engine_Lvl1层(Kernel引擎层次1),Kernel_Engine_Lvll也可以称为第二层。接着,在每个第二层,可以细分为多个Kernel_Engine_Lvl2(Kernel引擎层次2),Kernel_Engine_Lv12也可以称为第三层。以此类推,第n+1层称之为Kernel_Engine_Lvln。由此可见,在本说明书中,并行计算架构131中的每个分层结构可以包含多层下级子层,直到最终的下层子层中都是由处理单元(Kernel-Engine)组成并且不可进一步细分。
在本说明书中,并行计算架构131的嵌套式分层结构是可配置的。例如,在一个示例中,可以根据任务处理算法以及从处理器的内部计算资源来配置并行计算架构的嵌套式分层结构,即,配置并行计算架构的计算层次数量和每个计算层次的处理单元数量。例如,任务处理算法越复杂,则并行计算架构所包含的计算层次就越多。任务处理算法的复杂度与并行计算架构的计算层数之间不是线性关系。此外,由于计算层数太多则可能会在性能提升并不明显的情况下浪费从处理器计算资源,从而计算层数也不是越多越好,通常采用3-6层。另外,所有计算层次的总处理单元的数目可以由从处理器内部资源(从处理器的总芯片资源)决定。
在一个嵌套式分层结构的配置示例中,DIE引擎层(Die_Engine)可以为一次性配置数量,这个数量可以由从处理器121所使用的芯片型号内包含的DIE数量决定,后续无需再配。DIE引擎层下的每个计算分层的分层结构配置可以由上一分层来配置。例如,Kernel_Engine_Lvl1可以配置Kernel_Engine_Lvl2的数量。
要说明的是,在一个示例中,上述嵌套式分层结构的配置过程可以是在从处理器(即,FPGA芯片)设计时根据预定的任务处理算法来预先完成。在这种情况下,所设计出的从处理器可以应用于该预定的任务处理算法或者类似处理算法的任务处理。在另一示例中,上述嵌套式分层结构配置过程也可以是在从处理器执行任务处理时实时完成。
利用上述嵌套式分层结构配置,在一个应用场景中包含不同种类或不同层次的任务处理算法时,可以通过对Multi-Kernel计算架构进行配置,例如,改变计算层次或处理引擎的具体设计以及参数配置,来满足不同算法的任务处理需求。
此外,在本说明书的实施例的并行计算架构中,还可以设置多层数据分发与合并机制。如图2中所示,在任务管理模块128和并行计算架构131之间设置数据分发/合并模块129。数据分发/合并模块129可以包括成对的数据分发模块和数据合并模块。数据分发/合并模块129被配置为与任务管理模块128一起将任务处理源数据分发给并行计算架构131中的各个处理单元来并行处理,并且对各个处理单元的并行处理结果进行合并处理,得到任务处理结果数据。
在本说明书中,数据分发/合并模块129可以采用多层数据传输分层结构。具体地,数据分发模块包括多级数据分发模块,以及数据合并模块包括多级数据合并模块。第一级数据分发模块连接多个第二级数据分发模块,第二级数据分发模块连接多个第三数据分发模块等等。数据合并模块的连接方式与数据分发模块的连接方式相反。
具体地,数据分发和合并机制可以分为多层,数据分发为“一进多出”,以及数据合并为“多进一出”。如图3所示,数据分发的第一层可以称为Data_Disp_DieEng,第二层称为Data_Disp_Lvl1,第三层称为Data_Disp_Lvl2,以此类推,第n+1层称为Data_Disp_Lvln。而数据合并的第一层称为Data_Merg_DieEng,第二层称为Data_Merg_Lvl1,第三层称为Data_Merg_Lvl2,以此类推,第n+1层称之为Data_Merg_Lvln。数据分发和数据合并中的层与层之间的关系为:针对数据分发,单个上层的数据分发模块将数据输出到多个数据通道,每个数据通道连接下层的数据分发模块,也就是说,单个上层的数据分发模块连接(驱动)多个下层的数据分发模块。针对数据合并,多个上层的数据合并模块将数据统一合并到单个下层的数据合并模块,层层递进,最终合并成单路数据(即,任务处理结果数据)并提供给任务管理模块128。
在本说明书的架构中,数据传输分层结构的层次是可配置的,并且每层的数据分发和数据合并的通道数量是可以灵活配置的,比如,8,16,32等,在实际应用中,通道数量的配置可以依据每层的处理单元(Kernel_Engine)数量来综合考虑。
利用上述多层数据分发/合并机制,在主处理设备110的主处理器111所下发的单次处理任务数据量比较大时,例如,256MB,512MB等,数据分发模块可以将任务数据量平均分摊到并行计算架构内部的所有处理单元(Kernel_Engine)中并行计算,从而可以提升内部数据传输的效率,同时提升并行计算架构131的内部整体性能和主频。此外,利用上述多层数据分发和数据合并机制,可以适配多层的计算引擎数据交互。此外,由于数据分发和合并模块采用“轮训”机制设计,“分层”的设计可以降低“轮训”的数量和范围,从而可以提高多个处理单元之间的数据处理并行度,降低处理延迟。
此外,在本说明书中,各个处理单元(Kernel-Engine)可以采用运算流水线(PipeLine)设计。处理单元内部可以包含多级运算,每级运算可以完成多样的数学运算,如加减乘除等。每级运算之间通过Pipeline无缝连接在一起,使每一级运算之间都能同时并行处理。上一级计算好的结果暂存在从处理器121的内部存储器中,而下一级运算则可以灵活选择不同的上级结果数据作为计算输入,如此多级连接在一起,从而完成非常复杂的算法运算。Pipeline的设计大大优化任务处理的并行性,同时简化单步计算中的复杂度,提升运算效率。
此外,在本说明书中,每个处理单元内的Pipeline运算级数是可以灵活配置的,例如,级数可以被配置为5,6和7等。在一个示例中,可以结合实际应用中的任务处理算法的复杂度来确定Pipeline运算级数。通常,越复杂的任务处理算法,所需要的运算级数越多,但是运算级数越多,单个处理单元所消耗的从处理器资源也越多。基于上述考虑,在一个示例中,可以根据并行计算架构的嵌套式分层结构的层次以及处理单元的个数来配置Pipeline运算级数。
此外,可选地,在一个示例中,各个处理单元的运算流水线的每级运算具备循环运算功能(feedback/cyclic operation),也可以称为反馈运算功能,即,运算完的运算结果可以反馈到同一级别的输入重新递归运算。所述循环运算的示例例如可以包括迭代运算和/或递归运算。利用这种设计,可以完成一些AI算法中包含的递归运算或迭代运算,从而提高处理单元的利用率和计算复杂度。
此外,在本说明书中,并行计算架构131的并行处理任务数是可配置的,例如,64,128,256等。这个配置参数的最大值可以不设上限。并行处理任务数的上限至少取决于下面两个因素。一个因素是从处理设备120侧的从处理器的存储器容量大小,从处理器的存储器容量大小决定了所有任务累加在一起的最大缓存数据量。另一个因素是单个任务所支持的最大处理数据量(batch size),单个任务所支持的最大处理数据量也是可以根据业务需要灵活配置的,例如,128Mb,256MB,512MB。当batch size被配置得比较大时,考虑受限于从处理器的存储器容量大小,并行处理任务数就应该配置得小一些。反之,并行处理任务数就可以配置得大一些,但是,所有任务的数据量累加不能超过从处理器的存储器容量的最大值。
此外,可选地,在另一示例中,系统控制/监控模块126中的系统控制功能也可以在任务管理模块128中实现,即,在任务管理模块128中实现将任务配置数据提供给并行计算架构131。在这种情况下,接口模块122与任务管理模块128可通信地连接,并且被配置为将所接收的任务配置数据直接提供给任务管理模块128。
此外,可选地,在另一示例中,从处理器121可以不包括数据读/写控制模块127。相应地,从处理设备120不包括从存储器125,接口模块122与任务管理模块128可通信地连接,并且执行双向通信。任务管理模块128被配置为从接口模块122获取任务处理源数据,以及将并行计算架构131的任务计算结果数据提供给接口模块122,由此提供给主处理设备110。
此外,在本说明书的其它实施例中,从处理器121也可以不包括系统控制/监控模块126和/或数据分发/合并模块129。
回到图1,状态寄存器123用于监测并存储从处理设备120的任务处理状态信息。配置寄存器124用于存储从处理设备120的配置信息,例如,任务配置信息,写数据配置信息、读数据配置信息等。此外,配置寄存器124还可以存储任务计算启动命令。在本说明书中,状态寄存器123可以包括写数据状态寄存器、工作状态寄存器和读数据状态寄存器等。
在一个示例中,状态寄存器可以包括一个或多个比特,例如,32比特。状态寄存器的一个比特或者多个比特被使用来描述一种状态或指示一种结果。例如,写数据状态寄存器中可以存储用于指示从处理设备是否处于数据接收就绪状态的比特。工作状态寄存器中可以存储用于指示从处理设备是否处于任务计算就绪状态的比特。读数据状态寄存器中可以存储用于指示从处理设备是否处于数据输出就绪状态的比特。
此外,要说明的是,在本说明书的其它实施例中,主处理设备110也可以不包括主存储器112,和/或从处理设备120也可以不包括从存储器125。
图4示出了根据本说明书的实施例的异构计算系统100的设备交互控制方法的流程图。所述方法由设备交互控制装置130执行。
如图4所示,设备交互控制装置130读取从处理设备120中的状态寄存器的寄存器值。例如,设备交互控制装置130可以采用轮询查询的方式来读取从处理设备120中的状态寄存器的寄存器值。在一个示例中,在410,设备交互控制装置130向从处理设备120发送状态寄存器读取请求。响应于状态寄存器读取请求,在420,从处理设备120向设备交互控制装置130返回状态寄存器的寄存器值。
在430,设备交互控制装置130根据所返回的寄存器值,判断从处理设备120是否处于处理准备就绪状态。
在440,在所返回的寄存器值指示从处理设备120处于处理准备就绪状态时,设备交互控制装置130控制主处理设备110和从处理设备120执行从处理设备120的处理所需的交互处理过程。
具体地,在一个示例中,从处理设备120的处理包括写数据处理,相应地,状态寄存器包括写数据状态寄存器。在所读取的寄存器值指示从处理设备120处于数据接收就绪状态时,设备交互控制装置130控制主处理设备110将写数据配置信息写入从处理设备120的配置寄存器,所述写数据配置信息包括任务配置信息以及任务计算源数据在从处理设备120的从存储器的存储位置信息。在本说明书中,存储位置信息例如可以是首地址和数据长度,或者可以是首地址和尾地址,或者可以是尾地址和数据长度等。然后,设备交互控制装置130控制主处理设备110根据所读取的写数据配置信息,将任务计算源数据写入从处理设备的从存储器中的相应存储位置。
在另一示例中,从处理设备120的处理包括任务计算处理。相应地,状态寄存器包括工作状态寄存器。在所读取的寄存器值指示从处理设备120处于任务计算就绪状态时,设备交互控制装置130控制主处理设备110将任务计算启动命令写入从处理设备120的配置寄存器。从处理设备120响应于接收到任务计算启动命令,启动任务计算处理。随后,从处理设备120根据任务配置信息执行任务计算处理,得到任务计算结果数据。
在另一示例中,从处理设备120的处理包括读数据处理。相应地,状态寄存器包括读数据状态寄存器。在所读取的寄存器值指示从处理设备120处于结果数据输出就绪状态时,设备交互控制装置130控制主处理设备110读取从处理设备120的配置寄存器中的读数据配置信息,所述读数据配置信息包括任务计算结果数据在从处理设备120的从存储器中的存储位置信息。随后,设备交互控制装置130控制主处理设备120根据所读取的读数据配置信息,读取从处理设备120中的任务计算结果数据并写入主处理设备110的主存储器中。
图5示出了根据本说明书的实施例的异构计算系统的任务处理过程的示例流程图。
如图5所示,在块501,设备交互控制装置130读取从处理设备120的写数据状态寄存器的寄存器值。在块502,设备交互控制装置130判断写数据状态寄存器的寄存器值是否指示从处理设备120处于数据接收就绪状态。
在写数据状态寄存器的寄存器值指示从处理设备120未处于数据接收就绪状态时,返回到块501,设备交互控制装置130继续执行写数据状态寄存器读取过程。在写数据状态寄存器的寄存器值指示从处理设备120处于数据接收就绪状态时,在块503,设备交互控制装置130控制主处理设备110将写数据配置信息写入从处理设备120的配置寄存器。在块504,设备交互控制装置130控制主处理设备110根据写数据配置信息,将任务计算源数据写入从处理设备120的从存储器中的相应存储位置。
在块505,设备交互控制装置130读取从处理设备120的工作状态寄存器的寄存器值。在块506,设备交互控制装置130判断工作状态寄存器的寄存器值是否指示从处理设备120处于任务计算就绪状态。
在工作状态寄存器的寄存器值指示从处理设备120未处于任务计算就绪状态时,返回到块505,设备交互控制装置130继续执行工作状态寄存器读取过程。在工作状态寄存器的寄存器值指示从处理设备120处于任务计算就绪状态时,在块507,设备交互控制装置130控制主处理设备110将任务计算启动命令写入从处理设备120的配置寄存器。从处理设备120响应于接收到任务计算启动命令来启动执行任务计算处理,得到任务计算结果数据。所得到的任务计算结果数据被存储在从处理设备120的从存储器中,并且在配置寄存器中存储读数据配置信息,所述读数据配置信息包括任务计算结果数据在从处理设备120的从存储器中的首地址和数据长度。
在块508,设备交互控制装置130读取从处理设备120的读数据状态寄存器的寄存器值。在块509,设备交互控制装置130判断读数据状态寄存器的寄存器值是否指示从处理设备120处于数据输出就绪状态。
在读数据状态寄存器的寄存器值指示从处理设备120未处于数据输出就绪状态时,返回到块508,设备交互控制装置130继续执行读数据状态寄存器读取过程。在读数据状态寄存器的寄存器值指示从处理设备120处于数据输出就绪状态时,在块510,设备交互控制装置130控制主处理设备110读取从处理设备120的配置寄存器中的读数据配置信息。在块511,设备交互控制装置130控制主处理设备110根据读数据配置信息,读取从处理设备120的从存储器的相应存储位置中的任务计算结果数据,并将任务计算结果数据写入主处理设备110的主存储器111中。
如上参照图5描述了一次任务处理过程。要说明的是,图5中的块501、505和508的操作是持续进行的。此外,写数据处理、任务计算处理和读数据处理所需的交互处理依序执行。
此外,从处理设备120可以具备多任务并行处理能力,从而可以支持多任务并行处理。在多任务并行处理的情况下,每个任务可以对应一个寄存器组,每个寄存器组包括状态寄存器和配置寄存器。图6示出了根据本说明书的实施例的具备多任务并行处理能力的从处理设备中的寄存器组的示例示意图。
在多任务并行处理的情况下,主处理设备110和从处理设备120之间的交互处理可以并行执行。具体地,在从处理设备120上执行的当前任务的任务计算处理已经启动后,主处理设备110可以启动与从处理设备120之间的针对下一任务的写数据处理。例如,在从处理设备120上执行的当前任务的任务配置完成并启动计算后,主处理设备110可以执行针对下一任务的写数据处理。图7示出了根据本说明书的实施例的在多任务并行处理时的交互处理过程的示例示意图。
此外,在一个示例中,在读取(查询)各个任务对应的读数据状态寄存器时,可以根据各个任务计算处理的计算效率来安排各个任务的读数据状态寄存器的读取顺序。例如,可以根据各任务的计算效率,为各个任务的读数据状态寄存器设置读取优先级、轮询读取顺序等。
此外,可选地,在一个示例中,在完成从处理设备120中的任务计算结果数据的数据读取后,设备交互控制装置130还可以控制主处理设备110将用于清空状态寄存器的清空命令写入从处理设备120的配置寄存器。从处理设备120根据所述清空命令来清空从处理设备120中的所有状态寄存器,即,对所有状态寄存器执行复位处理。
此外,可选地,在一个示例中,工作状态寄存器的寄存器值还可以包括配置错误标志位。所述配置错误标志位可以用于指示发生写配置错误。配置错误标志位通常采用1个比特来指示。例如,在配置错误标志位的取值为1时,指示发生写配置错误。在配置错误标志位的取值为0时,指示发生写配置正确。图8示出了根据本说明书的实施例的配置错误标志位的示例示意图。
此外,可选地,在一个示例中,工作状态寄存器的寄存器值还可以包括任务计算错误标志位。所述任务计算错误标志位可以用于指示发生任务计算错误。任务计算错误标志位通常采用1个或多个比特来指示。例如,在任务计算包括K个计算阶段,任务计算错误标志为可以采用K个比特来指示,每个比特对应1个计算阶段,从而可以反映出哪个或哪些计算阶段发生错误。图9示出了根据本说明书的实施例的任务计算错误标志位的示例示意图,在图9的示例中包含4个比特A1-A4,对应4个计算阶段。在所读取的寄存器值中的任务计算错误标志位指示发生任务计算处理错误时,设备交互控制装置130控制从处理设备120重新执行对应的任务计算处理。
图10示出了根据本说明书的实施例的设备交互控制装置1000的方框图。如图10所示,设备交互控制装置1000包括寄存器读取单元1010和交互控制单元1020。
寄存器值读取单元1010被配置为读取从处理设备处的状态寄存器的寄存器值。交互控制单元1020被配置为在所读取的寄存器值指示从处理设备处于处理准备就绪状态时,控制主处理设备与从处理设备执行所述处理所需的交互处理。
在一个示例中,从处理设备的处理包括写数据处理,以及状态寄存器包括写数据状态寄存器。在所读取的寄存器值指示从处理设备处于数据接收就绪状态,交互控制单元1020控制主处理设备将写数据配置信息写入从处理设备的配置寄存器,所述写数据配置信息包括任务配置信息以及任务计算源数据在从处理设备的从存储器的存储位置信息;并且控制主处理设备根据写数据配置信息,将任务计算源数据写入从处理设备的从存储器的相应存储位置。
在另一示例中,从处理设备的处理包括任务计算处理,以及状态寄存器包括工作状态寄存器。在所读取的寄存器值指示从处理设备处于任务计算就绪状态时,交互控制单元1020控制主处理设备将任务计算启动命令写入从处理设备的配置寄存器。从处理设备响应于接收到任务计算启动命令来启动任务计算处理,得到任务计算结果数据。
在另一示例中,从处理设备的处理包括读数据处理,以及状态寄存器包括读数据状态寄存器。在所读取的寄存器值指示从处理设备处于数据输出就绪状态时,交互控制单元1020控制主处理设备从从处理设备的配置寄存器中读取读数据配置信息,所述读数据配置信息包括任务计算结果数据在从处理设备的从存储器中的存储位置信息;并且控制主处理设备根据读数据配置信息,读取从处理设备的相应存储位置处的任务计算结果数据并写入主处理设备的主存储器中。
此外,在另一示例中,交互控制单元1020还可以控制主处理设备将用于清空状态寄存器的清空命令写入从处理设备的配置寄存器。从处理设备根据清空命令来清空状态寄存器。
此外,工作状态寄存器的寄存器值还可以包括配置错误标志位。在所读取的寄存器值中的配置错误标志位指示发生写配置错误时,交互控制单元1020还可以控制主处理设备与从处理设备重新执行与写配置错误所指示的写数据处理对应的交互处理。
利用该设备交互控制方法,通过采用读取从处理设备的状态寄存器来查询从处理设备状态的“握手”方式建立主处理设备与从处理设备之间的连接,可以确保连接的稳定可靠。然后,根据主处理设备与从处理设备之间约定的配置信息,通过DMA方式实现数据双向传输,可以实现主处理设备和从处理设备之间的高效交互。此外,基于寄存器读写方式查询状态、发送配置信息并通过DMA方式传输数据的交互机制,使得主处理设备和从处理设备侧的逻辑实现更加简单。此外,根据本说明书的实施例的设备间交互方案还可以实现错误监控和支持多任务并发,从而方便扩展异构计算系统的应用。
如上参照图1到图10对根据本说明书的实施例的异构计算系统的设备交互控制方法、设备交互控制装置及异构计算系统进行了描述。上面的设备交互控制装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图11示出了根据本说明书的实施例的用于异构计算系统的设备交互控制的计算设备1100的示意图。如图11所示,计算设备1100可以包括至少一个处理器1110、存储器(例如,非易失性存储器)1120、内存1130和通信接口1140,并且至少一个处理器1110、存储器1120、内存1130和通信接口1140经由总线1160连接在一起。至少一个处理器1110执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1110:读取从处理设备处的状态寄存器的寄存器值;以及在所读取的寄存器值指示从处理设备处于处理准备就绪状态时,控制主处理设备与从处理设备执行所述处理所需的交互处理。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1110进行本说明书的各个实施例中以上结合图1-10描述的各种操作和功能。
根据一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-10描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本说明书的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (24)
1.一种用于控制异构计算系统的设备交互的方法,所述异构计算系统包括主处理设备和从处理设备,所述从处理设备用于执行所述主处理设备所调度任务的任务计算处理,所述从处理设备包括状态寄存器和配置寄存器,所述方法包括:
读取所述从处理设备处的状态寄存器的寄存器值;以及
在所读取的寄存器值指示所述从处理设备处于处理准备就绪状态时,控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理。
2.如权利要求1所述的方法,其中,所述处理包括写数据处理,以及所述状态寄存器包括写数据状态寄存器,所读取的寄存器值指示所述从处理设备处于数据接收就绪状态,
控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理包括:
控制所述主处理设备将写数据配置信息写入所述从处理设备的配置寄存器,所述写数据配置信息包括任务配置信息以及任务计算源数据在所述从处理设备的从存储器的存储位置信息;以及
控制所述主处理设备根据所述写数据配置信息,将所述任务计算源数据写入所述从处理设备的从存储器的相应存储位置。
3.如权利要求1或2所述的方法,其中,所述处理包括任务计算处理,以及所述状态寄存器包括工作状态寄存器,所读取的寄存器值指示所述从处理设备处于任务计算就绪状态,
控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理包括:
控制所述主处理设备将任务计算启动命令写入所述从处理设备的配置寄存器,所述从处理设备响应于接收到所述任务计算启动命令来启动任务计算处理。
4.如权利要求1到3中任一所述的方法,其中,所述处理包括读数据处理,以及所述状态寄存器包括读数据状态寄存器,所读取的寄存器值指示所述从处理设备处于数据输出就绪状态,
控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理包括:
控制所述主处理设备从所述从处理设备的配置寄存器中读取读数据配置信息,所述读数据配置信息包括所述任务计算结果数据在所述从处理设备的从存储器中的存储位置信息;以及
控制所述主处理设备根据所述读数据配置信息,从所述从处理设备的从存储器的相应存储位置读取所述任务计算结果数据并写入所述主处理设备的主存储器中。
5.如权利要求4所述的方法,还包括:
控制所述主处理设备将用于清空状态寄存器的清空命令写入所述从处理设备的配置寄存器,所述从处理设备根据所述清空命令来清空所述状态寄存器。
6.如权利要求4所述的方法,其中,所述处理包括写数据处理、任务计算处理和读数据处理,以及所述写数据处理、所述任务计算处理和所述读数据处理所需的交互处理依序执行。
7.如权利要求6所述的方法,其中,所述从处理设备用于执行多任务并行计算处理,每个任务对应一个寄存器组,每个寄存器组包括状态寄存器和配置寄存器,
其中,在当前任务的任务计算处理已经启动后,所述主处理设备与所述从处理设备之间启动执行针对下一任务的写数据处理。
8.如权利要求6所述的方法,其中,所述从处理设备用于执行多任务并行计算处理,每个任务对应一个寄存器组,每个寄存器组包括状态寄存器和配置寄存器,
其中,各个任务的读数据状态寄存器的读取顺序根据各个任务计算处理的计算效率来安排。
9.如权利要求3所述的方法,其中,所述工作状态寄存器的寄存器值包括配置错误标志位,所述方法还包括:
在所读取的寄存器值中的配置错误标志位指示发生写配置错误时,控制所述主处理设备与所述从处理设备重新执行与所述写配置错误所指示的写数据处理对应的交互处理。
10.如权利要求3所述的方法,其中,所述工作状态寄存器的寄存器值包括任务计算错误标志位,所述方法还包括:
在所读取的寄存器值中的任务计算错误标志位指示发生任务计算处理错误时,控制所述从处理设备重新执行对应的任务计算处理。
11.如权利要求1到10中任一所述的方法,其中,所述主处理设备和所述从处理设备之间的交互通过高速传输接口实现。
12.如权利要求1所述的方法,其中,所述主处理设备是基于CPU的处理设备,以及所述从处理设备是基于FPGA的处理设备。
13.如权利要求1所述的方法,其中,所述异构计算系统应用于联邦学习中的同态加密计算。
14.一种用于控制异构计算系统的设备交互的装置,所述异构计算系统包括主处理设备和从处理设备,所述从处理设备用于执行所述主处理设备所调度任务的任务计算处理,所述从处理设备包括状态寄存器和配置寄存器,所述装置包括:
寄存器值读取单元,被配置为读取所述从处理设备处的状态寄存器的寄存器值;以及
交互控制单元,被配置为在所读取的寄存器值指示所述从处理设备处于处理准备就绪状态时,控制所述主处理设备与所述从处理设备执行所述处理所需的交互处理。
15.如权利要求14所述的装置,其中,所述处理包括写数据处理,以及所述状态寄存器包括写数据状态寄存器,所读取的寄存器值指示所述从处理设备处于数据接收就绪状态,
所述交互控制单元被配置为控制所述主处理设备将写数据配置信息写入所述从处理设备的配置寄存器,所述写数据配置信息包括任务配置信息以及任务计算源数据在所述从处理设备的从存储器的存储位置信息;以及控制所述主处理设备根据所述写数据配置信息,将所述任务计算源数据写入所述从处理设备的从存储器的相应存储位置。
16.如权利要求14或15所述的装置,其中,所述处理包括任务计算处理,以及所述状态寄存器包括工作状态寄存器,所读取的寄存器值指示所述从处理设备处于任务计算就绪状态,
所述交互控制单元被配置为控制所述主处理设备将任务计算启动命令写入所述从处理设备的配置寄存器,所述从处理设备响应于接收到所述任务计算启动命令来启动任务计算处理。
17.如权利要求14到16中任一所述的装置,其中,所述处理包括读数据处理,以及所述状态寄存器包括读数据状态寄存器,所读取的寄存器值指示所述从处理设备处于数据输出就绪状态,
所述交互控制单元被配置为控制所述主处理设备从所述从处理设备的配置寄存器中读取读数据配置信息,所述读数据配置信息包括所述任务计算结果数据在所述从处理设备的从存储器中的存储位置信息;以及控制所述主处理设备根据所述读数据配置信息,从所述从处理设备读取所述任务计算结果数据并写入所述主处理设备的主存储器中。
18.如权利要求17所述的装置,其中,所述交互控制单元还被配置为控制所述主处理设备将用于清空状态寄存器的清空命令写入所述从处理设备的配置寄存器,所述从处理设备根据所述清空命令来清空所述状态寄存器。
19.如权利要求16所述的装置,其中,所述工作状态寄存器的寄存器值包括配置错误标志位,
在所读取的寄存器值中的配置错误标志位指示发生写配置错误时,所述交互控制单元控制所述主处理设备与所述从处理设备重新执行与所述写配置错误所指示的写数据处理对应的交互处理。
20.如权利要求16所述的装置,其中,所述工作状态寄存器的寄存器值包括任务计算错误标志位,在所读取的寄存器值中的任务计算错误标志位指示发生任务计算处理错误时,所述交互控制单元控制所述从处理设备重新执行对应的任务计算处理。
21.如权利要求14到20中任一所述的装置,其中,所述装置应用于所述主处理设备、所述从处理设备或者第三方设备。
22.一种异构计算系统,包括:
主处理设备,被配置为执行任务调度以及任务计算源数据分发;
从处理设备,包括状态寄存器和配置寄存器,被配置为执行所述主处理设备所调度任务的任务计算处理;以及
如权利要求14到20中任一所述的装置。
23.一种计算设备,包括:
至少一个处理器,以及
与所述至少一个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1到13中任一所述的方法。
24.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如权利要求1到13中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010661426.7A CN111831330B (zh) | 2020-07-10 | 2020-07-10 | 用于联邦学习的异构计算系统设备交互方案 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010661426.7A CN111831330B (zh) | 2020-07-10 | 2020-07-10 | 用于联邦学习的异构计算系统设备交互方案 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831330A true CN111831330A (zh) | 2020-10-27 |
CN111831330B CN111831330B (zh) | 2022-02-01 |
Family
ID=72900561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010661426.7A Active CN111831330B (zh) | 2020-07-10 | 2020-07-10 | 用于联邦学习的异构计算系统设备交互方案 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831330B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112200713A (zh) * | 2020-10-28 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种联邦学习中的业务数据处理方法、装置以及设备 |
CN112395062A (zh) * | 2020-11-17 | 2021-02-23 | 深圳前海微众银行股份有限公司 | 任务处理方法、装置、设备及计算机可读存储介质 |
CN112433914A (zh) * | 2020-11-26 | 2021-03-02 | 成都海光集成电路设计有限公司 | 获取并行计算任务进度的方法及系统 |
CN112445735A (zh) * | 2020-11-20 | 2021-03-05 | 深圳致星科技有限公司 | 一种联邦学习数据传输方法、计算机设备、系统及存储介质 |
CN112685159A (zh) * | 2020-12-30 | 2021-04-20 | 深圳致星科技有限公司 | 基于fpga异构处理系统的联邦学习计算任务处理方案 |
CN113177211A (zh) * | 2021-04-20 | 2021-07-27 | 深圳致星科技有限公司 | 用于隐私计算的fpga芯片、异构处理系统及计算方法 |
CN113553191A (zh) * | 2021-09-17 | 2021-10-26 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的异构处理系统 |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216609A1 (en) * | 2004-03-10 | 2005-09-29 | Cisco Technology, Inc. (A California Corporation) | PVDM (packet voice data module) generic bus |
CN1969262A (zh) * | 2004-06-14 | 2007-05-23 | 皇家飞利浦电子股份有限公司 | 用于调试和/或追踪包括一个或者多个主设备以及合作的一个或者多个从设备的计算机系统的接口设备 |
CN102541640A (zh) * | 2011-12-28 | 2012-07-04 | 厦门市美亚柏科信息股份有限公司 | 一种集群gpu资源调度系统和方法 |
CN102750127A (zh) * | 2012-06-12 | 2012-10-24 | 清华大学 | 一种协处理器 |
CN102760105A (zh) * | 2012-06-13 | 2012-10-31 | 深圳市汇川控制技术有限公司 | 实现本地主从模块间的通信的系统及方法 |
CN106796556A (zh) * | 2014-10-05 | 2017-05-31 | 亚马逊技术股份有限公司 | 仿真端点配置 |
CN107368375A (zh) * | 2016-05-11 | 2017-11-21 | 华中科技大学 | 一种基于MapReduce的K-means聚类算法FPGA加速系统 |
CN107766135A (zh) * | 2017-09-29 | 2018-03-06 | 东南大学 | 移动朵云中基于粒子群和模拟退火优化的任务分配方法 |
CN108776649A (zh) * | 2018-06-11 | 2018-11-09 | 山东超越数控电子股份有限公司 | 一种基于cpu+fpga异构计算系统及其加速方法 |
CN108845537A (zh) * | 2018-06-08 | 2018-11-20 | 山东超越数控电子股份有限公司 | 基于soc fpga的plc系统中cpu与数字逻辑模块的通信方法 |
CN108920193A (zh) * | 2018-05-16 | 2018-11-30 | 天津光电聚能专用通信设备有限公司 | Fpga和cpu间sdio通信接口实现方法、及装置 |
US20190042513A1 (en) * | 2018-06-30 | 2019-02-07 | Kermin E. Fleming, JR. | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
CN109450913A (zh) * | 2018-11-27 | 2019-03-08 | 浪潮软件股份有限公司 | 一种基于策略的多节点注册调度方法 |
CN109710562A (zh) * | 2018-11-06 | 2019-05-03 | 电子科技大学 | 一种基于selectmap的可配置且高速的fpga配置电路及实现方法 |
CN109918335A (zh) * | 2019-02-28 | 2019-06-21 | 苏州浪潮智能科技有限公司 | 一种基于cpu+fpga 8路dsm架构服务器系统及处理方法 |
CN109960570A (zh) * | 2017-12-14 | 2019-07-02 | 北京图森未来科技有限公司 | 一种多模块调度方法、装置和系统 |
CN110119311A (zh) * | 2019-04-12 | 2019-08-13 | 华中科技大学 | 一种基于fpga的分布式流计算系统加速方法 |
CN110955526A (zh) * | 2019-12-16 | 2020-04-03 | 湖南大学 | 一种用于在分布式异构环境下实现多gpu调度的方法和系统 |
CN111191777A (zh) * | 2019-12-27 | 2020-05-22 | 深圳云天励飞技术有限公司 | 一种神经网络处理器及其控制方法 |
-
2020
- 2020-07-10 CN CN202010661426.7A patent/CN111831330B/zh active Active
Patent Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216609A1 (en) * | 2004-03-10 | 2005-09-29 | Cisco Technology, Inc. (A California Corporation) | PVDM (packet voice data module) generic bus |
CN1969262A (zh) * | 2004-06-14 | 2007-05-23 | 皇家飞利浦电子股份有限公司 | 用于调试和/或追踪包括一个或者多个主设备以及合作的一个或者多个从设备的计算机系统的接口设备 |
CN102541640A (zh) * | 2011-12-28 | 2012-07-04 | 厦门市美亚柏科信息股份有限公司 | 一种集群gpu资源调度系统和方法 |
CN102750127A (zh) * | 2012-06-12 | 2012-10-24 | 清华大学 | 一种协处理器 |
CN102760105A (zh) * | 2012-06-13 | 2012-10-31 | 深圳市汇川控制技术有限公司 | 实现本地主从模块间的通信的系统及方法 |
CN106796556A (zh) * | 2014-10-05 | 2017-05-31 | 亚马逊技术股份有限公司 | 仿真端点配置 |
CN107368375A (zh) * | 2016-05-11 | 2017-11-21 | 华中科技大学 | 一种基于MapReduce的K-means聚类算法FPGA加速系统 |
CN107766135A (zh) * | 2017-09-29 | 2018-03-06 | 东南大学 | 移动朵云中基于粒子群和模拟退火优化的任务分配方法 |
CN109960570A (zh) * | 2017-12-14 | 2019-07-02 | 北京图森未来科技有限公司 | 一种多模块调度方法、装置和系统 |
CN108920193A (zh) * | 2018-05-16 | 2018-11-30 | 天津光电聚能专用通信设备有限公司 | Fpga和cpu间sdio通信接口实现方法、及装置 |
CN108845537A (zh) * | 2018-06-08 | 2018-11-20 | 山东超越数控电子股份有限公司 | 基于soc fpga的plc系统中cpu与数字逻辑模块的通信方法 |
CN108776649A (zh) * | 2018-06-11 | 2018-11-09 | 山东超越数控电子股份有限公司 | 一种基于cpu+fpga异构计算系统及其加速方法 |
US20190042513A1 (en) * | 2018-06-30 | 2019-02-07 | Kermin E. Fleming, JR. | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
CN109710562A (zh) * | 2018-11-06 | 2019-05-03 | 电子科技大学 | 一种基于selectmap的可配置且高速的fpga配置电路及实现方法 |
CN109450913A (zh) * | 2018-11-27 | 2019-03-08 | 浪潮软件股份有限公司 | 一种基于策略的多节点注册调度方法 |
CN109918335A (zh) * | 2019-02-28 | 2019-06-21 | 苏州浪潮智能科技有限公司 | 一种基于cpu+fpga 8路dsm架构服务器系统及处理方法 |
CN110119311A (zh) * | 2019-04-12 | 2019-08-13 | 华中科技大学 | 一种基于fpga的分布式流计算系统加速方法 |
CN110955526A (zh) * | 2019-12-16 | 2020-04-03 | 湖南大学 | 一种用于在分布式异构环境下实现多gpu调度的方法和系统 |
CN111191777A (zh) * | 2019-12-27 | 2020-05-22 | 深圳云天励飞技术有限公司 | 一种神经网络处理器及其控制方法 |
Non-Patent Citations (2)
Title |
---|
MOHAMAD NAJEM: ""Extended overlay architectures for heterogeneous FPGA cluster management"", 《JOURNAL OF SYSTEMS ARCHITECTURE》 * |
梁志力: ""异构多核系统中协处理器优化"", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112200713A (zh) * | 2020-10-28 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种联邦学习中的业务数据处理方法、装置以及设备 |
CN112395062A (zh) * | 2020-11-17 | 2021-02-23 | 深圳前海微众银行股份有限公司 | 任务处理方法、装置、设备及计算机可读存储介质 |
CN112445735A (zh) * | 2020-11-20 | 2021-03-05 | 深圳致星科技有限公司 | 一种联邦学习数据传输方法、计算机设备、系统及存储介质 |
CN112433914A (zh) * | 2020-11-26 | 2021-03-02 | 成都海光集成电路设计有限公司 | 获取并行计算任务进度的方法及系统 |
CN112433914B (zh) * | 2020-11-26 | 2023-06-13 | 成都海光集成电路设计有限公司 | 获取并行计算任务进度的方法及系统 |
CN112685159A (zh) * | 2020-12-30 | 2021-04-20 | 深圳致星科技有限公司 | 基于fpga异构处理系统的联邦学习计算任务处理方案 |
CN113177211A (zh) * | 2021-04-20 | 2021-07-27 | 深圳致星科技有限公司 | 用于隐私计算的fpga芯片、异构处理系统及计算方法 |
CN113553191A (zh) * | 2021-09-17 | 2021-10-26 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的异构处理系统 |
CN113553191B (zh) * | 2021-09-17 | 2022-01-04 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的异构处理系统 |
US11676074B2 (en) | 2021-09-17 | 2023-06-13 | Clustar Technology Co., Ltd. | Heterogeneous processing system for federated learning and privacy-preserving computation |
Also Published As
Publication number | Publication date |
---|---|
CN111831330B (zh) | 2022-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831330B (zh) | 用于联邦学习的异构计算系统设备交互方案 | |
EP3667496B1 (en) | Distributed computing system, data transmission method and device in distributed computing system | |
CN111813526A (zh) | 用于联邦学习的异构处理系统、处理器及任务处理方法 | |
US11640247B2 (en) | Providing service address space for diagnostics collection | |
CN112685159B (zh) | 基于fpga异构处理系统的联邦学习计算任务处理方案 | |
CN112000598B (zh) | 用于联邦学习的处理器、异构处理系统及隐私数据传输方法 | |
CN102708121A (zh) | 异构源上的动态分布式查询执行 | |
EP3844620A1 (en) | Method, apparatus, and system for an architecture for machine learning acceleration | |
US20140143524A1 (en) | Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus | |
WO2017173618A1 (zh) | 压缩数据的方法、装置和设备 | |
CN115033188B (zh) | 一种基于zns固态硬盘的存储硬件加速模块系统 | |
CN114780564A (zh) | 数据处理方法、数据处理装置、电子设备和存储介质 | |
US10277667B2 (en) | Method and apparatus for executing application based on open computing language | |
CN112540858B (zh) | 任务处理方法、服务器、客户端及系统 | |
CN111290701B (zh) | 数据读写控制方法、装置、介质和电子设备 | |
US11481255B2 (en) | Management of memory pages for a set of non-consecutive work elements in work queue designated by a sliding window for execution on a coherent accelerator | |
US20220067872A1 (en) | Graphics processing unit including delegator and operating method thereof | |
CN113076180A (zh) | 上行数据通路的构建方法及数据处理系统 | |
US20240012678A1 (en) | Queue consolidation and peer-to-peer quantum workload stealing | |
CN116648694A (zh) | 芯片内的数据处理方法及芯片 | |
Smith | Ship Detection: Parameter Server Variant | |
KR101590719B1 (ko) | 빅 데이터 분석을 위한 웹 서비스 간 데이터 전달 방법 및 구조 | |
CN116263642A (zh) | 请求处理方法、电子设备及闪存芯片 | |
KR20210043762A (ko) | 딥러닝 연산에서의 인-메모리 그리드 운용 방법 및 장치 |
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 |