CN112084031B - 一种进程分配方法、并行处理器及电子设备 - Google Patents

一种进程分配方法、并行处理器及电子设备 Download PDF

Info

Publication number
CN112084031B
CN112084031B CN202010963764.6A CN202010963764A CN112084031B CN 112084031 B CN112084031 B CN 112084031B CN 202010963764 A CN202010963764 A CN 202010963764A CN 112084031 B CN112084031 B CN 112084031B
Authority
CN
China
Prior art keywords
distribution
allocation
unit
allowance
hardware
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
Application number
CN202010963764.6A
Other languages
English (en)
Other versions
CN112084031A (zh
Inventor
袁庆
陈庆
蒋宇翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Haiguang Microelectronics Technology Co Ltd
Original Assignee
Chengdu Haiguang Microelectronics Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Haiguang Microelectronics Technology Co Ltd filed Critical Chengdu Haiguang Microelectronics Technology Co Ltd
Priority to CN202010963764.6A priority Critical patent/CN112084031B/zh
Publication of CN112084031A publication Critical patent/CN112084031A/zh
Application granted granted Critical
Publication of CN112084031B publication Critical patent/CN112084031B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Power Sources (AREA)
  • Image Processing (AREA)

Abstract

本申请涉及一种进程分配方法、并行处理器及电子设备,属于计算机技术领域。该方法应用于包括多个不同层级的硬件单元的并行处理器,每一层级的硬件单元中的进程分配单元均包括多个与下一层级的硬件单元一一对应的分配余量计数器;方法包括针对每一层的进程分配单元,该进程分配单元在向下一层级的硬件单元下发进程时,获取当前分配指针所指的当前分配余量计数器的分配余量;若当前分配余量计数器的分配余量大于预设阈值,该进程分配单元则将进程下发至当前分配余量计数器对应的硬件单元,并将该当前分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。该方法能在硬件单元出现物理性损坏时,动态的调配进程的分配。

Description

一种进程分配方法、并行处理器及电子设备
技术领域
本申请属于计算机技术领域,具体涉及一种进程分配方法、并行处理器及电子设备。
背景技术
随着计算机软件技术的发展,特别是人工智能(Artificial Intelligence,AI)、大数据等的发展,催生了对计算能力的***性需求。而并行处理器,如图形处理器(GraphicProcess Unit,GPU)和各类AI并行处理器的出现恰恰迎合了这方面的需求。通常而言,并行处理器中存在成百、上千个并行硬件单元,他们之间相互独立,协同工作,共同完成分配的计算任务。但是正是由于并行处理器的硬件单元众多,芯片晶体管数量通常为中央处理器(Central Processing Unit,CPU)的数十倍,其出现物理性MOS管损坏的机率也成比例上升。在并行处理器中存在多种不同的运算级别,对应不同级别的指令分配。当并行处理器中的部分硬件单元出现物理性的损坏或发生硬件关闭(mask)时,该硬件单元可能功能失效,但剩余硬件单元依旧能够进行计算,只是其计算能力存在一定的下降。
如果依旧按照通常轮询的方式进行不同级别的指令分配,容易造成出现物理性损坏的硬件单元的输入指令发生阻塞,导致并行处理器的功能下降。尤其是,如果进程之间存在一定的顺序,乱序计算将会导致指令工作效率的降低,并需要重新排序。
发明内容
鉴于此,本申请的目的在于提供一种进程分配方法、装置及电子设备,以改善,现有的进程分配方式容易导致部分硬件单元(发生物理性损坏或硬件关闭的硬件)的进程堆积,从而导致处理性能下降的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种进程分配方法,应用于并行处理器,所述并行处理器包括多个不同层级的硬件单元,每一层级的硬件单元均包括进程分配单元,每一层级的进程分配单元均包括多个与下一层级的硬件单元一一对应的分配余量计数器以及用于控制进程分配的分配指针,每个分配余量计数器均用于记录对应的硬件单元中剩余计算能力的相对值;所述方法包括:针对每一层的进程分配单元,该进程分配单元在向下一层级的硬件单元下发进程时,获取当前分配指针所指的当前分配余量计数器的分配余量;若所述当前分配余量计数器的分配余量大于预设阈值,该进程分配单元则将进程下发至所述当前分配余量计数器对应的硬件单元,并将该当前分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。本申请实施例中,通过在进程分配单元中设置多个与下一层级的硬件单元一一对应的分配余量计数器,使得在进行进程分配时,通过获取当前分配指针所指的当前分配余量计数器的分配余量,来决定进程的分配,实现对进程的均匀下发,以此来平衡当发生物理性损坏和硬件关闭时导致部分硬件单元计算能力不均衡的问题,从而解决了现有的进程分配方式容易导致部分硬件单元(发生物理性损坏或硬件关闭的硬件)的进程堆积,从而导致处理性能下降的问题。
结合上述第一方面实施例的一种可能的实施方式,所述方法还包括:若所述当前分配余量计数器的分配余量不大于所述预设阈值,该进程分配单元在所有分配余量计数器中查询是否存在分配余量大于所述预设阈值的分配余量计数器;若查询到分配余量大于所述预设阈值的分配余量计数器,该进程分配单元则将进程下发至所述分配余量大于所述预设阈值的分配余量计数器对应的硬件单元,并将该分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。本申请实施例中,若当前分配余量计数器的分配余量不大于预设阈值,则在所有分配余量计数器中查询是否存在分配余量大于预设阈值的分配余量计数器,若查询到分配余量大于预设阈值的分配余量计数器,则将进程下发至所述分配余量大于预设阈值的分配余量计数器对应的硬件单元,并将该分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配,以此来平衡当发生物理性损坏和硬件关闭时导致部分硬件单元计算能力不均衡的问题,避免将进程下发至分配余量不大于预设阈值的分配余量计数器对应的硬件单元,而发送进程堆积。
结合上述第一方面实施例的一种可能的实施方式,所述方法还包括:若不存在分配余量大于所述预设阈值的分配余量计数器,该进程分配单元则将所有分配余量计数器各自通过分配初始值进行复位,并继续轮询分配余量计数器进行进程分配。本申请实施例中,若所有分配余量计数器的分配余量均不大于预设阈值,则将所有分配余量计数器各自通过分配初始值进行复位,使得进程分配可以继续,同时由于分配余量计数器在复位时是基于各自的初始值进行复位,从而使得进程能均匀下发。
结合上述第一方面实施例的一种可能的实施方式,所述方法还包括:当检测到硬件单元发生物理性损坏或发生硬件关闭时,逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值。本申请实施例中,当检测到硬件单元发生物理性损坏或发生硬件关闭时,需要逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值,以平衡当发生物理性损坏和硬件关闭时导致部分硬件单元计算能力不均衡的问题。
结合上述第一方面实施例的一种可能的实施方式,每一层级的进程分配单元均还包括用于表征该进程分配单元控制下的所有硬件单元的计算能力的总算力容量寄存器,上一层级的进程分配单元中的分配余量计数器的值为该分配余量计数器对应的下一层级的进程分配单元中总算力容量寄存器的值;逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值,包括:获取发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级i,则i+1层的进程分配单元将i+1层级中所述目标硬件单元对应的分配余量计数器的值更新为0,并更新所述i+1层级中总算力容量寄存器的值,并向i+2层的硬件单元发送表征完成更新的通告;所述i+2层的进程分配单元在接收到表征所述i+1层级完成更新的通告时,将所述i+2层的每个分配余量计数器的值更新为该分配余量计数器对应的i+1层级中总算力容量寄存器的值,以此类推,直至完成各个层级的分配余量计数器的数值更新。本申请实例中,还通过在每一层进程单元中设置一总算力容量寄存器,用于表征该进程分配单元控制下的所有硬件单元的计算能力的多少,使得在更新分配余量计数器的值时,该总算力容量寄存器的值作为上一层次对应的分配余量计数器的复位,以此保证更新后的各层进程分配单元中的分配余量计数器的数值均是可靠的、准确的,进而使得在进程下发时,能平衡当发生物理性损坏和硬件关闭时导致部分硬件单元计算能力不均衡的问题。
结合上述第一方面实施例的一种可能的实施方式,获取发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级i,包括:若发生物理性损坏或发生硬件关闭的硬件单元的数量为j个,且j个硬件单元均属于同一个分支,则获取j个硬件单元中层级最高的硬件单元,并获取所述层级最高的硬件单元所在的层级i,其中,所述层级最高的硬件单元即为所述目标硬件单元,j为大于等于2的正整数。本申请实施例中,若发生物理性损坏或发生硬件关闭的硬件单元的数量为j个,且j个硬件单元均属于同一个分支,则在更新分配余量计数器的值时,可以从j个硬件单元中层级最高的硬件单元所在的层级i开始逐层的向最高层更新,进而可以缩短更新的时间,提高效率。
结合上述第一方面实施例的一种可能的实施方式,在逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值之前,所述方法还包括:若在该进程分配单元进行进程分配的过程中检测到硬件单元发生物理性损坏或发生硬件关闭,则该进程分配单元中断进程的分配;相应地,在逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值之后,所述方法还包括:该进程分配单元,基于更新后的该进程分配单元中的分配余量计数器的数值,继续进行进程的分配。本申请实施例中,若在该进程分配单元进行进程分配的过程中检测到硬件单元发生物理性损坏或发生硬件关闭,则中断进程的分配,并在完成各个层级各自的进程分配单元中的分配余量计数器的数值的更新后,基于更新后的该进程分配单元中的分配余量计数器的数值,继续进行进程的分配,以此保证进程的连续性,同时再次进行进程的分配时,是基于更新后的分配余量计数器的数值进行进程的分配的,从而平衡当发生物理性损坏和硬件关闭时导致部分硬件单元计算能力不均衡的问题。
结合上述第一方面实施例的一种可能的实施方式,所述硬件单元所在的层级为CP层、着色器引擎SE层、计算单元CU层、单指令多数据流架构SIMD层中的一种。本申请实例中,该进程分配单元所在的层级为CP层、着色器处理器插值器SPI层、着色器序列器SQ层、单指令多数据流架构SIMD层中的一种,使得该方法可以适用于不同层级的下的指令分配机制,均匀的对进程进行下发,以此平衡各运算单元的功能,提高了方案的适用性。
第二方面,本申请实施例还提供了一种并行处理器,包括:多个不同层级的硬件单元,每一层级的硬件单元均包括进程分配单元;每一层级的进程分配单元均包括多个与下一层级的硬件单元一一对应的分配余量计数器以及用于控制进程分配的分配指针,每个分配余量计数器均用于记录对应的硬件单元中剩余计算能力的相对值;针对每一层的进程分配单元,该进程分配单元,用于在向下一层级的硬件单元下发进程时,获取当前分配指针所指的当前分配余量计数器的分配余量;若所述当前分配余量计数器的分配余量大于预设阈值,则将进程下发至所述当前分配余量计数器对应的硬件单元,并将该当前分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。
结合上述第二方面实施例的一种可能的实施方式,若所述当前分配余量计数器的分配余量不大于所述预设阈值,该进程分配单元,还用于在所有分配余量计数器中查询是否存在分配余量大于所述预设阈值的分配余量计数器;若查询到分配余量大于所述预设阈值的分配余量计数器,则将进程下发至所述分配余量大于所述预设阈值的分配余量计数器对应的硬件单元,并将该分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。
结合上述第二方面实施例的一种可能的实施方式,若不存在分配余量大于所述预设阈值的分配余量计数器,该进程分配单元,还用于将所有分配余量计数器各自通过分配初始值进行复位,并继续轮询分配余量计数器进行进程分配。
结合上述第二方面实施例的一种可能的实施方式,当检测到硬件单元发生物理性损坏或发生硬件关闭时,各个层级的进程分配单元还用于:逐层的更新各自分配余量计数器的数值。
结合上述第二方面实施例的一种可能的实施方式,每一层级的进程分配单元均还包括用于表征该进程分配单元控制下的所有硬件单元的计算能力的总算力容量寄存器,上一层级的进程分配单元中的分配余量计数器的值为该分配余量计数器对应的下一层级的进程分配单元中总算力容量寄存器的值;若发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级为层级i,则i+1层的进程分配单元,用于将i+1层级中所述目标硬件单元对应的分配余量计数器的值更新为0,并更新所述i+1层级中总算力容量寄存器的值,并向i+2层的硬件单元发送表征完成更新的通告;所述i+2层的进程分配单元,用于在接收到表征所述i+1层级完成更新的通告时,将所述i+2层的每个分配余量计数器的值更新为该分配余量计数器对应的i+1层级中总算力容量寄存器的值,以此类推,直至完成各个层级的分配余量计数器的数值更新。
结合上述第二方面实施例的一种可能的实施方式,若发生物理性损坏或发生硬件关闭的硬件单元的数量为j个,且j个硬件单元均属于同一个分支;最高层硬件单元,用于获取j个硬件单元中层级最高的硬件单元,并获取所述层级最高的硬件单元所在的层级i,其中,所述层级最高的硬件单元即为所述目标硬件单元,j为大于等于2的正整数。
结合上述第二方面实施例的一种可能的实施方式,若在该进程分配单元进行进程分配的过程中检测到硬件单元发生物理性损坏或发生硬件关闭,则该进程分配单元中断进程的分配;并在完成各个层级各自的进程分配单元中的分配余量计数器的数值的更新后,该进程分配单元,还用于基于更新后的该进程分配单元中的分配余量计数器的数值,继续进行进程的分配。
结合上述第二方面实施例的一种可能的实施方式,所述硬件单元所在的层级为CP层、着色器引擎SE层、计算单元CU层、单指令多数据流架构SIMD层中的一种。
第三方面,本申请实施例还提供了一种电子设备,包括本体和如上述第二方面实施例和/或结合第二方面实施例的任一种可能的实施方式提供的并行处理器。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种并行处理器的结构示意图。
图2示出了本申请实施例提供的一种在图1所示的层级结构上设置DAC和TCC的原理示意图。
图3示出了本申请实施例提供的一种更新TCC的值和DAC的值的原理示意图。
图4示出了本申请实施例提供的一种同时出现了硬件单元的物理性损坏和发生硬件mask的层级示意图。
图5示出了本申请实施例提供的图2所示的层级结构同时出现了2处硬件单元的物理性损坏的层级示意图。
图6示出了本申请实施例提供的一种进程分配方法的原理示意图。
图7示出了本申请实施例提供的一种进程分配方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
当并行处理器中的部分硬件单元出现物理性的损坏或发生硬件关闭(mask)时,如果依旧按照通常轮询的方式进行不同级别的指令分配,容易造成出现物理性损坏的硬件单元的输入指令发生阻塞,导致并行处理器的功能下降。为了避免该问题,本申请实施例提供了一种进程分配方法,能够应用于各物理层次下的指令分配机制,当并行处理单元在发生不同级别的物理性损坏和硬件关闭的情况下,能够动态的调整进程的下发,均匀的对进程进行下发,以平衡各处理单元的功能,避免出现物理性损坏的硬件单元的输入指令发生阻塞。进一步地,通过在每一层级的进程分配单元中增加多个与下一层级的硬件单元一一对应的分配余量计数器和总算力容量寄存器。每个分配余量计数器均用于记录对应的硬件单元中剩余计算能力的相对值,总算力容量寄存器用于表征该进程分配单元控制下的所有硬件单元的计算能力的多少,并作为上一层次对应的分配余量计数器的复位。通过将原有轮询(round-robin)机制的基础上添加分配余量计数器和总算力容量寄存器用于提供进程下发的权值,用于平衡在发生物理性损坏或发生硬件关闭时导致各处理单元计算能力不均衡的问题。
为了便于理解,以图1所示的并行处理器的架构为例,该并行处理器包括:命令处理器(Command Processor,CP)和4个相互独立的着色器引擎(Shader Engine,SE),分别为SE0、SE1、SE2和SE3。每个SE包含着色器处理器插值器(Shader Processor Interpolator,SPI)和16个CU(Computing Unit),分别为CU0、CU1、……、CU14、CU15。每个CU包含着色器序列器(shader sequencer,SQ)和4个单指令多数据流(Single Instruction MultipleData,SIMD)架构,分别为SIMD0、SIMD1、SIMD2、SIMD3。每个SIMD包含16个MAC,每个MAC完成一次基础的乘加运算,该单元就是最基础的计算单元(MAC)。其中,CP为SE分配进程,SE中的SPI为CU分配进程,CU中的SQ为SIMD分配进程,SIMD为MAC分配进程。进一步地,CP将线程组(Thread Group)或工作组(Work Group)下发到达每个SE中,每个SE对应一个工作组(WorkGroup)或线程组(Thread Group),每个SE中的SPI将接收到的Thread Group或Work Group拆解为指令块(Wave)分配到达每个CU中,每个CU中的SQ将Wave组织并下发,最终到达每个SIMD。每个SIMD对应一个指令块(Wave),SIMD将Wave中的线程(thread)下发至MAC。其中,一个Wave对应64个线程(thread),分4个阶段(Phase)便可完成整个Wave的运算,每个MAC对应一个thread。
本申请实施例中,通过在每一层级的硬件单元的进程分配单元中,分别增加多个与下一层级的硬件单元一一对应的分配余量计数器和总算力容量寄存器,来提供进程下发的权值,以此来平衡在发生物理性损坏或发生硬件关闭时导致各处理单元计算能力不均衡的问题。以图1所示的并行处理器架构为例,则该并行处理器包括CP、SE、CU、SIMD等不同层级的硬件单元,对应的进程分配单元的层级为CP层、SPI层、SQ层、单指令SIMD层。其中,由于CP对应4个SE或SPI,因此,在CP的进程分配单元中增加4个与下一层级的硬件单元SE或SPI一一对应的分配余量计数器和1个总算力容量寄存器;由于SE中的SPI对应16个CU或SQ,因此在SE的进程分配单元SPI中增加16个与下一层级的硬件单元CU或SQ一一对应的分配余量计数器和1个总算力容量寄存器;由于CU对应4个SIMD,因此在CU的进程分配单元SQ中增加4个与下一层级的硬件单元SIMD一一对应的分配余量计数器和1个总算力容量寄存器,由于SIMD对应16个MAC,因此在SIMD的进程分配单元中增加16个与下一层级的硬件单元MAC一一对应的分配余量计数器和1个总算力容量寄存器,其原理的示意图,如图2所示。其中,图2中的TCC(Total Compute Capacity)为总算力容量寄存器,DAC(Dispatch Allowance Count)为分配余量计数器。其中,需要说明的是,本申请实施例提供的进程分配方法,并不限于图1所示的并行处理器架构。
其中,每一层的TCC用于表征该进程分配单元控制下的所有硬件单元的计算能力的总算力容量,DAC表示下一层级中该DAC对应的硬件单元剩余计算能力的多少,在每个层级的进程分配单元中增加TCC和DAC,用于统计和控制进程的分配。当没有发生物理性损坏或硬件mask行为时,***内所有层级的TCC和DAC恒定为1,***退化为简单的轮询***,保证所有的硬件单元均衡的获得和运行进程。当检测到任意层级(level)的硬件单元发生物理性损坏或发生硬件关闭时,自动进入***中断状态,逐层的更新各个层级各自的进程分配单元中的分配余量计数器以及总算力容量寄存器的数值,当所有更新完成,再回到正常的进程分配流程。此时,各个层级的进程分配单元还用于:当检测到硬件单元发生物理性损坏或发生硬件关闭时,逐层的更新各自的分配余量计数器的数值。
其中,逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值的过程可以是,获取发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级i,将i+1层级中目标硬件单元对应的分配余量计数器的值更新为0,更新i+1层级中总算力容量寄存器的值(i+1层级的进程分配单元中的总算力容量寄存器的数值为该进程分配单元中的各个分配余量计数器的数值之和),并将i+2层级中i+1层级中总算力容量寄存器对应的分配余量计数器的值更新为i+1层级中总算力容量寄存器的值,更新i+2层级中总算力容量寄存器的值(i+2层级的进程分配单元中的总算力容量寄存器的数值为该进程分配单元中的各个分配余量计数器的数值之和),并将i+3层级中i+2层级中总算力容量寄存器对应的分配余量计数器的值更新为i+2层级中总算力容量寄存器的值,直至完成各个层级的分配余量计数器的数值更新。也即若发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级为层级i,则i+1层的进程分配单元,用于将i+1层级中目标硬件单元对应的分配余量计数器的值更新为0,并更新i+1层级中总算力容量寄存器的值,并向i+2层的硬件单元发送表征完成更新的通告;i+2层的进程分配单元,用于在接收到表征i+1层级完成更新的通告时,将i+2层的每个分配余量计数器的值更新为该分配余量计数器对应的i+1层级中总算力容量寄存器的值,以此类推,直至完成各个层级的分配余量计数器的数值更新。其原理示意图如图3所示,其中,若发生硬件损坏的目标硬件单元所在的层级为最高级,则直接解除锁定,跳转到正常的工作流程,并报错;若发生硬件损坏的目标硬件单元所在的层级为不为最高层级,则按照上述的逻辑更新各个层级的DAC和TCC的值,例如,发生硬件损坏的目标硬件单元所在的层级次高层,则将最高层的进程分配单元中对应该目标硬件单元的DAC的值更新为0,最高层的进程分配单元在向次高层的硬件单元分配进程时,不会再向该发生硬件损坏的目标硬件单元分配进程。
其中,若发生物理性损坏或发生硬件关闭的硬件单元的数量为j个,且j个硬件单元均属于同一个分支;最高层硬件单元,用于获取j个硬件单元中层级最高的硬件单元,并获取所述层级最高的硬件单元所在的层级i,其中,层级最高的硬件单元即为目标硬件单元,j为大于等于2的正整数。其中,各个层级的硬件单元中的检测模块在检测到自身所在的硬件单元发生物理性损坏或发生硬件关闭时,可以是采用逐层递进的方式将该问题反馈给最高层硬件单元,也可以是直接向最高层硬件单元反馈该问题,使得最高层硬件单元能够获悉所有发生物理性损坏或发生硬件关闭的情况,并作出决策。
为了便于理解,以图4所示的示意图为例进行说明,其中,图4所示的进程分配结构共有4级,分别为level0~3,同时出现了硬件单元的物理性损坏和发生硬件mask的情况。其中,level 1的灰色部分对应的计算单元发生物理性损坏,level 0的虚线部分发生了硬件mask,使得进程无法下发到发生物理性损坏或发生硬件关闭的目标硬件单元中。由于进程已经无法到达发生硬件损坏或发生硬件mask的硬件单元,由于该硬件单元及该硬件单元下面的硬件单元的TCC和DAC不需要关心,其值仍然为1;其中,由于发生物理性损坏的硬件单元和发生硬件关闭的硬件单元不属于同一个分支(也即,发生硬件关闭的硬件单元不在发生物理性损坏的硬件单元的下发),因此需要分别考虑。由于level0的右侧部分发生硬件mask,因此将该level1中(图中右侧部分的硬件单元)与该发生硬件mask的单元对应的DACj-1的值更新为0,对应更新TCC的值为j-1(由于level1中的进程分配单元支持j个子设备的进程下发(因此包括j个DAC),当所有子设备正常时,对应j个子设备的总计算力容量,即level1层次中的TCC为j,由于其中一个子设备被mask,损失部分计算力容量,由于level1中该发生硬件mask的单元对应的DACj-1的值为0,level1中的进程分配单元的TCC的值变为j-1),并将该TCC的值(j-1)作为level2中DACk-1的值。同理,由于level1的左侧部分发生硬件损坏,因此将level2中与该发生硬件损坏单元对应的DAC0的值更新为0,并对应更新TCC的值为(k-1)*j-1(由于level2层中包括k个DAC,其中DAC0的值为0,DACk-1的值为j-1,其余DAC的值为j,因此TCC的值为(k-1)*j-1),并对应的更新level3中的DAC和TCC的值。
以图1所示的并行处理器架构为例,假设存在SE0.CU0.SIMD0和SE0.CU14出现物理性损坏时,由于存在两处不同层次的损坏,且这2个硬件单元不属于同一个分支,因此需要分别考虑。下面结合图5所示的层级图进行说明,其中,对于level0,一个CU中存在4组SIMD,且SE0.CU0.SQ0.DAC0为SE0.CU0.SIMD0的分配余量计数器,其复位值为0x0,其余level0下的SE.CU.SQ.DAC的复位值均为0x1,SE0.CU0.SQ0.TCC下降为0x3,其余SE.CU.SQ.TCC均为0x4。在level1层级,由于一个SE中存在16个CU,SE0.SPI0.DAC0复位值变化为0x3,SE0.CU14存在物理性损坏,因此其对应的SE0.SPI0.DAC14复位值变为0x0,表征进程无法到达SE0.CU14中进行运算,其余SE.SPI.DAC复位值均为0x4,SE0.SPI0.TCC变化为0x3b,其余SE.SPI.TCC其值均为0x40。以此类推,CP.DAC0复位值为0x3b,其余CP.DAC复位值都为0x40,因此CP.TCC为0x15b。
其中,针对每一层的进程分配单元,该进程分配单元,用于在向下一层级的硬件单元下发进程时,获取当前分配指针(其中,每一层级的进程分配单元均包括用于控制进程分配的分配指针)所指的当前分配余量计数器的分配余量,若当前分配余量计数器的分配余量大于预设阈值(例如为0),该进程分配单元则将进程下发至当前分配余量计数器对应的硬件单元,并将该当前分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。若当前分配余量计数器的分配余量不大于预设阈值,该进程分配单元还用于在所有分配余量计数器中查询是否存在分配余量大于预设阈值的分配余量计数器,若查询到分配余量大于预设阈值的分配余量计数器,该进程分配单元则将进程下发至分配余量大于预设阈值的分配余量计数器对应的硬件单元,并将该分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。若不存在分配余量大于预设阈值的分配余量计数器,该进程分配单元,还用于将所有分配余量计数器各自通过分配初始值进行复位,并继续轮询分配余量计数器进行进程分配。其原理示意图如图6所示。若在该进程分配单元进行进程分配的过程中检测到硬件单元发生物理性损坏或发生硬件关闭,则该进程分配单元中断进程的分配;相应地,在逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值之后,该进程分配单元,基于更新后的该进程分配单元中的分配余量计数器的数值,继续进行进程的分配。
其中,为了便于理解,结合图5中的CP向SE0中SPI0下发进程进行说明,当没有发生物理性损坏或硬件mask行为时,***内所有层级的TCC和DAC恒定为1。clk0(时钟0),当CP要向DAC0对应的SE0下发进程时,此时DAC0的值为1,因此正常下发,并将指针移动到DAC1;clk1,当CP要向DAC1对应的SE1下发进程时,此时DAC1的值为1,因此正常下发,并将指针移动到DAC2;clk2,当CP要向DAC2对应的SE2下发进程时,此时DAC2的值为1,因此正常下发,并将指针移动到DAC3;clk3,当CP要向DAC3对应的SE3下发进程时,此时DAC3的值为1,因此正常下发,并将指针移动到DAC0,下发后DAC3的值为0,此时所有的DAC均为0,则将所有DAC各自通过分配初始值进行复位(复位时,分配余量计数器的数值为该分配余量计数器对应的下一层的硬件单元分中的总算力容量寄存器的值),全部变为1,并继续轮询DAC进行进程分配。假设检测到SE0.CU0.SIMD0和SE0.CU14出现物理性损坏,则暂停分配,并逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值,待更新完成后,继续轮询DAC进行进程分配。当更新完成后CP.DAC0为0x3b,其余为0x40。clk0,进程下发到SE0中,CP.DAC0减少为0x3a,其余维持0x40;clk1,进程下发到SE1中,CP.DAC1减少为0x3F,CP.DAC0维持0x3a,其余维持0x40;clk2,进程下发到SE2中,CP.DAC2减少为0x3F,CP.DAC0维持0x3a,CP.DAC1维持0x3F,CP.DAC3维持0x40;clk3,进程下发到SE3中,CP.DAC3减少为0x3F,CP.DAC0维持0x3a,CP.DAC1维持0x3F,CP.DAC2维持0x3F……clk4~clk231状态下,所有CP.DAC计数器都为非0,依照正常轮询方式进行进程的下发即可。clk232状态下,进程下发到SE0,同时CP.DAC0减1,出现第一个CP.DAC为0的情况,但由于判断时该值为1,因此并不会影响轮询的结果。clk236,由于CP.DAC0为0,表明SE0不能够再接收新的进程,进程分配直接跳过SE0,到达SE1,同时CP.DAC1减1,变为0x4。Step251,将进程分配到SE3处,同时减1操作,此时全部的CP.DAC都为0,通过复位又恢复到初始值,其中,复位时,分配余量计数器的数值为该分配余量计数器对应的下一层的硬件单元分中的总算力容量寄存器的值,也即CP.DAC0为0x3b(为SPI0中的TCC的值),其余为0x40,此时开始新的分配循环。由于在SPI(level1)层次或SQ(level0)层次分配的逻辑相同,具体的流程也相似,因此不再赘述。进程按照此递归方法,逐步由高层次下发到低层次,通过DAC的控制,调整轮询的顺序,完成了动态控制各计算单元计算能力的功能。
采用本申请实施例提供的进程分配方法,当没有发生物理性损坏或发生硬件关闭(mask)时,***内所有层级的TCC和DAC恒定为1,***退化为简单的轮询***,保证所有的处理单元能均衡的获得和运行进程。当发生物理性损坏或硬件mask行为时,各层级的TCC表征的数值实际上对应了该层级下的各个硬件单元的计算能力的大小,表征了在整个进程分配体系中,能够得到进程的权重,而分配余量计数器的复位和减少的过程,实际上均衡了就处理单元计算能力不同的情况下,进程分配的均衡问题。当部分处理单元发生物理性损坏时,单纯使用轮询机制的进程分发,会导致部分处理单元的进程堆积,即使不发生堆积,也打乱了正常的计算顺序,造成计算能力的衰减,而采用本申请所示的进程分配方法后,有效克服了该问题,均衡整个进程的分发,提升了运算能力,同时当出现多层次多点的损坏或mask时,也能动态的进行支持。
本申请实施例还提供了一种应用于并行处理器的进程分配方法,该并行处理器包括多个不同层级的硬件单元,每一层级的硬件单元均包括进程分配单元,每一层级的进程分配单元均包括多个与下一层级的硬件单元一一对应的分配余量计数器以及用于控制进程分配的分配指针,每个分配余量计数器均用于记录对应的硬件单元中剩余计算能力的相对值。下面将结合图7,对本申请实施例提供的进程分配方法进行说明。
步骤S101:针对每一层的进程分配单元,该进程分配单元在向下一层级的硬件单元下发进程时,获取当前分配指针所指的当前分配余量计数器的分配余量。
步骤S102:判断所述当前分配余量计数器的分配余量是否大于预设阈值。
判断所述当前分配余量计数器的分配余量大于预设阈值(例如,0),若当前分配余量计数器的分配余量大于预设阈值,则执行步骤S103,否则执行步骤S104。
步骤S103:将进程下发至所述当前分配余量计数器对应的硬件单元,并将该当前分配余量计数器的分配余量减1。
若所述当前分配余量计数器的分配余量大于预设阈值(例如为0),该进程分配单元则将进程下发至所述当前分配余量计数器对应的硬件单元,并将该当前分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。
步骤S104:在所有分配余量计数器中查询是否存在分配余量大于所述预设阈值的分配余量计数器。
若所述当前分配余量计数器的分配余量不大于所述预设阈值,该进程分配单元在所有分配余量计数器中查询是否存在分配余量大于所述预设阈值的分配余量计数器。若存在则执行步骤S105,若不存在则执行步骤S106。
步骤S105:将进程下发至所述分配余量大于所述预设阈值的分配余量计数器对应的硬件单元,并将该分配余量计数器的分配余量减1。
若查询到分配余量大于所述预设阈值的分配余量计数器,该进程分配单元则将进程下发至所述分配余量大于所述预设阈值的分配余量计数器对应的硬件单元,并将该分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。
步骤S106:将所有分配余量计数器各自通过分配初始值进行复位。
若不存在分配余量大于所述预设阈值的分配余量计数器,该进程分配单元则将所有分配余量计数器各自通过分配初始值进行复位,并继续轮询分配余量计数器进行进程分配。
所述方法还包括:当检测到硬件单元发生物理性损坏或发生硬件关闭时,逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值。其中,每一层级的进程分配单元均还包括用于表征该进程分配单元控制下的所有硬件单元的计算能力的总算力容量寄存器,上一层级的进程分配单元中的分配余量计数器的值为该分配余量计数器对应的下一层级的进程分配单元中总算力容量寄存器的值;逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值的过程可以是:获取发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级i,则i+1层的进程分配单元将i+1层级中所述目标硬件单元对应的分配余量计数器的值更新为0,并更新所述i+1层级中总算力容量寄存器的值,并向i+2层的硬件单元发送表征完成更新的通告;所述i+2层的进程分配单元在接收到表征所述i+1层级完成更新的通告时,将所述i+2层的每个分配余量计数器的值更新为该分配余量计数器对应的i+1层级中总算力容量寄存器的值,以此类推,直至完成各个层级的分配余量计数器的数值更新。也即获取发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级i,将i+1层级中所述目标硬件单元对应的分配余量计数器的值更新为0;更新所述i+1层级中总算力容量寄存器的值,并将i+2层级中所述i+1层级中总算力容量寄存器对应的分配余量计数器的值更新为所述i+1层级中总算力容量寄存器的值;更新所述i+2层级中总算力容量寄存器的值,并将i+3层级中所述i+2层级中总算力容量寄存器对应的分配余量计数器的值更新为所述i+2层级中总算力容量寄存器的值,直至完成各个层级的分配余量计数器的数值更新。
其中,若发生物理性损坏或发生硬件关闭的硬件单元的数量为j个,且j个硬件单元均属于同一个分支,则获取发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级i的过程可以是:获取j个硬件单元中层级最高的硬件单元,并获取所述层级最高的硬件单元所在的层级i,其中,所述层级最高的硬件单元即为所述目标硬件单元,j为大于等于2的正整数。
其中,若在该进程分配单元进行进程分配的过程中检测到硬件单元发生物理性损坏或发生硬件关闭,则在逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值之前,所述方法还包括:则该进程分配单元中断进程的分配;相应地,在逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值之后,所述方法还包括:该进程分配单元,基于更新后的该进程分配单元中的分配余量计数器的数值,继续进行进程的分配。
其中,上述的硬件单元所在的层级为CP层、着色器处理器插值器SPI层、着色器序列器SQ层、单指令多数据流架构SIMD层,对应的进程分配单元所在的层级为CP层、着色器处理器插值器SPI层、着色器序列器SQ层、单指令多数据流架构SIMD层。
本申请实施例所提供的进程分配方法,其实现原理及产生的技术效果和前述装置实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述装置实施例中相应内容。
本申请实施例还提供的一种包括上述并行处理器的电子设备,该电子设备包括但不限于智能手机、平板、计算机、服务器等。其中,该并行处理器可以是一种集成电路芯片,具有信号的处理能力。上述的并行处理器可以是图形处理器GPU、或其他AI并行处理器。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。
本申请实施例还提供了一种非易失性计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备运行时,执行上述所示的进程分配方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (15)

1.一种进程分配方法,其特征在于,应用于并行处理器,所述并行处理器包括多个不同层级的硬件单元,每一层级的硬件单元均包括进程分配单元,每一层级的进程分配单元均包括多个与下一层级的硬件单元一一对应的分配余量计数器以及用于控制进程分配的分配指针,每个分配余量计数器均用于记录对应的硬件单元中剩余计算能力的相对值;所述方法包括:
针对每一层的进程分配单元,该进程分配单元在向下一层级的硬件单元下发进程时,获取当前分配指针所指的当前分配余量计数器的分配余量;
若所述当前分配余量计数器的分配余量大于预设阈值,该进程分配单元则将进程下发至所述当前分配余量计数器对应的硬件单元,并将该当前分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配;
其中,所述方法还包括:
当检测到硬件单元发生物理性损坏或发生硬件关闭时,会逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述当前分配余量计数器的分配余量不大于所述预设阈值,该进程分配单元在所有分配余量计数器中查询是否存在分配余量大于所述预设阈值的分配余量计数器;
若查询到分配余量大于所述预设阈值的分配余量计数器,该进程分配单元则将进程下发至所述分配余量大于所述预设阈值的分配余量计数器对应的硬件单元,并将该分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若不存在分配余量大于所述预设阈值的分配余量计数器,该进程分配单元则将所有分配余量计数器各自通过分配初始值进行复位,并继续轮询分配余量计数器进行进程分配。
4.根据权利要求1所述的方法,其特征在于,每一层级的进程分配单元均还包括用于表征该进程分配单元控制下的所有硬件单元的计算能力的总算力容量寄存器,上一层级的进程分配单元中的分配余量计数器的值为该分配余量计数器对应的下一层级的进程分配单元中总算力容量计数器的值;逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值,包括:
获取发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级i,则i+1层的进程分配单元将i+1层级中所述目标硬件单元对应的分配余量计数器的值更新为0,并更新所述i+1层级中总算力容量寄存器的值,并向i+2层的硬件单元发送表征完成更新的通告;
所述i+2层的进程分配单元在接收到表征所述i+1层级完成更新的通告时,将所述i+2层的每个分配余量计数器的值更新为该分配余量计数器对应的i+1层级中总算力容量寄存器的值,以此类推,直至完成各个层级的分配余量计数器的数值更新。
5.根据权利要求4所述的方法,其特征在于,获取发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级i,包括:
若发生物理性损坏或发生硬件关闭的硬件单元的数量为j个,且j个硬件单元均属于同一个分支,则获取j个硬件单元中层级最高的硬件单元,并获取所述层级最高的硬件单元所在的层级i,其中,所述层级最高的硬件单元即为所述目标硬件单元,j为大于等于2的正整数。
6.根据权利要求1所述的方法,其特征在于,在逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值之前,所述方法还包括:
若在该进程分配单元进行进程分配的过程中检测到硬件单元发生物理性损坏或发生硬件关闭,则该进程分配单元中断进程的分配;相应地,在逐层的更新各个层级各自的进程分配单元中的分配余量计数器的数值之后,所述方法还包括:
该进程分配单元,基于更新后的该进程分配单元中的分配余量计数器的数值,继续进行进程的分配。
7.根据权利要求1-3中任一项所述的方法,其特征在于,所述硬件单元的层级为CP层、着色器引擎SE层、计算单元CU层、单指令多数据流架构SIMD层中的一种。
8.一种并行处理器,其特征在于,包括:
多个不同层级的硬件单元,每一层级的硬件单元均包括进程分配单元;
每一层级的进程分配单元均包括多个与下一层级的硬件单元一一对应的分配余量计数器以及用于控制进程分配的分配指针,每个分配余量计数器均用于记录对应的硬件单元中剩余计算能力的相对值;
针对每一层的进程分配单元,该进程分配单元,用于在向下一层级的硬件单元下发进程时,获取当前分配指针所指的当前分配余量计数器的分配余量;若所述当前分配余量计数器的分配余量大于预设阈值,则将进程下发至所述当前分配余量计数器对应的硬件单元,并将该当前分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配;
其中,各个层级的进程分配单元还用于:当检测到硬件单元发生物理性损坏或发生硬件关闭时,逐层的更新各自的分配余量计数器的数值。
9.根据权利要求8所述的并行处理器,其特征在于,若所述当前分配余量计数器的分配余量不大于所述预设阈值,该进程分配单元,还用于在所有分配余量计数器中查询是否存在分配余量大于所述预设阈值的分配余量计数器;若查询到分配余量大于所述预设阈值的分配余量计数器,则将进程下发至所述分配余量大于所述预设阈值的分配余量计数器对应的硬件单元,并将该分配余量计数器的分配余量减1,并继续轮询下一个分配余量计数器进行进程分配。
10.根据权利要求9所述的并行处理器,其特征在于,若不存在分配余量大于所述预设阈值的分配余量计数器,该进程分配单元,还用于将所有分配余量计数器各自通过分配初始值进行复位,并继续轮询分配余量计数器进行进程分配。
11.根据权利要求8所述的并行处理器,其特征在于,每一层级的进程分配单元均还包括用于表征该进程分配单元控制下的所有硬件单元的计算能力的总算力容量寄存器,上一层级的进程分配单元中的分配余量计数器的值为该分配余量计数器对应的下一层级的进程分配单元中总算力容量寄存器的值;
若发生物理性损坏或发生硬件关闭的目标硬件单元所在的层级为层级i,则i+1层的进程分配单元,用于将i+1层级中所述目标硬件单元对应的分配余量计数器的值更新为0,并更新所述i+1层级中总算力容量寄存器的值,并向i+2层的硬件单元发送表征完成更新的通告;
所述i+2层的进程分配单元,用于在接收到表征所述i+1层级完成更新的通告时,将所述i+2层的每个分配余量计数器的值更新为该分配余量计数器对应的i+1层级中总算力容量寄存器的值,以此类推,直至完成各个层级的分配余量计数器的数值更新。
12.根据权利要求11所述的并行处理器,其特征在于,若发生物理性损坏或发生硬件关闭的硬件单元的数量为j个,且j个硬件单元均属于同一个分支;
最高层硬件单元,用于获取j个硬件单元中层级最高的硬件单元,并获取所述层级最高的硬件单元所在的层级i,其中,所述层级最高的硬件单元即为所述目标硬件单元,j为大于等于2的正整数。
13.根据权利要求11所述的并行处理器,其特征在于,若在该进程分配单元进行进程分配的过程中检测到硬件单元发生物理性损坏或发生硬件关闭,则该进程分配单元中断进程的分配;并在完成各个层级各自的进程分配单元中的分配余量计数器的数值的更新后,该进程分配单元,还用于基于更新后的该进程分配单元中的分配余量计数器的数值,继续进行进程的分配。
14.根据权利要求8-10中任一项所述的并行处理器,其特征在于,所述硬件单元所在的层级为CP层、着色器引擎SE层、计算单元CU层、单指令多数据流架构SIMD层中的一种。
15.一种电子设备,包括本体和如权利要求8-14中任一项所述的并行处理器。
CN202010963764.6A 2020-09-14 2020-09-14 一种进程分配方法、并行处理器及电子设备 Active CN112084031B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010963764.6A CN112084031B (zh) 2020-09-14 2020-09-14 一种进程分配方法、并行处理器及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010963764.6A CN112084031B (zh) 2020-09-14 2020-09-14 一种进程分配方法、并行处理器及电子设备

Publications (2)

Publication Number Publication Date
CN112084031A CN112084031A (zh) 2020-12-15
CN112084031B true CN112084031B (zh) 2022-07-08

Family

ID=73738103

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010963764.6A Active CN112084031B (zh) 2020-09-14 2020-09-14 一种进程分配方法、并行处理器及电子设备

Country Status (1)

Country Link
CN (1) CN112084031B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667560B (zh) * 2020-12-22 2023-01-24 深圳致星科技有限公司 基于fpga的数据分发装置和计算平台

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108052396A (zh) * 2017-11-27 2018-05-18 深圳市恒扬数据股份有限公司 一种资源分配方法及***
CN110806924A (zh) * 2018-08-06 2020-02-18 大唐移动通信设备有限公司 一种基于cpu占用率的网络处理方法及装置
CN110971532A (zh) * 2018-09-30 2020-04-07 阿里巴巴集团控股有限公司 一种网络资源管理方法、装置及设备
CN111143035A (zh) * 2019-12-26 2020-05-12 网易(杭州)网络有限公司 Cpu资源的分配方法、装置、设备及计算机可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223278B2 (en) * 2016-04-08 2019-03-05 Qualcomm Incorporated Selective bypassing of allocation in a cache

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108052396A (zh) * 2017-11-27 2018-05-18 深圳市恒扬数据股份有限公司 一种资源分配方法及***
CN110806924A (zh) * 2018-08-06 2020-02-18 大唐移动通信设备有限公司 一种基于cpu占用率的网络处理方法及装置
CN110971532A (zh) * 2018-09-30 2020-04-07 阿里巴巴集团控股有限公司 一种网络资源管理方法、装置及设备
CN111143035A (zh) * 2019-12-26 2020-05-12 网易(杭州)网络有限公司 Cpu资源的分配方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN112084031A (zh) 2020-12-15

Similar Documents

Publication Publication Date Title
CN107015844B (zh) 虚拟机批量在线迁移
CN112416546A (zh) 多任务调度方法、电子装置和计算机存储介质
CN101506774A (zh) 相依指令线程调度
CN103988174A (zh) 无需额外寄存器执行寄存器重命名的数据处理设备和方法
US11275561B2 (en) Mixed precision floating-point multiply-add operation
US11954419B2 (en) Dynamic allocation of computing resources for electronic design automation operations
US20120204183A1 (en) Associative distribution units for a high flowrate synchronizer/schedule
CN112084031B (zh) 一种进程分配方法、并行处理器及电子设备
CN112771498A (zh) 用于实施智能处理计算架构的***和方法
CN112783652B (zh) 当前任务的运行状态获取方法、装置、设备及存储介质
US11366695B2 (en) System and method for assisting charging to use of accelerator unit
CN112084071B (zh) 一种计算单元运算加固方法、并行处理器及电子设备
CN114338694B (zh) 一站式云数据中心服务器调度方法及***
US12020076B2 (en) Techniques for balancing workloads when parallelizing multiply-accumulate computations
US11556384B2 (en) Dynamic allocation and re-allocation of learning model computing resources
US20220342761A1 (en) Techniques for recovering from errors when executing software applications on parallel processors
WO2011144965A1 (en) Integrated circuit device, signal processing system and method for managing power resources of a signal processing system
CN111858196A (zh) 一种计算单元检测方法、并行处理器及电子设备
US20240118894A1 (en) Overflow Event Counter
CN117608862B (zh) 数据分发控制方法、装置、设备及介质
EP3966680B1 (en) Efficient processing of neural network models
US20230236837A1 (en) Elastically managing workers of multi-worker workloads on accelerator devices
CN112087488B (zh) 一种重要云机器人节点的确定方法、装置、设备及介质
CN113821315A (zh) 作业调度方法、装置和电子设备
CN113837740A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210407

Address after: 610000 China (Sichuan) pilot Free Trade Zone, Chengdu high tech Zone

Applicant after: CHENGDU HAIGUANG MICROELECTRONICS TECHNOLOGY Co.,Ltd.

Address before: Industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Huayuan Industrial Zone, Binhai New Area, Tianjin 300450

Applicant before: Haiguang Information Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant