CN116069480B - 一种处理器及计算设备 - Google Patents
一种处理器及计算设备 Download PDFInfo
- Publication number
- CN116069480B CN116069480B CN202310353909.4A CN202310353909A CN116069480B CN 116069480 B CN116069480 B CN 116069480B CN 202310353909 A CN202310353909 A CN 202310353909A CN 116069480 B CN116069480 B CN 116069480B
- Authority
- CN
- China
- Prior art keywords
- computing
- task
- module
- calculation
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种处理器及计算设备,其中,处理器包括前端控制引擎、第一级命令网络和多个计算集群,前端控制引擎包括任务调度模块以及多个第一级任务分发模块,每个计算集群中包括多个计算模块,其中,任务调度模块被配置为将计算任务发送给空闲的第一级任务分发模块;每个第一级任务分发模块用于将接收到的计算任务分解成多个计算子任务,并通过第一级命令网络将计算子任务发送给一个或多个目标计算集群;每个所述目标计算集群被配置为将接收到的计算子任务分解为多个计算工作组,并将计算工作组发送给目标计算集群中的目标计算模块执行。本发明的处理器通过两级计算任务的分解和分发,减少了控制逻辑和芯片面积,提升了处理器的任务执行效率。
Description
技术领域
本发明涉及处理器领域,具体来说,涉及并行处理任务的处理器领域,更具体地说,涉及一种采用多级运算任务分发处理机制的处理器及计算设备。
背景技术
近年来,以深度学习为代表的神经网络算法在诸如智慧城市、电商推荐、大数据分析、自动驾驶、语义识别等各个领域得到了广泛应用,以神经网络为主的图像处理、目标检测、自然语言处理等技术促进了各个领域的发展。其中,深度学习算法具有参数多和并行计算要求高的特点。而通用图形处理器(General Purpose Graph Processing Unit ,简称GPGPU)由于具有众多并行的计算核心和极高的可编程性,成为了加速神经网络算法的首选芯片架构。
随着半导体工艺的发展,单位面积的芯片可以容纳更多的晶体管。基于此,为了满足大算力的需求,通用图形处理器的计算核心数目逐渐增多,从几个增加到几十,甚至上百。但是大量的计算核心也给计算任务的分配和调度提出了挑战。由于计算核心较多,计算任务分发模块不能及时向每个计算核心分发计算任务,会造成计算核心的空闲,计算核心的利用率较低,从而降低并行计算的执行效率。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种新的处理器和计算设备。
根据本发明的第一方面,提供一种处理器,所述处理器包括前端控制引擎、第一级命令网络和多个计算集群,所述前端控制引擎包括任务调度模块以及多个第一级任务分发模块,每个所述计算集群中包括多个计算模块;所述任务调度模块被配置为基于预设的调度规则,将计算任务以及计算任务的控制信息发送给空闲的第一级任务分发模块;每个所述第一级任务分发模块用于将接收到的计算任务分解成多个计算子任务,并通过第一级命令网络将分解得到的所述计算子任务发送给所述计算任务的控制信息中指定的一个或多个目标计算集群;每个所述目标计算集群被配置为将接收到的计算子任务分解为多个计算工作组,并将分解得到的所述计算工作组发送给所述目标计算集群中的目标计算模块执行。
优选的,所述第一级任务分发模块的数量与计算集群数量一致。
优选的,所述前端控制引擎还包括多个计算集群资源记录模块,一个计算集群资源记录模块用于记录一个计算集群的计算任务信息存储资源和计算子任务存储资源,并基于计算集群中的计算子任务完成情况更新记录。
优选的,所述任务调度模块包括:任务缓存单元、任务调度单元、任务发送单元,任务缓存单元用于存储多个计算任务以及每个计算任务的信息;任务调度单元,用于根据计算任务的信息,从所述任务缓存单元中选取与第一级任务分发模块当前对应的目标计算集群不重叠的计算任务作为待分发计算任务;任务发送单元,用于将所述任务调度单元选取的待分发计算任务,发送给与所述待分发计算任务的目标计算集群不重叠且有空闲的第一级任务分发模块。
优选的,所述每个第一级任务分发模块包括:第一级计算任务信息存储单元,用于存储接收到的计算任务信息,所述计算任务信息包括计算任务的描述信息和计算任务的控制信息,其中,所述计算任务的控制信息用于指示计算任务的优先级、目标计算集群和目标计算模块,所述计算任务的描述信息包括计算任务三维结构的长度、计算子任务的大小;计算集群分配单元,用于根据计算任务的控制信息给计算任务分配一个或多个计算集群作为目标计算集群,并将计算任务的控制信息发送给分配的目标计算集群;计算任务分解单元,用于根据计算任务的描述信息中描述的计算任务三维结构的长度以及计算子任务的大小,将计算任务分解为多个计算子任务;计算子任务发送单元,用于查询计算集群资源记录模块的记录,并将所述计算任务分解单元分解后的计算子任务通过所述第一级命令网络发送到已经发送过计算任务控制信息且有剩余资源能够接受新的计算子任务的目标计算集群。
优选的,所述计算任务分解单元被配置为:选择计算任务的三维结构中的一个方向为基准方向;以计算任务的描述信息中预设的计算子任务大小为分解单位,沿基准方向按行对计算任务的三维结构进行遍历,得到多个计算子任务的信息,其中,遍历过程中每查找到计算工作组的数量与计算子任务大小匹配时,得到一个计算子任务,通过所述计算子任务发送单元发送一次计算子任务的起点和大小,并记录下次计算子任务的起点直至遍历完计算任务;其中,当计算任务结尾处的剩余计算工作组数目不满足预设的计算子任务大小时,以剩余计算工作组的数目作为最后一个计算子任务的大小,得到该计算任务的最后一个计算子任务。
优选的,所述每个计算集群包括:第二级任务分发模块、第二级命令网络、多个计算模块,其中,所述第二级任务分发模块用于将接收到的计算子任务分解为多个计算工作组,并通过第二级命令网络将分解得到的计算工作组发送给计算任务的控制信息指示的多个目标计算模块进行执行。
优选的,所述第二级任务分发模块包括:第二级计算任务信息存储单元,用于存储接收到的计算任务信息;计算子任务存储单元,用于存储接收到的一个或多个计算子任务;计算模块分配单元,用于根据计算任务信息为对应的计算子任务分配一个或多个目标计算模块,并发送计算任务的信息到目标计算模块;计算子任务分发单元,用于从所述计算子任务存储单元中选取计算子任务,并将其分解为多个计算工作组以及将分解得到的计算工作组发送给计算模块分配单元分配的多个目标计算模块进行执行;多个计算模块资源记录单元,其中,一个计算模块资源记录单元用于记录一个计算模块的资源利用情况。
优选的,所述计算子任务分发单元被配置为根据计算模块资源记录单元记录的信息,依据所属计算集群中各计算模块的当前资源利用率,将分解得到的计算工作组发送给所属计算集群中的多个目标计算模块。
优选的,所述每个第一级任务分发模块被配置为:完成计算任务分解时,发送资源释放命令到该计算任务的目标计算集群,并在收集到所有目标计算集群的释放命令完成信号后,向任务调度模块发送释放命令完成信号;每个所述计算集群中的第二级任务分发模块被配置为:接收第一级任务分发模块的资源释放命令,在该计算任务的计算工作组发送完毕后,向目标计算模块发送释放命令,并在收集到该计算任务的所有目标计算模块的释放命令完成信号后,向第一级任务分发模块发送释放命令完成信号;所述计算模块被配置为:完成计算工作组的执行后向所属计算集群的第二级任务分发模块返回释放命令完成信号。
根据本发明的第二方面,提供一种多级任务分发方法,应用于本发明第一方面所述的处理器,所述方法包括:获取计算任务,并在前端控制引擎中将计算任务分解为多个计算子任务,以及将计算子任务通过第一级命令网络发送给计算任务的控制信息中指定的计算集群;在计算集群中将计算子任务分解为多个计算工作组,并将计算工作组发送给计算集群中的计算模块进行执行。
根据本发明的第三方面,提供一种计算设备,包括:主机,以及与所述主机连接的一个或多个前述第一方面提供的处理器。
与现有技术相比,本发明的优点在于:在处理器中以多级运算任务分发的机制来减低处理器中的任务分发模块和命令网络的压力,有利于将计算任务中的计算工作组及时分发到处理器中的计算模块进行处理,有利于提升处理器中硬件计算资源的利用率。本发明的处理器通过两级计算任务的分解和分发,减轻了第一级任务分发模块的负担,减少和避免了第一级命令网络传输大量的计算工作组。并且硬件内部通过采用以计算任务为单位交互完成信号的方式避免了对每个计算工作组的完成状态计数,有利于减少传递每个计算工作组完成信号的带宽,也减少了控制逻辑,减少芯片面积,有利于提升处理器的任务执行效率。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明实施例提供的一个计算任务三维结构示意图;
图2为根据本发明实施例提供的一个处理器结构示意图;
图3为根据本发明实施例提供的一个任务调度模块结构示意图;
图4为根据本发明实施例提供的一个第一级任务分发模块结构示意图;
图5为根据本发明实施例提供的一个计算任务分解原理示意图;
图6为根据本发明实施例提供的一个第二级任务分发模块结构示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
为了更好的理解本发明,首先介绍一下计算任务的结构。
在现有的并行计算架构生态(例如CUDA、OpenCL等)下,计算任务一般以三维结构表示,分为X方向、Y方向和Z 方向。计算任务的每一个元素表示一个计算工作组。计算工作组一般也表示为三维结构,该结构可以进一步分解成若干个计算线程,在硬件计算核心(本发明称之为计算模块)上读取指令并执行。
为了给主机(host)端提供并行计算服务,具有多个计算核心的并行处理器在被调用来执行内核(kernel)函数时,需要进行计算任务的分发,为处理器中的硬件计算核心分配计算工作组(同一工作组中的线程可共享计算核心中的一块存储区域)。对于具有大量计算工作组的计算任务,处理器的计算任务分发模块是将计算任务以计算工作组为单位分发给硬件计算核心处理,计算核心会将计算工作组进一步分解为若干个计算线程,并为相应的计算线程读取、执行指令。
正如背景技术中所述的,现有的处理器中由于计算核心较多,且计算任务中的计算工作组数量较多,计算任务分发模块不能及时向每个计算核心分发计算任务,会造成计算核心的空闲,计算核心利用率较低,从而降低并行计算的执行效率。
此外,计算任务分发模块需要追踪每个计算核心的状态,从而做到计算任务负载均衡,但这会增加计算任务分发模块的设计复杂度。另外,现有技术中也存在由于分发计算任务的命令网络繁忙而不能及时向计算核心发送计算任务而造成计算资源空闲的情况。
有鉴于此,本发明提出一种多级运算任务分发的方案,在计算任务和计算工作组之间,引入了计算子任务的层次,通过将计算任务进行多层次的分解以及对应的多层次分发,来降低任务分发模块的设计复杂度,并提供了能够支持多级运算任务分发的处理器硬件结构,有利于提高硬件计算核心的并行处理效率。需要说明的是,本发明实施例中以包含多个计算模块的计算集群作为计算子任务的分发对象,计算集群可将接收到的计算子任务进一步分解成多个计算工作组,并将计算工作组发送给对应的计算模块处理。本申请的任务分发是用于芯片内部的,是处理器芯片内部硬件结构做的分解与发送,可以改善硬件芯片内部的调度分发问题。
根据本发明对于计算任务的一个示例,如图1所示,该例中,一个计算任务的X方向的长度为8,意味着有8个计算工作组,Y方向的长度为4,意味着有4个计算工作组;Z方向的长度为3,意味着有3个计算工作组,这个计算任务的计算工作组总数目是8*4*3=96。若采用现有技术的处理器架构处理具有大量计算工作组的计算任务,计算任务分发模块只能将计算任务以计算工作组为单位进行分发,但是由于计算任务中的计算工作组数量较多,计算任务分发模块无法保证及时向每个计算核心分发计算任务,会造成计算资源的空闲;并且计算任务分发模块需要追踪每一个计算核心的状态,计算任务分发模块的设计复杂度高,而且在进行大量的计算工作组分发过程中,也容易造成分发计算任务的命令网络繁忙。
因此,本发明提出一种多级任务分发的方案,概括来说,本发明在处理器内部针对计算任务进行两级分解和分发,其中,在处理器的前端控制引擎中进行第一级分解,将计算任务分解成多个计算子任务并进行第一级任务分发,以将计算子任务分发到计算集群,然后在计算集群中针对计算子任务进行第二级分解,将计算子任务分解成多个计算工作组并分发到计算模块中进行执行,以及设计了与多级任务分发相适应的处理器架构。其中,在将计算任务分解为计算子任务进行第一级任务分发时,具有多个计算核心的计算集群可视为计算子任务对应的计算核心,在计算集群中将计算子任务分解为计算工作组进行第二级任务分发时,计算集群中的计算模块作为计算工作组对应的计算核心。
下面结合附图和实施例详细说明本发明。
根据本发明的一个实施例,如图2所示,本发明提供一种处理器,该处理器是具有多个计算模块的并行处理器。所述处理器包括前端控制引擎、第一级命令网络和多个计算集群(如图2中的计算集群0、计算集群1、……计算集群M),所述前端控制引擎包括任务调度模块以及多个第一级任务分发模块,每个所述计算集群中包括多个计算模块(如计算模块0、计算模块1、……计算模块K)。本申请不对每个计算集群中的计算模块的数量和类型进行限制。
其中,前端控制引擎主要负责与主机进行交互,可用于读取和解析来自主机的计算任务,并产生和分发计算子任务。处理器可通过读取和解析命令列表中的硬件命令确定计算任务,计算任务的硬件执行命令通常以命令列表的方式被存储在该处理器对应的存储资源中,在一些应用场景下,一份命令列表中可以有多个计算任务的命令。在前端控制引擎中对计算任务的分解和发送,可称为第一级任务分发;第一级命令网络承担通信、信息传输功能,其将前端控制引擎和各个计算集群进行连接,使得前端控制引擎可通过第一级命令网络将分解得到的计算子任务分发到计算集群;计算集群负责计算子任务的分解和计算工作组的执行,在计算集群中对计算子任务的分解和发送,可称为第二级分发,由此实现多级任务分发。
下面结合附图对本申请实施例提供的一种处理器进行详细介绍。
1、前端控制引擎
作为一种具体实施方式,仍旧参照图2所示,处理器的前端控制引擎可包括:任务调度模块、多个第一级任务分发模块(如第一级任务分发模块0、第一级任务分发模块1、……第一级任务分发模块N)、计算集群资源记录模块。所述任务调度模块可用于获取计算任务的信息,以及用于将来自主机的计算任务通过空闲的第一级任务分发模块发送到计算集群。第一级任务分发模块用于将计算任务分解为计算子任务,并将计算子任务发送给对应的计算集群。计算集群资源记录模块用于追踪记录每个计算集群的状态。所有第一级任务分发模块可共享计算集群资源记录模块,从而可以检查每个计算集群的资源状态,例如可检查计算集群上运行的计算任务以及计算子任务是否完成。下面分别介绍前端控制引擎中的各个组成部分。
1.1任务调度模块
所述任务调度模块用于通过设定的调度算法(即预设的调度规则)选择一个计算任务发送给空闲的第一级任务分发模块,其中,调度规则可以是先进先出的规则,也可以是指定优先级的规则,可根据需求和应用场景进行设置各个计算任务的分发顺序,此处不做限定。
根据本发明的一个实施例,如图3所示,所述任务调度模块可包括:任务缓存单元、任务调度单元、任务发送单元。
其中,所述任务缓存单元用于缓存多个来自主机的计算任务,并存储计算任务的信息。计算任务的信息分为描述信息和控制信息,其中,计算任务的描述信息可包括计算任务三维结构的长度、计算子任务的大小、以及计算任务的指令地址、计算工作组的描述信息等,计算任务的控制信息可用于指示计算任务的优先级、目标计算集群和目标计算模块等。其中,一个计算任务需要在哪些计算集群上执行,这部分计算集群就可成为该计算任务的目标计算集群,计算任务中的计算工作组需要在哪些计算模块上执行,这部分计算模块就可成为目标计算模块。实际应用场景下,由于芯片的良率问题,可能导致实际芯片中部分计算模块甚至部分计算集群不可用,通过计算任务的控制信息来指定用于执行计算任务的目标计算集群和目标计算模块,可以提高芯片的利用率。
所述任务调度单元可从任务缓存单元中选取一个计算任务,选取计算任务时可判断计算任务的优先级、检查该计算任务对应的目标计算集群是否和第一级任务分发模块当前对应的目标计算集群相重叠,从而选出优先级高,且,与第一级任务分发模块当前对应的目标计算集群不重叠的待分发计算任务。其中,所谓的第一级任务分发模块当前对应的目标计算集群是指第一级任务分发模块当前正在处理的计算任务对应的目标计算集群。所述任务发送单元可用于为任务调度单元选取的计算任务选择一个空闲的第一级任务分发模块,并将计算任务发给被选的该第一级任务分发模块。即,被选择的第一任务分发模块需要满足的条件包括:当前有空闲,且,该第一任务分发模块当前正在处理的计算任务对应的目标计算集群与待分发计算任务对应的目标计算集群不重叠。
其中,如前面所述的,计算任务的控制信息中指明了计算任务的目标计算集群以及目标计算模块。如果一个计算任务的控制信息中指明计算任务需要在所有计算集群上执行,那么第一级任务分发模块就会将该计算任务产生的计算子任务分发给所有计算集群。如果一个计算任务的控制信息中指明该计算任务只需要在一个计算集群上执行,那么第一级任务分发模块根据计算任务控制信息,只会把该计算任务对应的计算子任务分发给这一个计算集群。由于产生和分发计算子任务需要时间,特别是计算任务特别大的时候,为了保证其他计算集群可以得到计算任务,本发明通过多个第一级任务分发模块方式实现计算任务的并行分发。任务调度模块可记录每个第一级任务分发模块处理的计算任务对应的目标计算集群。如果下一个计算任务的目标计算集群和第一级任务分发模块当前正在处理的计算任务的目标计算集群相重合,所述任务发送单元将不发送该计算任务,会优先选择目标计算集群不重合的计算任务发送给空闲的第一级任务分发模块。这样做的好处是简化了计算集群里面的第二级任务分发模块的设计,这样对第二级任务分发模块而言,所有计算任务不会交叉,一段时间内,处理的所有计算子任务一定来自同一计算任务。
1.2第一级任务分发模块
为了保证每个计算集群能够独立工作,提高计算任务并行分发效率,优选的,本发明设计的第一级任务分发模块的数量与计算集群的数量一致,即仍然如图2中所示,第一级任务分发模块的数量N+1与计算集群的数量M+1相等,即N=M。例如,可以均为2个,4个,8个等。
其中,所述每个第一级任务分发模块用于将接收到的计算任务分解成多个计算子任务,并通过第一级命令网络将计算子任务发送给计算任务的控制信息中指明的一个或多个目标计算集群。当计算任务特别大、计算工作组特别多的时候,由于分解产生和分发计算子任务都需要时间,在通过设置多个第一级任务分发模块来进行并行分发(含分解)处理的情况下,可以提高计算任务并行分发的效率,保障其他计算集群能够尽快被分到计算子任务,减少计算集群的资源空闲。
根据本发明的一个实施例,如图4所示,每个第一级任务分发模块可包括:第一级计算任务信息存储单元、计算集群分配单元、计算任务分解单元、计算子任务发送单元。其中,所述第一级计算任务信息存储单元用于存储接收到的计算任务信息(含计算任务的描述信息和控制信息),并将计算任务的控制信息发送给计算集群分配单元,将计算任务的描述信息发送给计算任务分解单元。
所述计算集群分配单元用于根据计算任务的控制信息给该计算任务分配一个或多个目标计算集群,并将计算任务的控制信息发送给分配的目标计算集群。所述计算任务分解单元用于根据计算任务的描述信息中的计算子任务大小,将计算任务分解为多个计算子任务。所述计算子任务发送单元用于查询计算集群资源记录模块的记录内容从而得到各计算集群的状态,并根据各计算集群的状态,将所述计算任务分解单元分解后得到的计算子任务,通过所述第一级命令网络发送到已经发送过计算任务控制信息且有剩余资源可接受新的计算子任务的目标计算集群。即,计算子任务发送单元需要将计算子任务发送到满足条件的目标计算集群,选取的计算集群需满足两个条件:已经被发送过计算任务的控制信息;有资源能够接收新的计算子任务。
根据本发明的一个实施例,为了方便多级运算任务分发模块间的传输,本发明中的计算子任务采用一维结构,相比三维结构,传输一维结构的信息会少很多,可节省传输带宽。
根据本发明的一个实施例,为了方便对计算任务的分解,所述计算任务分解单元在分解计算任务时,每次选择计算任务三维结构中的一个方向作为基准方向按行进行遍历,本发明中为了方便描述,以X方向作为基准方向为例进行说明。以图1中具有96个计算工作组的计算任务的三维结构为例,以一个计算子任务的大小为9个计算工作组为例进行展开说明,其中,计算子任务的大小控制了每次分解产生计算子任务时,该计算子任务中的计算工作组的数目。遍历时,对X方向的大小(X方向每行元素中计算工作组的数量)和计算子任务的大小进行比较,如果当前行中未被查找的计算工作组的总数大于计算子任务的长度,那么直接发送该计算子任务的起点和大小,并记录该计算子任务的终点位置作为下次发送的计算子任务的三维结构起点;如果当前行中未被查找的计算工作组的总数小于设定的计算子任务的大小,那么继续下一行在X方向查找,直到本次查找到的所有计算工作组的数目和等于设定的计算子任务的大小,并基于此记录下一次计算子任务的起点;如果计算任务结尾处的剩余计算工作组数目不能满足设定的计算子任务的大小(例如实际剩余6个计算工作组,但设定的子任务大小为9个计算工作组),直接发送剩余计算工作组的数目作为该计算任务的最后一个计算子任务的大小。每次传输计算子任务时,第一级任务分发模块需要告诉执行第二级任务分发的计算集群该计算子任务的三维起点和计算子任务的大小,而且在传输计算子任务之前,第一级任务分发模块中的计算子任务发送单元会将当前计算任务的三维结构信息传递给计算集群,这个信息主要包括三维结构各个方向的长度,使得计算集群基于计算任务的三维结构信息,即可根据计算子任务的三维起点和计算子任务的大小获得计算子任务对应的多个计算工作组。如图5所示,计算子任务的大小为9,从X方向开始遍历,第一个计算子任务的三维起点是(0,0,0),该计算子任务被分解产生的计算工作组在整个计算任务中对应的坐标位置分别是(0,0,0)、(1,0,0)、(2,0,0)、(3,0,0)、(4,0,0)、(5,0,0)、(6,0,0)、(7,0,0)、(0,1,0);第二个计算子任务的三维起点是 (1,1,0),产生的计算工作组坐标分别是(1,1,0)、(2,1,0)、(3,1,0)、(4,1,0)、(5,1,0)、(6,1,0)、(7,1,0)、(0,2,0)、(1,2,0)。当结尾部分剩余的计算工作组数目不能满足计算子任务的固定大小,那么最后一个计算子任务的大小就是实际剩余的计算工作组的数目,比如图5例子中,前十个计算子任务的大小是9个计算工作组,第十一个计算子任务的大小是6个计算工作组。在计算集群已知计算任务三维结构的情况下,第一级任务分发模块只需要将每个计算子任务的三维起点(例如(0,0,0)、(1,1,0)等)以及计算子任务的长度(例如9、6)发送给计算集群即可,计算集群即可基于此获取计算子任务对应的每个计算工作组的三维坐标。
1.3计算集群资源记录模块
本发明中为每个计算集群设计了一个资源记录模块,每个计算集群资源记录模块用于记录其对应的计算集群中的计算任务信息存储资源和计算子任务存储资源,并基于计算集群中的计算子任务完成情况更新记录。其中,所述计算集群资源记录模块会追踪计算集群的计算任务信息存储资源和计算子任务存储资源的情况,所有第一级任务分发模块共享计算集群资源记录模块,从而可以检查每个计算集群的资源状态,可以得知各计算集群的资源利用情况。
三、计算集群
仍旧参照图2,所述每个计算集群包括第二级任务分发模块、第二级命令网络、多个计算模块。其中,所述第二级任务分发模块用于将接收到的计算子任务分解为多个计算工作组,所述第二级命令网络连接第二级任务分发模块和各个计算模块,使得第二级任务分发模块可通过第二级命令网络将分解得到的计算工作组发送给计算任务的控制信息指示的多个目标计算模块,所述计算模块用于执行计算工作组。由于计算模块是本领域技术人员已知的结构,本发明中不做赘述,下面重点介绍一下第二级任务分发模块。
根据本发明的一个实施例,如图6所示,所述第二级任务分发模块包括:第二级计算任务信息存储单元、计算子任务存储单元、计算模块分配单元、计算子任务分发单元、多个计算模块资源记录单元。
其中,所述第二级计算任务信息存储单元用于存储接收到的计算任务信息(包括控制信息和描述信息),每个第一级任务分发模块将计算任务分发到不同的计算集群,所述第二级计算任务信息存储单元仅存储其所在计算集群接收到的来自多个第一级任务分发模块的计算子任务对应的计算任务信息,且其记录的计算任务信息会在计算集群资源记录模块中更新,当第一级任务分发模块向某个计算集群的第二级计算任务信息存储单元发送一个计算任务信息时,对应计算集群资源记录模块的计算任务计数器加一,当该信息被读取后,第二级计算任务信息存储单元会通知对应计算集群资源记录模块的计算任务计数器减一。
所述计算子任务存储单元用于存储其所在计算集群接收到的一个或多个计算子任务,且其记录的计算子任务信息也会在计算集群资源记录模块中更新,当第一级任务分发模块向某个计算集群的计算子任务存储单元发送一个计算子任务时,对应计算集群资源记录模块的计算子任务计数器加一,当该计算子任务被读取后,计算子任务存储单元会通知对应计算集群资源记录模块的计算子任务计数器减一。
所述计算模块分配单元用于根据计算任务信息(此处指控制信息)为第二级任务分发模块接收到的计算子任务分配一个或多个目标计算模块,并发送计算任务的信息到目标计算模块,其中,此处发送的计算任务的信息包括计算任务的指令地址和计算工作组的描述信息,用于提供给计算模块来根据指令地址为计算工作组中的线程读取并执行对应的指令;所述计算子任务分发单元用于从所述计算子任务存储单元中读取计算子任务,并将其分解为多个计算工作组,以及将计算工作组根据计算任务信息发送计算模块分配单元分配的多个目标计算模块进行执行。
每个所述计算模块资源记录单元用于记录对应计算模块的资源利用情况,其中,一个计算模块资源记录单元用于记录一个计算模块的资源利用情况,如图6中所示,以四个计算模块为例,第二级任务分发模块中包括四个计算模块资源记录单元(分别为计算模块0资源记录单元、计算模块1资源记录单元、计算模块2资源记录单元、计算模块3资源记录单元)。优选的,可根据每个计算模块资源记录单元记录的信息,将计算工作组优先发送给当前资源利用率低的计算模块,以保障同一个集群内的计算模块负责均衡。其中,可以将计算工作组优先发送给资源利用率低于预设值的一个或多个目标计算模块,也可以将计算工作组发送给当前资源利用率最低的一个或多个目标计算模块。
可以理解的是,本申请提供的处理器具有多个计算核心,能够处理具有大量计算工作组的计算任务,提供较好的并行计算能力,实际应用中,处理器可被呈现为具有多个计算核心的图形处理器或通用图形处理器,或其他具有类似架构(多个计算核心)的并行处理器。本申请提供的处理器可以被应用在智能手机、平板、多媒体设备、物联网终端、边缘计算盒子、车载设备、可穿戴电子设备等终端设备中,也可以被应用在服务器或嵌入式计算机中。
通过上述各实施例对处理器的介绍可知,基于上述实施例的处理器进行多级计算任务分发的流程可概括为如下几个步骤:
步骤S1、前端控制引擎的任务调度模块从计算任务缓存单元中选择一个计算任务,根据该计算任务的控制信息,检查该计算任务的目标计算集群是否和第一级任务分发模块当前对应的目标计算集群重叠(和每一个第一级任务分发模块都进行判断)。如果不重叠,发送该计算任务到一个空闲的第一级任务分发模块;如果重叠,则选择其他的计算任务。这样可以并行执行多个目标计算集群不重叠的计算任务。
步骤S2、第一级任务分发模块先根据计算任务控制信息分配一个或多个计算集群(目标计算集群),并将计算任务的信息发送给这些计算集群。第一级任务分发模块将计算任务分解为多个计算子任务,并根据各个计算集群的资源情况,来选取有资源可接收新的计算子任务的计算集群。通过第一级命令网络将计算子任务发给选择的计算集群。这样的效果是:通过计算集群资源记录模块查看各个计算集群的资源情况来得知各计算集群的状态,从而进行任务分发,一方面可以避免第一级命令网络阻塞,另一方面可以做到计算集群的负载均衡。
步骤S3、第二级任务分发模块将计算任务信息发送给计算模块,以及分解计算子任务为计算工作组,并通过第二级命令网络发给计算模块。
计算模块有自己的缓存来收取计算工作组,第二级任务分发模块通过检查计算模块的资源利用情况,来分发计算工作组,优先将计算工作组发送给资源利用率低的计算模块,这样可以实现计算模块的负载均衡。通过两级任务来对计算工作组进行分发,减轻了单级任务分发模块的负担,减少和避免了全部用一级命令网络来传输大量的计算工作组。
步骤S4、计算模块从缓存中读取计算工作组,并将计算工作组分解成计算线程,读取对应的指令进行执行。
可选的,计算模块在将计算工作组分解为计算线程后,也可以将分解得到的计算线程再组成线程束(warp),为线程束读取并执行指令。计算模块的具体内容不应理解为对本申请的限制。
其中,需要说明的是,当第一级任务分发模块完成计算任务的分解时,可发送资源释放命令到目标计算集群;各个计算集群的第二级任务分发模块收到释放命令后,等待该计算任务的计算工作组发送完毕,然后向目标计算模块发送释放命令;计算模块在计算工作组执行完毕后,返回释放命令完成信号到第二级任务分发模块;第二级任务分发模块收集到该计算日任务对应的所有目标计算模块的释放命令完成信号后,返回所属计算集群的释放命令完成信号到前端控制引擎的任务调度模块;当任务调度模块收到所有目标计算集群的释放命令完成信号,表明该计算任务执行完成。
与现有技术相比,本发明通过两级计算任务的分解和分发,减轻了第一级任务分发模块的负担,减少和避免了第一级命令网络传输大量的计算工作组。并且通过采用以计算任务为单位交互完成信号的方式避免了对每个计算工作组的完成状态计数,减少了传递每个计算工作组完成信号的带宽,也减少了控制逻辑,有利于减少处理器的芯片面积。
除了实施例外,本申请实施例还提供一种计算设备,包括主机和前述的处理器。主机与该处理器之间可以采用总线连接。该处理器可接收来自主机的计算任务,并对计算任务进行多级分解和分发,将计算任务中的计算工作组及时分发到处理器中的计算模块,以便于计算模块能够尽快将计算工作组分解为计算线程,并为计算线程读取和执行硬件机器指令。
该计算设备可以是采用CUDA(Compute Unified Device Architecture, 统一计算设备架构)、OpenCL(Open Computing Language, 开放计算语言)等并行计算平台和编程模式的任意电子设备。
本申请提供的具有多个计算集群、多个计算模块并采用多级任务分发机制的处理器可作为主机的协处理器,在得到计算任务后,在内部以硬件支持的多级任务分发机制进行高效任务处理。
通过本申请的方案,可以从硬件层面对处理器内部需要分发的计算任务进行多级分发,有利于提升处理器硬件内部计算核心的利用率,且分发过程无需占用较多带宽。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以基于并行的硬件结构并发执行,甚至改变顺序,只要能够实现所需要的功能即可。在不冲突、不矛盾的情况下,前述各实施例或具体实施方式或各实施例的特征可任意组合,实施原理和技术效果可相互参照。
本发明可以是系统、方法和/或计算机程序涉及的产品,或者任意二者的组合。计算机程序涉及的产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、机械编码设备,以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (11)
1.一种处理器,其特征在于,所述处理器包括前端控制引擎、第一级命令网络和多个计算集群,所述前端控制引擎包括任务调度模块以及多个第一级任务分发模块,每个所述计算集群中包括多个计算模块;
所述任务调度模块被配置为基于预设的调度规则,将计算任务以及计算任务的控制信息发送给空闲的第一级任务分发模块;
每个所述第一级任务分发模块用于将接收到的计算任务分解成多个计算子任务,并通过第一级命令网络将分解得到的所述计算子任务发送给所述计算任务的控制信息中指定的一个或多个目标计算集群;
每个所述目标计算集群被配置为将接收到的计算子任务分解为多个计算工作组,并将分解得到的所述计算工作组发送给所述目标计算集群中的目标计算模块执行。
2.根据权利要求1所述的处理器,其特征在于,所述任务调度模块包括:
任务缓存单元,用于存储多个计算任务以及每个计算任务的信息;
任务调度单元,用于根据计算任务的信息,从所述任务缓存单元中选取与第一级任务分发模块当前对应的目标计算集群不重叠的计算任务作为待分发计算任务;
任务发送单元,用于将所述任务调度单元选取的待分发计算任务,发送给与所述待分发计算任务的目标计算集群不重叠且有空闲的第一级任务分发模块。
3.根据权利要求1所述的处理器,其特征在于,所述前端控制引擎还包括多个计算集群资源记录模块,一个计算集群资源记录模块用于记录一个计算集群的计算任务信息存储资源和计算子任务存储资源,并基于计算集群中的计算子任务完成情况更新记录。
4.根据权利要求3所述的处理器,其特征在于,所述每个第一级任务分发模块包括:
第一级计算任务信息存储单元,用于存储接收到的计算任务信息,所述计算任务信息包括计算任务的描述信息和计算任务的控制信息,其中,所述计算任务的控制信息用于指示计算任务的优先级、目标计算集群和目标计算模块,所述计算任务的描述信息包括计算任务三维结构的长度、计算子任务的大小;
计算集群分配单元,用于根据计算任务的控制信息给计算任务分配一个或多个计算集群作为目标计算集群,并将计算任务的控制信息发送给分配的目标计算集群;
计算任务分解单元,用于根据计算任务的描述信息中描述的计算任务三维结构的长度以及计算子任务的大小,将计算任务分解为多个计算子任务;
计算子任务发送单元,用于查询计算集群资源记录模块的记录,并将所述计算任务分解单元分解后的计算子任务通过所述第一级命令网络发送到已经发送过计算任务控制信息且有剩余资源能够接受新的计算子任务的目标计算集群。
5.根据权利要求4所述的处理器,其特征在于,所述计算任务分解单元被配置为:
选择计算任务的三维结构中的一个方向为基准方向;
以计算任务的描述信息中预设的计算子任务大小为分解单位,沿基准方向按行对计算任务的三维结构进行遍历,得到多个计算子任务的信息,其中,遍历过程中每查找到计算工作组的数量与计算子任务的大小匹配时,确定一个计算子任务,通过所述计算子任务发送单元发送一次计算子任务的起点和大小,并记录下一个计算子任务的起点,直至遍历完计算任务;
其中,当计算任务结尾处的剩余计算工作组数目不满足预设的计算子任务大小时,以剩余计算工作组的数目作为该计算任务中最后一个计算子任务的大小,得到该计算任务的最后一个计算子任务。
6.根据权利要求1-5中任一项所述的处理器,其特征在于,所述每个计算集群包括:第二级任务分发模块、第二级命令网络、多个计算模块,其中,
所述第二级任务分发模块用于将接收到的计算子任务分解为多个计算工作组,并通过第二级命令网络将分解得到的计算工作组发送给计算任务的控制信息指示的目标计算模块进行执行。
7.根据权利要求6所述的处理器,其特征在于,所述第二级任务分发模块包括:
计算子任务存储单元,用于存储接收到的一个或多个计算子任务;
计算模块分配单元,用于根据计算任务的控制信息为对应的计算子任务分配一个或多个目标计算模块;
计算子任务分发单元,用于从所述计算子任务存储单元中选取计算子任务,并将其分解为多个计算工作组以及将分解得到的计算工作组发送给计算模块分配单元分配的目标计算模块进行执行;
多个计算模块资源记录单元,其中,一个计算模块资源记录单元用于记录一个计算模块的资源利用情况。
8.根据权利要求7所述的处理器,其特征在于,所述计算子任务分发单元被配置为根据计算模块资源记录单元记录的信息,依据所属计算集群中各计算模块的当前资源利用情况,将分解得到的计算工作组发送给所属计算集群中的多个目标计算模块。
9.根据权利要求8所述的处理器,其特征在于,
所述每个第一级任务分发模块被配置为:完成计算任务分解时,发送资源释放命令到该计算任务的目标计算集群,并在收集到所有目标计算集群的释放命令完成信号后,向任务调度模块发送释放命令完成信号;
每个所述计算集群中的第二级任务分发模块被配置为:接收第一级任务分发模块的资源释放命令,在该计算任务的计算工作组发送完毕后,向目标计算模块发送释放命令,并在收集到该计算任务的所有目标计算模块的释放命令完成信号后,向第一级任务分发模块发送释放命令完成信号;
所述计算模块被配置为:完成计算工作组的执行后向所属计算集群的第二级任务分发模块返回释放命令完成信号。
10.一种多级任务分发方法,其特征在于,应用于权利要求1-9中任一项所述的处理器,所述方法包括:
获取计算任务,并在前端控制引擎中将计算任务分解为多个计算子任务,以及将计算子任务通过第一级命令网络发送给计算任务的控制信息中指定的计算集群;
在计算集群中将计算子任务分解为多个计算工作组,并将计算工作组发送给计算集群中的计算模块进行执行。
11.一种计算设备,其特征在于,包括:
主机,以及与所述主机连接的一个或多个如权利要求1-9中任一项所述的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310353909.4A CN116069480B (zh) | 2023-04-06 | 2023-04-06 | 一种处理器及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310353909.4A CN116069480B (zh) | 2023-04-06 | 2023-04-06 | 一种处理器及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116069480A CN116069480A (zh) | 2023-05-05 |
CN116069480B true CN116069480B (zh) | 2023-06-13 |
Family
ID=86173524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310353909.4A Active CN116069480B (zh) | 2023-04-06 | 2023-04-06 | 一种处理器及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116069480B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116414541B (zh) * | 2023-05-26 | 2023-09-05 | 摩尔线程智能科技(北京)有限责任公司 | 兼容多种任务工作模式的任务执行方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
PL394750A1 (pl) * | 2011-05-04 | 2012-11-05 | Politechnika Slaska | Sposób i uklad do podzialu zadan realizowanych przez sterownik PLC pomiedzy jednostke centralna PLC i specjalizowany koprocesor sterownika PLC zrealizowany na bazie ukladu reprogramowalnego |
CN108009119A (zh) * | 2016-10-27 | 2018-05-08 | 三星电子株式会社 | 处理器和控制工作流的方法 |
CN108491263A (zh) * | 2018-03-02 | 2018-09-04 | 珠海市魅族科技有限公司 | 数据处理方法、数据处理装置、终端及可读存储介质 |
CN108804377A (zh) * | 2018-04-24 | 2018-11-13 | 桂林长海发展有限责任公司 | 一种总线任务处理方法及系统 |
CN109343939A (zh) * | 2018-07-31 | 2019-02-15 | 国家电网有限公司 | 一种分布式集群及并行计算任务调度方法 |
CN112527489A (zh) * | 2020-12-22 | 2021-03-19 | 税友软件集团股份有限公司 | 一种任务调度方法、装置、设备及计算机可读存储介质 |
CN114637594A (zh) * | 2020-12-15 | 2022-06-17 | 上海阵量智能科技有限公司 | 多核处理设备、任务分配方法、装置及存储介质 |
-
2023
- 2023-04-06 CN CN202310353909.4A patent/CN116069480B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
PL394750A1 (pl) * | 2011-05-04 | 2012-11-05 | Politechnika Slaska | Sposób i uklad do podzialu zadan realizowanych przez sterownik PLC pomiedzy jednostke centralna PLC i specjalizowany koprocesor sterownika PLC zrealizowany na bazie ukladu reprogramowalnego |
CN108009119A (zh) * | 2016-10-27 | 2018-05-08 | 三星电子株式会社 | 处理器和控制工作流的方法 |
CN108491263A (zh) * | 2018-03-02 | 2018-09-04 | 珠海市魅族科技有限公司 | 数据处理方法、数据处理装置、终端及可读存储介质 |
CN108804377A (zh) * | 2018-04-24 | 2018-11-13 | 桂林长海发展有限责任公司 | 一种总线任务处理方法及系统 |
CN109343939A (zh) * | 2018-07-31 | 2019-02-15 | 国家电网有限公司 | 一种分布式集群及并行计算任务调度方法 |
CN114637594A (zh) * | 2020-12-15 | 2022-06-17 | 上海阵量智能科技有限公司 | 多核处理设备、任务分配方法、装置及存储介质 |
CN112527489A (zh) * | 2020-12-22 | 2021-03-19 | 税友软件集团股份有限公司 | 一种任务调度方法、装置、设备及计算机可读存储介质 |
Non-Patent Citations (3)
Title |
---|
FPGA prototype design of Network on Chips;GaoMing Du et al.;《2008 2nd International Conference on Anti-counterfeiting, Security and Identification》;第1-4页 * |
并行微处理器系统的内部通信;王平 等;《微处理机》(第3期);第33-36页 * |
测控系统的集群并行计算的实现;李燕,徐冠;《桂林航天工业学院学报》;第350页,第354页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116069480A (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11789895B2 (en) | On-chip heterogeneous AI processor with distributed tasks queues allowing for parallel task execution | |
US11782870B2 (en) | Configurable heterogeneous AI processor with distributed task queues allowing parallel task execution | |
US10261806B2 (en) | Adaptive hardware configuration for data analytics | |
US8769034B2 (en) | Query performance data on parallel computer system having compute nodes | |
WO2021254135A1 (zh) | 任务执行方法及存储设备 | |
US20130312001A1 (en) | Task allocation optimization system, task allocation optimization method, and non-transitory computer readable medium storing task allocation optimization program | |
US10970805B2 (en) | Graphics processing unit operation | |
US9507633B2 (en) | Scheduling method and system | |
CN116069480B (zh) | 一种处理器及计算设备 | |
CN109799991B (zh) | 基于MapReduce框架分布式计算环境的源代码编译方法及系统 | |
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 | |
CN115880132A (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
CN103970714B (zh) | 用于共享功能逻辑的设备和方法及其可重配置处理器 | |
CN101341471B (zh) | 动态高速缓存管理的设备和方法 | |
CN118152084A (zh) | 云计算环境中spark集群多作业调度方法 | |
US11392388B2 (en) | System and method for dynamic determination of a number of parallel threads for a request | |
CN117215740A (zh) | 构建调度模型的方法和系统、调度目标任务的方法和系统 | |
CN111045959A (zh) | 一种基于存储优化的复杂算法变量映射方法 | |
CN114896295B (zh) | 大数据场景下的数据脱敏方法、脱敏装置及脱敏系统 | |
CN111443898A (zh) | 基于优先级队列与有限状态机的流程式控制软件设计方法 | |
CN108228323A (zh) | 基于数据本地性的Hadoop任务调度方法及装置 | |
CN116302504A (zh) | 线程块的处理系统、方法及相关设备 | |
CN115914237A (zh) | 一种边缘环境下的深度学习任务调度方法、设备及介质 | |
CN116483550A (zh) | 张量计算图的计算资源分配方法、装置和可读存储介质 | |
CN117093335A (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 |