CN116302497A - 资源分配方法、装置、电子设备、存储介质 - Google Patents
资源分配方法、装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN116302497A CN116302497A CN202310137450.4A CN202310137450A CN116302497A CN 116302497 A CN116302497 A CN 116302497A CN 202310137450 A CN202310137450 A CN 202310137450A CN 116302497 A CN116302497 A CN 116302497A
- Authority
- CN
- China
- Prior art keywords
- stage
- resource
- virtual
- resource allocation
- subtasks
- 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.)
- Pending
Links
- 238000013468 resource allocation Methods 0.000 title claims abstract description 109
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000003860 storage Methods 0.000 title claims abstract description 22
- 238000013507 mapping Methods 0.000 claims abstract description 44
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 18
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
一种资源分配方法、装置、电子设备、存储介质。该资源分配方法包括:获取目标任务,其中,目标任务分成多个阶段的子任务依次执行,多个阶段包括第一阶段;确定执行第一阶段的子任务所需的第一数量的第一虚拟资源;响应于图形处理器中当前可用的物理资源的数量大于等于第一数量,将当前可用的物理资源中第一数量的第一物理资源映射到第一虚拟资源,以使用第一物理资源执行第一阶段的子任务。该资源分配方法可以让更多的线程束或者线程并行执行,使得流水线始终处于工作状态,有效掩藏、补偿长延时操作,避免流水线的停顿,灵活分配有限的存储资源,提高处理器的执行效率和并行度。
Description
技术领域
本公开的实施例涉及一种资源分配方法、资源分配装置、电子设备、非瞬时性计算机可读存储介质。
背景技术
图形处理器(Graphics Processing Unit,简称GPU)或通用图形处理器(GeneralPurpose Graphics Processing Unit,简称GPGPU)可以利用大量的线程来提高运算的并行度,这些线程需要到全局存储器中索引相应的数据。由于全局存储器带宽有限,无法同时满足这么多访问请求,因此这个过程往往会导致较长延时的操作,使得指令流水线停顿等候。为了减少对全局存储器的访问,图形处理器或通用图形处理器提供了多种存储器类型和多样的存储层次关系,提高内核函数的执行效率。
例如,图形处理器或通用图形处理器支持寄存器文件(register file),局部存储器、共享存储器、缓存等多种类型的存储器。
发明内容
本公开至少一实施例提供一种资源分配方法,用于图形处理器,所述资源分配方法包括:获取目标任务,其中,所述目标任务分成多个阶段的子任务依次执行,所述多个阶段包括第一阶段;确定执行所述第一阶段的子任务所需的第一数量的第一虚拟资源;响应于所述图形处理器中当前可用的物理资源的数量大于等于所述第一数量,将所述当前可用的物理资源中所述第一数量的第一物理资源映射到所述第一虚拟资源,以使用所述第一物理资源执行所述第一阶段的子任务。
例如,在本公开至少一实施例提供的资源分配方法中,确定执行所述第一阶段的子任务所需的第一数量的第一虚拟资源,包括:获取执行所述目标任务所需的总虚拟资源数量,并根据所述总虚拟资源数量分配对应的连续虚拟地址空间;从所述连续虚拟地址空间中确定连续的所述第一数量的所述第一虚拟资源分配给所述第一阶段的子任务。
例如,在本公开至少一实施例提供的资源分配方法中,将所述当前可用的物理资源中所述第一数量的第一物理资源映射到所述第一虚拟资源,以使用所述第一物理资源执行所述第一阶段的子任务,包括:从所述图形处理器中当前可用的物理资源中确定所述第一数量的所述第一物理资源;建立所述第一虚拟资源与所述第一物理资源之间一对一的映射关系。
例如,在本公开至少一实施例提供的资源分配方法中,所述多个阶段还包括第二阶段,所述第二阶段的子任务在所述第一阶段的子任务之后执行,所述资源分配方法还包括:确定执行所述第二阶段的子任务所需的第二数量的第二虚拟资源;在所述第一阶段的子任务执行完毕且所述第二阶段的子任务开始执行前,响应于所述图形处理器中当前可用的物理资源的数量大于等于所述第二数量,将所述图形处理器中当前可用的物理资源中所述第二数量的第二物理资源映射到所述第二虚拟资源,以使用所述第二物理资源执行所述第二阶段的子任务。
例如,在本公开至少一实施例提供的资源分配方法中,响应于所述多个阶段的子任务中的第i个阶段的子任务执行后所述目标任务结束,在所述第i个阶段的子任务之后执行的各阶段子任务不再执行且不申请和分配物理资源,同时释放为前i个阶段的子任务分配的虚拟资源和物理资源,其中,i为正整数且小于等于所述多个阶段的总数。
例如,本公开至少一实施例提供的资源分配方法还包括:根据指令类型将执行所述多个阶段的子任务所需的指令进行分组。
例如,在本公开至少一实施例提供的资源分配方法中,根据指令类型将执行所述多个阶段的子任务所需的指令进行分组,包括:将执行所述多个阶段的子任务所需的指令中的第一类型指令分配在至少一个分组中优先执行,其中,所述第一类型指令能够使得所述目标任务提前结束。
例如,在本公开至少一实施例提供的资源分配方法中,根据指令类型将执行所述多个阶段的子任务所需的指令进行分组,包括:将执行所述多个阶段的子任务所需的指令中的第二类型指令分配在至少一个分组中优先执行,其中,所述第二类型指令的执行时间较长。
例如,在本公开至少一实施例提供的资源分配方法中,为每个阶段的子任务分配的虚拟资源是连续的,与每个阶段的子任务分配的虚拟资源建立映射关系的物理资源不连续。
例如,在本公开至少一实施例提供的资源分配方法中,所述物理资源包括所述图形处理器中的寄存器文件资源。
本公开至少一实施例提供一种资源分配装置,用于图形处理器,所述资源分配装置包括:获取单元,配置为获取目标任务,其中,所述目标任务分成多个阶段的子任务依次执行,所述多个阶段包括第一阶段;虚拟资源确定单元,配置为确定执行所述第一阶段的子任务所需的第一数量的第一虚拟资源;第一资源分配单元,配置为响应于所述图形处理器中当前可用的物理资源的数量大于等于所述第一数量,将所述当前可用的物理资源中所述第一数量的第一物理资源映射到所述第一虚拟资源,以使用所述第一物理资源执行所述第一阶段的子任务。
例如,在本公开至少一实施例提供的资源分配装置中,所述虚拟资源确定单元执行确定执行所述第一阶段的子任务所需的第一数量的第一虚拟资源时,包括执行以下操作:获取执行所述目标任务所需的总虚拟资源数量,并根据所述总虚拟资源数量分配对应的连续虚拟地址空间;从所述连续虚拟地址空间中确定连续的所述第一数量的所述第一虚拟资源分配给所述第一阶段的子任务。
例如,在本公开至少一实施例提供的资源分配装置中,所述第一资源分配单元执行将所述当前可用的物理资源中所述第一数量的第一物理资源映射到所述第一虚拟资源,以使用所述第一物理资源执行所述第一阶段的子任务时,包括执行以下操作:从所述图形处理器中当前可用的物理资源中确定所述第一数量的第一物理资源;建立所述第一虚拟资源与所述第一物理资源之间一对一的映射关系。
例如,在本公开至少一实施例提供的资源分配装置中,所述多个阶段还包括第二阶段,所述第二阶段的子任务在所述第一阶段的子任务之后执行,所述资源分配装置还包括第二资源分配单元,所述第二资源分配单元配置为:确定执行所述第二阶段的子任务所需的第二数量的第二虚拟资源;在所述第一阶段的子任务执行完毕且所述第二阶段的子任务开始执行前,响应于所述图形处理器中当前可用的物理资源的数量大于等于所述第二数量,将所述当前可用的物理资源中所述第二数量的第二物理资源映射到所述第二虚拟资源,以使用所述第二物理资源执行所述第二阶段的子任务。
例如,本公开至少一实施例提供的资源分配装置还包括指令分组单元,所述指令分组单元配置为根据指令类型将执行所述多个阶段的子任务所需的指令进行分组。
本公开至少一实施例提供一种电子设备,包括:存储器,非瞬时性地存储有计算机可执行指令;处理器,配置为运行所述计算机可执行指令,其中,所述计算机可执行指令被所述处理器运行时实现根据本公开任一实施例所述的资源分配方法。
本公开至少一实施例提供一种非瞬时性计算机可读存储介质,其中,所述非瞬时性计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现根据本公开任一实施例所述的资源分配方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为一种通用图形处理器(GPGPU)的一种结构示意图;
图2为本公开至少一实施例提供的一种资源分配方法的示意性流程图;
图3为本公开至少一实施例提供的一种资源分配方法的示意性流程图;
图4为为本公开至少一实施例提供的资源映射关系示意图;
图5为本公开至少一实施例提供的一种资源分配装置的示意性框图;
图6为本公开至少一实施例提供的一种电子设备的示意性框图;
图7为本公开至少一实施例提供的一种非瞬时性计算机可读存储介质的示意图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
图1为一种通用图形处理器(GPGPU)的一种结构示意图。
在并行计算中,计算任务一般通过多个线程(thread)执行。如图1所示,这些线程在通用图形处理器(或称为并行计算处理器)中执行前,线程块调度模块中被划分成多个线程块(thread block),然后经由线程块分发模块,将多个线程块分发到各个计算单元(CU)(例如,流多处理器(SM))。一个线程块中的所有线程必须要分配到同一个计算单元上执行。同时,线程块会被拆分成最小执行线程束(或简称线程束,thread warp),每个线程束包含了固定数量(或小于这个固定数量)的线程,例如,32个线程。多个线程块可以在同一个计算单元中执行,或者在不同计算单元中执行。
在每个计算单元中,线程束调度/分发模块对线程束进行调度、分配,以便该计算单元的多个计算核心(例如,流处理器(SP))运行线程束。每个计算核心包括算数逻辑单元(ALU)、浮点计算单元等。根据计算单元中计算核心的个数,一个线程块中的多个线程束可以同时执行或分时执行。每个线程束中的多个线程会执行相同的指令。指令的读取、译码、发射都在线程束调度/分发模块中完成。内存执行指令会被发射到计算单元中的共享缓存(例如共享L1缓存)或进一步发射到统一缓存中以进行读写操作等。
如图1所示,寄存器文件是片上存储器中最重要的一部分,它提供了与计算内核相匹配的数据访问速度。例如,与CPU(Central Processing Unit,中央处理器)内核等只有少量通用寄存器不同,在通用图形处理器中每个流多处理器(Streaming Multiprocessor,简称SM)拥有大量的寄存器资源。通用图形处理器将这些寄存器静态分配给各个线程,大容量的寄存器文件能够让更多线程同时保持在活跃状态,而不需要像CPU那样进行耗时的上下文切换。
例如,在一些场景中,一些任务的执行可以划分成多个阶段(phase)的子任务依次执行。例如,在一个计算任务中,多个阶段可以至少包括两个阶段,即第一阶段和第二阶段,在第一阶段先对各个像素进行深度测试,在第二阶段,依据各个像素的深度测试结果进行进一步处理,输出折射结果。例如,在多个阶段的子任务中,后续阶段的子任务需要基于之前执行过的子任务的计算结果进行处理,后续阶段的子任务需要在之前执行的子任务执行完成后才可执行,例如需要之前执行的子任务执行完成且转去执行其它操作后,后续子任务才可执行。
目前,在申请寄存器文件等资源时,针对一个完整的任务,需要一次性将各阶段所需的资源全部申请完成,才可开始执行该任务。若一个任务需要申请的资源非常大,但该任务的执行是分阶段的,申请的资源中的部分资源并非会立即用到,这些资源也无法提供给其他线程或线程束使用,从而导致占用大量的硬件存储资源,影响处理器的执行效率和并行度。
例如,假设一个任务的执行程序可以分为三个阶段,也即该任务可以分成三个阶段的子任务依次执行,分别是第一阶段phase0的子任务,第二阶段phase1的子任务,第三阶段phase2的子任务。每个阶段的子任务需要用的物理资源分别为phase0_size,phase1_size和phase2_size,该任务的执行需要用到的总物理资源为total_size,其中phase0_size+phase1_size+phase2_size>=total_size,这里,phase0_size+phase1_size+phase2_size大于total_size是指调度模块会根据执行过程中的物理资源释放情况进行一些资源优化。在任务执行前,需要一次性申请total_size数量的物理资源,如果通用图形处理器中当前可用的物理资源的数量小于total_size,即使其大小是大于phase0_size的,也无法让当前任务的第一阶段的程序提前执行,必须等到数量为total_size的全部物理资源到位后,任务方可开始执行,从而第二阶段、第三阶段都形成了较长延时,产生流水线的停顿。并且,一次性为第二阶段、第三阶段申请的物理资源需要等待前面子任务执行完成后才可执行,很长时间都处于未被使用状态,而第二阶段、第三阶段的延时较长,这些物理资源其它线程束也无法使用,这会导致大量占用有限的物理资源,处理器的执行效率和并行度会大幅下降。
并且,目前对寄存器文件资源的申请,一般是直接使用寄存器的物理地址,并且要求物理地址连续,这样才能在指令中比较方便的寻址,因此在分配资源时需要等待一整块连续的、数量为total_size的物理地址空间用于任务的执行,资源分配的灵活性较低。
本公开至少一实施例提供一种资源分配方法、资源分配装置、电子设备和非瞬时性计算机可读存储介质。该资源分配方法包括:获取目标任务,其中,目标任务分成多个阶段的子任务依次执行,多个阶段包括第一阶段;确定执行第一阶段的子任务所需的第一数量的第一虚拟资源;响应于图形处理器中当前可用的物理资源的数量大于等于第一数量,将当前可用的物理资源中第一数量的第一物理资源映射到第一虚拟资源,以使用第一物理资源执行第一阶段的子任务。
在本公开至少一实施例提供的资源分配方法中,资源使用虚拟地址和物理地址相结合的方式进行管理,为第一阶段的子任务分配第一虚拟资源和第一物理资源,并建立两者的映射关系;在任务执行时,不需要立即将整个任务各阶段所需的所有物理资源一次性分配给该任务,只需要将第一阶段所需的物理资源分配给该子任务并与相应的虚拟资源建立映射关系,从而第一阶段的子任务即可开始执行。由于一次性分配的物理资源较少,从而可以让更多的线程束或者线程并行执行,使得流水线始终处于工作状态,有效掩藏、补偿长延时操作,避免流水线的停顿,灵活分配有限的存储资源,提高处理器的执行效率和并行度。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图2为本公开至少一实施例提供的一种资源分配方法的示意性流程图。
例如,该资源分配方法用于通用图形处理器(General-Purpose GraphicsProcessing Unit,简称GPGPU)或图形处理器(Graphics Processing Unit,简称GPU),当然,本公开不限于此,资源分配方法也可应用于其它与图形处理器具有类似架构或原理的处理器。
例如,在后文中以图形处理器为例进行本公开至少一实施例提供的资源分配方法的具体描述,但可以理解的是,该资源分配方法同样可应用于通用图形处理器或具有类似架构或原理的处理器,具体过程不再重复描述。
例如,如图2所示,本公开实施例提供的资源分配方法包括步骤S10至S30。
在步骤S10,获取目标任务。
例如,目标任务分成多个阶段的子任务依次执行,多个阶段包括第一阶段。
例如,目标任务为图形处理器当前需要执行的任务,如计算任务等。
例如,目标任务可以分成多个阶段的子任务,多个子任务依次执行,关于“阶段”和“子任务”的概念可以参考前述内容,这里不再赘述。
例如,多个阶段包括第一阶段,第一阶段的子任务可以是多个子任务中按执行顺序第一个执行的子任务,或者,第一阶段的子任务也可以是多个子任务中任一个子任务,本公开对此不作限制。
例如,多个阶段可以包括第一阶段,当然,也可以包括第二阶段、第三阶段等。
在步骤S20,确定执行第一阶段的子任务所需的第一数量的第一虚拟资源。
例如,步骤S20可以包括:获取执行目标任务所需的总虚拟资源数量,并根据总虚拟资源数量分配对应的连续虚拟地址空间;从连续虚拟地址空间中确定连续的第一数量的第一虚拟资源分配给第一阶段的子任务。
例如,在本公开至少一实施例中,使用虚拟地址映射的方式来申请物理资源,对每一个目标任务申请的虚拟资源必须是连续的。例如,目标任务包括N个阶段的子任务,N为正整数,计算各个阶段的子任务所需的资源数量的加和作为执行目标任务所需的总虚拟资源数量,并分配大小为总虚拟资源数量的连续虚拟地址空间作为目标任务的虚拟资源,例如,连续虚拟地址空间中包括连续的total_size个虚拟地址,total_size为总虚拟资源数量。
例如,从该连续虚拟地址空间中确定第一数量的第一虚拟资源分配给第一阶段的子任务,例如,第一虚拟资源也是连续的。
在步骤S30,响应于图形处理器中当前可用的物理资源的数量大于等于第一数量,将当前可用的物理资源中第一数量的第一物理资源映射到第一虚拟资源,以使用第一物理资源执行第一阶段的子任务。
例如,若图形处理器中当前可用的物理资源的数量大于等于第一数量,从图形处理器中当前可用的物理资源中确定第一数量的第一物理资源,并建立第一虚拟资源与第一物理资源之间一对一的映射关系,以使用第一物理资源执行第一阶段的子任务。
这里“一对一的映射关系”是指,例如第一虚拟资源包括P个虚拟地址,第一物理资源包括P个物理地址,P为正整数且表示第一数量,P个虚拟地址与P个物理地址具有一对一映射关系。
例如,为每个阶段的子任务分配的虚拟资源是连续的,与每个阶段的子任务分配的虚拟资源建立映射关系的物理资源可以不连续。例如,以第一阶段为例,P个虚拟地址是连续的,与P个虚拟地址一一对应的P个物理地址不需要是连续的,从而提升了资源分配的灵活性。
例如,物理资源包括图形处理器中的寄存器文件资源。当然,根据实际需要,物理资源也可以包括图形处理器中其他类型的存储资源。
在本公开至少一实施例中,即使图形处理器中当前可用的物理资源的数量小于目标任务所需的总物理资源数量(等于总虚拟资源数量),只要图形处理器中当前可用的物理资源的数量大于等于第一数量,即可建立第一虚拟资源和第一物理资源之前的映射关系,开始执行第一阶段的子任务,而无需等待整个目标任务中所有阶段所需的总物理资源全部到位后再执行第一阶段的子任务,减少不必要的资源占用,减少一次性分配的物理资源,让更多的线程束或者线程并行执行,使得流水线始终处于工作状态,有效掩藏长延时操作,补偿执行延时,避免流水线的停顿,灵活分配有限的存储资源,提升物理资源的利用效率,提高处理器(尤其是图形处理器)的执行效率和并行度。
例如,多个阶段还包括第二阶段,第二阶段的子任务在第一阶段的子任务之后执行。例如,第二阶段的子任务基于第一阶段的子任务的计算结果执行相应处理,例如,第二阶段的子任务在第一阶段的子任务执行完且转去执行其它操作后才可执行。例如,第二阶段的子任务与第一阶段的子任务之间不存在其它子任务,也即第二阶段的子任务按执行顺序紧邻在第一阶段的子任务之后,或者,第二阶段的子任务与第一阶段的子任务之间还存在其它子任务,本公开对此不作具体限制。
图3为本公开至少一实施例提供的一种资源分配方法的示意性流程图。
如图3所示,本公开至少一实施例提供的资源分配方法还包括步骤S40-S50。
在步骤S40,确定执行第二阶段的子任务所需的第二数量的第二虚拟资源。
与获取第一虚拟资源的过程类似,例如,预先规划大小为总虚拟资源数量的连续虚拟地址空间作为目标任务的虚拟资源,从该连续虚拟地址空间中确定第二数量的第二虚拟资源分配给第二阶段的子任务,例如,第二虚拟资源也是连续的。
例如,在一些示例中,目标任务开始执行前告知图形处理器中的调度模块该目标任务总计需要的总资源数量和每个阶段需要的资源数量,调度模块一次性将大小为总虚拟资源数量的连续虚拟地址空间分配给目标任务,同时分配好每个阶段的子任务所需的虚拟资源。
例如,在另一些示例中,各个阶段的虚拟资源的分配还可以在各个阶段的子任务开始执行前、且上一阶段的子任务执行完成后发生。例如,在第一阶段的子任务执行完成后,为第二阶段的子任务分配第二虚拟资源。
在步骤S50,在第一阶段的子任务执行完毕且第二阶段的子任务开始执行前,响应于图形处理器中当前可用的物理资源的数量大于等于第二数量,将图形处理器中当前可用的物理资源中第二数量的第二物理资源映射到第二虚拟资源,以使用第二物理资源执行第二阶段的子任务。
例如,在本公开至少一实施例中,第二阶段的子任务所需的资源分配只有在第二阶段的子任务经历了之前各阶段的子任务执行时间的等待后(执行延时),并真正开始执行前进行。此时,第二阶段的子任务满足执行条件(例如数据准备完成、线程束形成等)可以开始执行,若图形处理器中当前可用的物理资源的数量大于等于第二数量,则将第二虚拟资源与为第二阶段的子任务分配第二数量的第二物理资源建立映射关系,执行第二阶段的程序,完成第二阶段的子任务。
例如,图形处理器中当前可用的物理资源可理解为资源池,例如,在物理资源为寄存器文件资源时,该资源池可以包括预先分配给执行目标任务的流处理器的多个寄存器中的空闲寄存器,多个空闲的寄存器由该目标任务包括的多个阶段的子任务共享。若多个空闲的寄存器的数量大于等于当前阶段的子任务所需的资源数量,则可进行该阶段的物理资源申请、分配和映射,例如包括步骤S20-S30或者步骤S40-S50。
例如,第二数量也可以是0,此时,第二阶段的子任务可以继续使用第一物理资源执行第二阶段的子任务。
例如,响应于多个阶段的子任务中的第i个阶段的子任务执行后目标任务结束,在第i个阶段的子任务之后执行的各阶段子任务不再执行且不申请和分配物理资源,同时释放为前i个阶段的子任务分配的虚拟资源和物理资源,其中,i为正整数且小于等于多个阶段的总数。
例如,在一些场景中,对于一个目标任务,在第一阶段先对各个像素进行深度测试,在第二阶段,依据各个像素的深度测试结果进行进一步处理,输出折射结果。若第一阶段的深度测试结果指示像素和像素之间存在遮挡,此时不需要再执行第二阶段的计算,也即目标任务可以提前结束,则第二阶段的子任务及之后阶段的子任务可以不再执行,也无需申请和分配物理资源,例如无需再申请第二物理资源及建立第二物理资源和第二虚拟资源的映射关系,同时,释放为第一阶段的子任务分配的第一虚拟资源和第一物理资源,以供后续的其它任务继续使用。
由此,在本公开至少一实施例提供的资源分配方法中,在执行的某些目标任务可能会提前结束时,由于物理资源是在执行各个阶段的子任务前才申请、分配和映射,从而只为该目标任务分配了较少的物理资源,有效补偿了延时;并且目标任务无需等待所有阶段的物理资源全部到位,目标任务可以在第一个阶段的物理资源到位(申请、分配、映射)后提前执行,如果程序执行结果为提前结束,也即后续一些阶段的子任务无需再执行,则可以让目标任务之后执行的其它任务提前开始执行,大幅提升处理效率。
图4为本公开至少一实施例提供的资源分配的映射关系示意图。
如图4所示,目标任务包括三个阶段,分别是第一阶段phase0,第二阶段phase1,第三阶段phase2,三个阶段的子任务依次执行,例如,第一阶段的子任务执行完成后第二阶段的子任务可以执行,第二阶段的子任务执行完成后第三阶段的子任务可以执行。当然,目标任务还可以包括第四阶段、第五阶段中,这里不再示出。
下面结合图4,具体说明本公开至少一实施例提供的资源分配方法的执行过程。
例如,在目标任务开始执行前,按照执行目标任务所需的总虚拟资源数量申请连续的虚拟地址空间,同时,尝试按照总虚拟资源数量申请物理资源,若可用物理资源的数量小于总虚拟资源数量,只要图形处理器中当前可用的物理资源的数量大于等于执行第一阶段phase0的子任务所需的第一数量N1,则为第一阶段phase0的子任务分配包括N1个物理地址的第一物理资源,并与包括N1个虚拟地址的第一虚拟资源建立映射关系。之后,第一阶段的子任务即可开始执行。
例如,如图4所示,执行第一阶段phase0的子任务需要第一数量N1的物理资源,从连续虚拟地址空间中确定连续的N1个虚拟地址作为第一虚拟资源,即图4中的a、a+1、...、a+N1,并且,从图形处理器当前可用物理资源中确定N1个物理地址,将N1个物理地址与N1个虚拟地址建立一对一映射关系,N1为正整数,a表示起始地址。如图4所示,N1个虚拟地址是连续的,但N1个物理地址不需要连续。
之后,在第一阶段phase0的子任务执行完毕且第二阶段phase1的子任务开始执行前,若图形处理器中当前可用的物理资源的数量大于等于执行第二阶段phase1的子任务所需的第二数量N2,则为第二阶段phase1的子任务分配包括N2个物理地址的第二物理资源,并与包括N2个虚拟地址的第二虚拟资源建立映射关系。之后,第二阶段的子任务即可开始执行。
例如,如图4所示,执行第二阶段phase1的子任务需要N2个物理资源,从连续虚拟地址空间中确定连续的N2个虚拟地址,即b、...、b+N2,并且,从图形处理器中当前可用的物理资源中确定N2个物理地址,将N2个物理地址与N2个虚拟地址建立一对一映射关系,N2为正整数,b表示起始地址。如图4所示,N2个虚拟地址是连续的,但N2个物理地址不需要连续。
之后,在第二阶段phase1的子任务执行完毕且第三阶段phase2的子任务开始执行前,若图形处理器中当前可用的物理资源的数量大于等于执行第三阶段phase2的子任务所需的第三数量N3,则为第三阶段phase2的子任务分配包括N3个物理地址的第三物理资源,并与包括N3个虚拟地址的第三虚拟资源建立映射关系,例如,第三虚拟资源为从为目标任务分配的连续虚拟地址空间中确定的执行第三阶段的子任务所需的第三数量的虚拟资源,N3为正整数。之后,第三阶段的子任务即可开始执行。
例如,如图4所示,执行第三阶段phase2的子任务需要N3个物理资源,从连续虚拟地址空间中确定连续的N3个虚拟地址,即c、...、c+N3,并且,从图形处理器当前可用物理资源中确定N3个物理地址,将N3个物理地址与N3个虚拟地址建立一对一映射关系,c表示起始地址。如图4所示,N3个虚拟地址是连续的,但N3个物理地址不需要连续。
对于以上任何阶段,如果程序执行过程中发现目标提前完成,例如第一阶段的子任务执行完成后,计算结果指示第二阶段和第三阶段的子任务无需执行,则后续的第二阶段和第三阶段都不需要申请物理资源和执行,同时将已申请的第一虚拟资源和第一物理资源释放,提给后续的其他任务使用。
在该实施例中,能够大幅提升物理资源(例如寄存器资源)的利用效率,提高处理器,尤其是图形处理器的执行并行度和效率。并且,在执行某些需要较长延迟(latency)的程序时,提前只需要分配较少的物理资源即可让任务的这部分程序提前执行,可以有效的补偿延时,使得流水线始终处于工作状态,有效掩藏长延时操作,避免流水线的停顿,提升系统性能。此外,如果某阶段的子任务的执行结果指示目标任务提前结束,也即后续一些阶段的子任务无需再执行,则可以让在目标任务之后执行的其它任务提前开始执行,大幅提升处理效率。
在本公开至少一实施例提供的资源分配方法中,由于资源的分配和映射分阶段完成,每个阶段的子任务只需要映射当前阶段的子任务所需的物理资源,这对处理器的软硬件设计都提出了更高的要求。
对于编译器来说,在执行各个阶段的子任务时需要对各个阶段的子任务的指令进行分组。例如,执行目标任务的指令可以针对不同阶段进行分组,从而先执行第一阶段的子任务的指令,再执行第二阶段的子任务的指令,例如,这里的每个分组可以包括执行对应的一个阶段的子任务的指令。
例如,本公开至少一实施例提供的资源分配方法还包括:根据指令类型将执行多个阶段的子任务所需的指令进行分组。
例如,根据指令类型将执行多个阶段的子任务所需的指令进行分组,可以包括:将执行多个阶段的子任务所需的指令中的第一类型指令分配在至少一个分组中优先执行,例如,第一类型指令能够使得目标任务提前结束。
例如,在上述目标任务的指令针对不同的阶段分组的基础上,可以把例如depth相关指令(depth指令用于计算每一个位点或者区域的测序深度并在标准显示设备中显示)、pixel discard(着色器片元处理,将不符合程序条件的线程或者像素舍弃掉)相关指令等第一类型指令放在一个分组中优先执行。
例如,第一类型指令所分配的分组可以是执行第一阶段的子任务的指令的分组,第一阶段的子任务的指令的分组属于第一个或者比较靠前的分组。
例如,depth相关指令或pixel discard相关指令等属于第一类型指令,其有可能提前使得当前线程束或线程结束,从而后续指令无需执行,例如后续阶段的子任务无需执行,也无需为其申请、分配和映射相应的物理资源,提高物理资源利用效率,大幅提升处理效率。
例如,根据指令类型将执行多个阶段的子任务所需的指令进行分组,可以包括:将执行多个阶段的子任务所需的指令中的第二类型指令分配在至少一个分组中优先执行,例如,第二类型指令的执行时间较长。
例如,在上述目标任务的指令针对不同的阶段分组的基础上,可以把一些执行时间(latency)较长的指令,如sample(抽样),搬运数据指令(如加载Load或存储Store)等执行时间较长的第二类型指令放在第一个或者比较靠前的分组中优先执行,例如,这个分组可以是最先执行的第一阶段的子任务的指令的分组,或者是执行顺序靠前的第二阶段的子任务的指令的分组。由于一次分配的物理资源较少,从而可以让更多的线程或者线程束并行执行,达到补偿长延时的效果。
例如,在本公开至少一实施例中,软件和编译器还需要对目标任务进行分析,从而给硬件提供各个阶段需要的物理资源的数量。例如,目标任务开始执行前软件和编译器对目标任务进行分析,告知图形处理器中的调度模块该目标任务总计需要的总资源数量和每个阶段需要的资源数量,调度模块一次性将大小为总虚拟资源数量的连续虚拟地址空间分配给目标任务,同时分配好每个阶段的子任务所需的虚拟资源。
在本公开至少一实施例中,能够对物理资源(例如寄存器文件资源)进行更灵活的管理,一方面提高物理资源的使用效率,增加线程或线程束的执行并行度,另一方面确保能预留一定的物理资源,确保已经开始执行的线程束能够按照某种方式在后面某个时间能够得到足够的物理资源,避免死锁。
与上述的资源分配方法相对应,本公开至少一实施例还提供一种资源分配装置。
图5为本公开至少一实施例提供的一种资源分配装置的示意性框图。
例如,如图5所示,资源分配装置100包括:获取单元101、虚拟资源确定单元102和第一资源分配单元103。
例如,资源分配装置100用于图形处理器,关于图形处理器的介绍可以参考前述资源分配方法的相关描述,这里不再赘述。
例如,获取单元101,配置为获取目标任务,其中,目标任务分成多个阶段的子任务依次执行,多个阶段包括第一阶段。
例如,虚拟资源确定单元,配置为确定执行第一阶段的子任务所需的第一数量的第一虚拟资源102。
例如,第一资源分配单元103,配置为响应于图形处理器中当前可用的物理资源的数量大于等于第一数量,将当前可用的物理资源中第一数量的第一物理资源映射到第一虚拟资源,以使用第一物理资源执行第一阶段的子任务。
例如,虚拟资源确定单元102执行确定执行第一阶段的子任务所需的第一数量的第一虚拟资源时,包括执行以下操作:获取执行目标任务所需的总虚拟资源数量,并根据总虚拟资源数量分配对应的连续虚拟地址空间;从连续虚拟地址空间中确定连续的第一数量的第一虚拟资源分配给第一阶段的子任务。
例如,第一资源分配单元103执行将当前可用的物理资源中第一数量的第一物理资源映射到第一虚拟资源,以使用第一物理资源执行第一阶段的子任务时,包括执行以下操作:从图形处理器中当前可用的物理资源中确定第一数量的第一物理资源;建立第一虚拟资源与第一物理资源之间一对一的映射关系。
例如,多个阶段还包括第二阶段,第二阶段的子任务在第一阶段的子任务之后执行。
例如,资源分配装置还包括第二资源分配单元(未示出),第二资源分配单元配置为:确定执行第二阶段的子任务所需的第二数量的第二虚拟资源;在第一阶段的子任务执行完毕且第二阶段的子任务开始执行前,响应于图形处理器中当前可用的物理资源的数量大于等于第二数量,将当前可用的物理资源中第二数量的第二物理资源映射到第二虚拟资源,以使用第二物理资源执行第二阶段的子任务。
例如,响应于多个阶段的子任务中的第i个阶段的子任务执行后目标任务结束,在第i个阶段的子任务之后执行的各阶段子任务不再执行且不申请和分配物理资源,同时释放为前i个阶段的子任务分配的虚拟资源和物理资源,其中,i为正整数且小于等于多个阶段的总数。
例如,资源分配装置还包括指令分组单元(未示出),指令分组单元配置为根据指令类型将执行多个阶段的子任务所需的指令进行分组。
例如,指令分组单元执行根据指令类型将执行多个阶段的子任务所需的指令进行分组时,包括执行以下操作:将执行多个阶段的子任务所需的指令中的第一类型指令分配在至少一个分组中优先执行,其中,第一类型指令能够使得目标任务提前结束。
例如,指令分组单元执行根据指令类型将执行多个阶段的子任务所需的指令进行分组时,包括执行以下操作:将执行多个阶段的子任务所需的指令中的第二类型指令分配在至少一个分组中优先执行,其中,第二类型指令的执行时间较长。
例如,为每个阶段的子任务分配的虚拟资源是连续的,与每个阶段的子任务分配的虚拟资源建立映射关系的物理资源不连续。
例如,物理资源包括图形处理器中的寄存器文件资源。
例如,获取单元101、虚拟资源确定单元102和第一资源分配单元103包括存储在存储器中的代码和程序;处理器可以执行该代码和程序以实现如上所述的获取单元101、虚拟资源确定单元102和第一资源分配单元103的一些功能或全部功能。例如,获取单元101、虚拟资源确定单元102和第一资源分配单元103可以是专用硬件器件,用来实现如上所述的获取单元101、虚拟资源确定单元102和第一资源分配单元103的一些或全部功能。例如,获取单元101、虚拟资源确定单元102和第一资源分配单元103可以是一个电路板或多个电路板的组合,用于实现如上所述的功能。在本申请实施例中,该一个电路板或多个电路板的组合可以包括:(1)一个或多个处理器;(2)与处理器相连接的一个或多个非暂时的存储器;以及(3)处理器可执行的存储在存储器中的固件。
需要说明的是,获取单元101用于实现图2所示的步骤S10,虚拟资源确定单元102用于实现图2所示的步骤S20,第一资源分配单元103用于实现图2所示的步骤S30。从而关于获取单元101的具体说明可以参考上述资源分配方法的实施例中图2所示的步骤S10的相关描述,关于虚拟资源确定单元102的具体说明可以参考上述资源分配方法的实施例中图2所示的步骤S20的相关描述,关于第一资源分配单元103的具体说明可以参考上述资源分配方法的实施例中图2所示的步骤S30的相关描述。此外,资源分配装置可以实现与前述资源分配方法相似的技术效果,在此不再赘述。
本公开至少一实施例还提供一种电子设备,图6为本公开至少一实施例提供的一种电子设备的示意性框图。
例如,如图6所示,该电子设备包括处理器201、通信接口202、存储器203和通信总线204。处理器201、通信接口202、存储器203通过通信总线204实现相互通信,处理器201、通信接口202、存储器203等组件之间也可以通过网络连接进行通信。本公开对网络的类型和功能在此不作限制。
例如,存储器203用于非瞬时性地存储计算机可执行指令。处理器201用于运行计算机可执行指令时,计算机可执行指令被处理器201运行时实现根据上述任一实施例所述的资源分配方法。关于该资源分配方法的各个步骤的具体实现以及相关解释内容可以参见上述资源分配方法的实施例,在此不作赘述。
例如,处理器201执行存储器203上所存储的程序而实现资源分配方法的实现方式,与前述资源分配方法的实施例部分所提及的实现方式相同,这里也不再赘述。
例如,通信总线204可以是外设部件互连标准(PCI)总线或扩展工业标准结构(EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
例如,通信接口202用于实现电子设备与其他设备之间的通信。
例如,处理器201和存储器203可以设置在服务器端(或云端)。
例如,处理器201可以控制电子设备中的其它组件以执行期望的功能。处理器201可以是中央处理器(CPU)、网络处理器(NP)等,还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。中央处理元(CPU)可以为X86或ARM架构等。
例如,存储器203可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机可执行指令,处理器201可以运行所述计算机可执行指令,以实现电子设备的各种功能。在存储介质中还可以存储各种应用程序和各种数据等。
例如,关于电子设备执行资源分配的过程的详细说明可以参考资源分配方法的实施例中的相关描述,重复之处不再赘述。
图7为本公开至少一实施例提供的一种非瞬时性计算机可读存储介质的示意图。例如,如图7所示,在存储介质300上可以非暂时性地存储一个或多个计算机可执行指令301。例如,当计算机可执行指令301由处理器执行时可以执行根据上文所述的资源分配方法中的一个或多个步骤。
例如,该存储介质300可以应用于上述电子设备和/或资源分配装置中。例如,存储介质300可以包括电子设备中的存储器203。
例如,关于存储介质300的说明可以参考电子设备的实施例中对于存储器的描述,重复之处不再赘述。
本领域技术人员能够理解,本公开所披露的内容可以出现多种变型和改进。例如,以上所描述的各种设备或组件可以通过硬件实现,也可以通过软件、固件、或者三者中的一些或全部的组合实现。
此外,虽然本公开对根据本公开的实施例的系统中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。单元仅是说明性的,并且系统和方法的不同方面可以使用不同单元。
本公开中使用了流程图用来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中。
本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过计算机程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。
除非另有定义,这里使用的所有术语具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。
Claims (17)
1.一种资源分配方法,用于图形处理器,所述资源分配方法包括:
获取目标任务,其中,所述目标任务分成多个阶段的子任务依次执行,所述多个阶段包括第一阶段;
确定执行所述第一阶段的子任务所需的第一数量的第一虚拟资源;
响应于所述图形处理器中当前可用的物理资源的数量大于等于所述第一数量,将所述当前可用的物理资源中所述第一数量的第一物理资源映射到所述第一虚拟资源,以使用所述第一物理资源执行所述第一阶段的子任务。
2.根据权利要求1所述的资源分配方法,其中,确定执行所述第一阶段的子任务所需的第一数量的第一虚拟资源,包括:
获取执行所述目标任务所需的总虚拟资源数量,并根据所述总虚拟资源数量分配对应的连续虚拟地址空间;
从所述连续虚拟地址空间中确定连续的所述第一数量的所述第一虚拟资源分配给所述第一阶段的子任务。
3.根据权利要求1所述的资源分配方法,其中,将所述当前可用的物理资源中所述第一数量的第一物理资源映射到所述第一虚拟资源,以使用所述第一物理资源执行所述第一阶段的子任务,包括:
从所述图形处理器中当前可用的物理资源中确定所述第一数量的所述第一物理资源;
建立所述第一虚拟资源与所述第一物理资源之间一对一的映射关系。
4.根据权利要求1所述的资源分配方法,其中,所述多个阶段还包括第二阶段,所述第二阶段的子任务在所述第一阶段的子任务之后执行,
所述资源分配方法还包括:
确定执行所述第二阶段的子任务所需的第二数量的第二虚拟资源;
在所述第一阶段的子任务执行完毕且所述第二阶段的子任务开始执行前,响应于所述图形处理器中当前可用的物理资源的数量大于等于所述第二数量,将所述图形处理器中当前可用的物理资源中所述第二数量的第二物理资源映射到所述第二虚拟资源,以使用所述第二物理资源执行所述第二阶段的子任务。
5.根据权利要求1所述的资源分配方法,其中,响应于所述多个阶段的子任务中的第i个阶段的子任务执行后所述目标任务结束,在所述第i个阶段的子任务之后执行的各阶段子任务不再执行且不申请和分配物理资源,同时释放为前i个阶段的子任务分配的虚拟资源和物理资源,其中,i为正整数且小于等于所述多个阶段的总数。
6.根据权利要求1-5任一项所述的资源分配方法,还包括:
根据指令类型将执行所述多个阶段的子任务所需的指令进行分组。
7.根据权利要求6所述的资源分配方法,其中,根据指令类型将执行所述多个阶段的子任务所需的指令进行分组,包括:
将执行所述多个阶段的子任务所需的指令中的第一类型指令分配在至少一个分组中优先执行,其中,所述第一类型指令能够使得所述目标任务提前结束。
8.根据权利要求6所述的资源分配方法,其中,根据指令类型将执行所述多个阶段的子任务所需的指令进行分组,包括:
将执行所述多个阶段的子任务所需的指令中的第二类型指令分配在至少一个分组中优先执行,其中,所述第二类型指令的执行时间较长。
9.根据权利要求1-5任一项所述的资源分配方法,其中,为每个阶段的子任务分配的虚拟资源是连续的,与每个阶段的子任务分配的虚拟资源建立映射关系的物理资源不连续。
10.根据权利要求1-5任一项所述的资源分配方法,其中,所述物理资源包括所述图形处理器中的寄存器文件资源。
11.一种资源分配装置,用于图形处理器,所述资源分配装置包括:
获取单元,配置为获取目标任务,其中,所述目标任务分成多个阶段的子任务依次执行,所述多个阶段包括第一阶段;
虚拟资源确定单元,配置为确定执行所述第一阶段的子任务所需的第一数量的第一虚拟资源;
第一资源分配单元,配置为响应于所述图形处理器中当前可用的物理资源的数量大于等于所述第一数量,将所述当前可用的物理资源中所述第一数量的第一物理资源映射到所述第一虚拟资源,以使用所述第一物理资源执行所述第一阶段的子任务。
12.根据权利要求11所述的资源分配装置,其中,所述虚拟资源确定单元执行确定执行所述第一阶段的子任务所需的第一数量的第一虚拟资源时,包括执行以下操作:
获取执行所述目标任务所需的总虚拟资源数量,并根据所述总虚拟资源数量分配对应的连续虚拟地址空间;
从所述连续虚拟地址空间中确定连续的所述第一数量的所述第一虚拟资源分配给所述第一阶段的子任务。
13.根据权利要求11所述的资源分配装置,其中,所述第一资源分配单元执行将所述当前可用的物理资源中所述第一数量的第一物理资源映射到所述第一虚拟资源,以使用所述第一物理资源执行所述第一阶段的子任务时,包括执行以下操作:
从所述图形处理器中当前可用的物理资源中确定所述第一数量的第一物理资源;
建立所述第一虚拟资源与所述第一物理资源之间一对一的映射关系。
14.根据权利要求11所述的资源分配装置,其中,所述多个阶段还包括第二阶段,所述第二阶段的子任务在所述第一阶段的子任务之后执行,
所述资源分配装置还包括第二资源分配单元,所述第二资源分配单元配置为:
确定执行所述第二阶段的子任务所需的第二数量的第二虚拟资源;
在所述第一阶段的子任务执行完毕且所述第二阶段的子任务开始执行前,响应于所述图形处理器中当前可用的物理资源的数量大于等于所述第二数量,将所述当前可用的物理资源中所述第二数量的第二物理资源映射到所述第二虚拟资源,以使用所述第二物理资源执行所述第二阶段的子任务。
15.根据权利要求11-14任一项所述的资源分配装置,还包括指令分组单元,
所述指令分组单元配置为根据指令类型将执行所述多个阶段的子任务所需的指令进行分组。
16.一种电子设备,包括:
存储器,非瞬时性地存储有计算机可执行指令;
处理器,配置为运行所述计算机可执行指令,
其中,所述计算机可执行指令被所述处理器运行时实现根据权利要求1-10任一项所述的资源分配方法。
17.一种非瞬时性计算机可读存储介质,其中,所述非瞬时性计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现根据权利要求1-10任一项所述的资源分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310137450.4A CN116302497A (zh) | 2023-02-20 | 2023-02-20 | 资源分配方法、装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310137450.4A CN116302497A (zh) | 2023-02-20 | 2023-02-20 | 资源分配方法、装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116302497A true CN116302497A (zh) | 2023-06-23 |
Family
ID=86787984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310137450.4A Pending CN116302497A (zh) | 2023-02-20 | 2023-02-20 | 资源分配方法、装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302497A (zh) |
-
2023
- 2023-02-20 CN CN202310137450.4A patent/CN116302497A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210349763A1 (en) | Technique for computational nested parallelism | |
US9535815B2 (en) | System, method, and computer program product for collecting execution statistics for graphics processing unit workloads | |
US8732713B2 (en) | Thread group scheduler for computing on a parallel thread processor | |
TWI525540B (zh) | 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 | |
US9529632B2 (en) | Interlocked increment memory allocation and access | |
CN110008009B (zh) | 在运行时绑定常量以提高资源利用率 | |
US9436504B2 (en) | Techniques for managing the execution order of multiple nested tasks executing on a parallel processor | |
US8751771B2 (en) | Efficient implementation of arrays of structures on SIMT and SIMD architectures | |
US9710306B2 (en) | Methods and apparatus for auto-throttling encapsulated compute tasks | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
US8619087B2 (en) | Inter-shader attribute buffer optimization | |
US9256623B2 (en) | System, method, and computer program product for scheduling tasks associated with continuation thread blocks | |
US20130198760A1 (en) | Automatic dependent task launch | |
US9742869B2 (en) | Approach to adaptive allocation of shared resources in computer systems | |
GB2520571A (en) | A data processing apparatus and method for performing vector processing | |
US20140259016A1 (en) | System and method for runtime scheduling of gpu tasks | |
US9626216B2 (en) | Graphics processing unit sharing between many applications | |
US20130198759A1 (en) | Controlling work distribution for processing tasks | |
US9471387B2 (en) | Scheduling in job execution | |
TW201337829A (zh) | 暫存器檔案型讀取 | |
US9286114B2 (en) | System and method for launching data parallel and task parallel application threads and graphics processing unit incorporating the same | |
CN114153500A (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
US9442759B2 (en) | Concurrent execution of independent streams in multi-channel time slice groups | |
US10152329B2 (en) | Pre-scheduled replays of divergent operations | |
US20120151145A1 (en) | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit |
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 | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Applicant after: Shanghai Bi Ren Technology Co.,Ltd. Address before: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Applicant before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |
|
CB02 | Change of applicant information |