CN112114877A - 一种动态补偿线程束warp的方法、处理器及计算机存储介质 - Google Patents
一种动态补偿线程束warp的方法、处理器及计算机存储介质 Download PDFInfo
- Publication number
- CN112114877A CN112114877A CN202011043576.8A CN202011043576A CN112114877A CN 112114877 A CN112114877 A CN 112114877A CN 202011043576 A CN202011043576 A CN 202011043576A CN 112114877 A CN112114877 A CN 112114877A
- Authority
- CN
- China
- Prior art keywords
- warp
- idle
- thread
- compensation
- execution
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000015654 memory Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000001447 compensatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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
-
- 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)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
本发明实施例公开了一种动态补偿线程束warp的方法、处理器及计算机存储介质;该方法可以包括:相应于检测到当前warp基于执行分支语句出现处于空闲状态的空闲线程,获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp;调度所述补偿warp进入执行状态并且调度所述当前warp中的空闲线程执行所述补偿warp。
Description
技术领域
本发明实施例涉及图形处理器(GPU,Graphics Processing Unit)技术领域,尤其涉及一种动态补偿线程束warp的方法、处理器及计算机存储介质。
背景技术
单指令多线程(SIMT,Single-Instruction-Mltiple-Thread)是目前一些GPU常规采用的并行执行模式,而线程组或线程束(warp)则是GPU中的一个基本调度单位。在执行一些特定的应用或者在某些特定的场景下,并非warp中所包含的所有线程均处于活跃状态,以if-else语块为例,当处理器中的一个warp在处理该条件分支语块的过程中,基于条件判断结果会得出两个分支代码,其中,该warp中所包括的部分线程(比如M个线程)会由于遵循“if”判断结果为真而被执行,从而处于活动状态;该warp中所包括的其他部分线程(比如K-M个线程,K表示一个warp所包含的所有线程数量)则会由于遵循“if”判断结果为假的“else”路径而被暂时禁用或屏蔽(等待中),从而处于空闲状态。此时,处于空闲状态的K-M个线程所对应的计算资源就会由于其所处的空闲状态而没有被使用,直至等待执行“else”路径时才会因为K-M个线程由空闲状态变更为活动状态而被使用。上述现象造成了计算资源的浪费。
发明内容
有鉴于此,本发明实施例期望提供一种动态补偿线程束warp的方法、处理器及计算机存储介质;能够充分利用空闲的执行资源,降低计算资源的浪费,提高GPU的性能。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供了一种处理器,所述处理器包括:管线控制器、所执行线程被组织成多个线程组warp的多个核心;其中,每个warp能够在多个核心中执行,每个核心同一个时刻对应一个线程的执行;
所述管线控制器,经配置为执行以下步骤:
相应于检测到当前warp基于执行分支语句出现处于空闲状态的空闲线程,获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp;
调度所述补偿warp进入执行状态并且调度所述当前warp中的空闲线程执行所述补偿warp。
第二方面,本发明实施例提供了一种动态补偿线程束warp的方法,所述方法包括:
相应于检测到当前warp基于执行分支语句出现处于空闲状态的空闲线程,获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp;
调度所述补偿warp进入执行状态并且调度所述当前warp中的空闲线程执行所述补偿warp。
第三方面,本发明实施例提供了一种计算机存储介质、所述计算机存储介质存储有动态补偿线程束warp的程序,所述动态补偿线程束warp的程序被至少一个处理器执行时实现第二方面所述的动态补偿线程束warp的方法的步骤。
本发明实施例提供了一种动态补偿线程束warp的方法、处理器及计算机存储介质;在当前warp中的空闲线程处于空闲状态的时间段内,将补偿warp调度至空闲线程以执行,从而在并行执行分支语句的过程中,对空闲状态的线程进行填充利用,充分地利用了这部分线程所对应的计算资源,以此达到计算资源更高的利用率。
附图说明
图1为本发明实施例提供的一种处理器的组成示意图。
图2为本发明实施例提供的一种基于时序的warp补偿示意图。
图3为本发明实施例提供的另一种基于时序的warp动态补偿示意图。
图4为本发明实施例提供的一种动态补偿线程束warp的方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参见图1,其示出了能够实现本发明实施例技术方案的一种适用于SIMT执行模式的处理器100示意图,在一些示例中,该处理器100能够作为GPU实现高度并行计算的处理器集群阵列中的通用处理集群的一个,以实现并行地执行大量的线程,其中每个线程是程序的实例(instance)。在另一些示例中,该处理器100可以被实现为GPU中的流多处理器(SM,Streaming Multiprocessors)。在该处理器100中,可以包括被组织成warp的多个线程处理器或被称之为核心,每个核心同一个时刻对应一个线程的执行。在一些示例中,相应于处理器100被实现为SM,核心可以被实现为流处理器(SP,Streaming Processor)。该处理器100可以包含J个warp 104-1到104-J,每个warp具有K个核心106-1到106K。在一些示例中,warp104-1到104-J可以进一步地被组织成一个或多个线程块(block)102。在一些示例中,每个warp可具有32个核心;在其他示例中,每个warp可具有4个核心、8个核心、16个核心、或者多如数万个核心;如图1所示,本发明实施例以设定每个warp具有8个核心(即K=8)为例进行技术方案阐述,可以理解地,上述设定仅用于技术方案说明,并非对技术方案的保护范围进行限制,本领域技术人员可以很容易地将基于上述设定所阐述的技术方案适用于其他情况,在此不作赘述。在某些可替代的示例中,该处理器100可将核心仅组织成warp,省略线程块block的组织级别。
进一步来说,处理器100还可以包括管线控制器108、共享存储器110、以及与warp104-1到104-J相关联的本地存储器112-1到112-J的阵列。管线控制器108通过数据总线114将任务分布到各个warp 104-1到104-J 。管线控制器108创建、管理、调度、执行并提供机制以将warp 104-1 到104-J同步。继续参见图1所示的处理器100,warp 内的核心相互并行地执行。warp 104-1到104-J通过存储器总线116与共享存储器110进行通信。warp 104-1到104-J通过本地总线118-1到118-J分别与本地存储器112-1到112-J进行通信。例如图1中所示,warp 104-J 以通过本地总线118-J进行通信来利用本地存储器112-J。处理器100 的某些实施例将共享存储器110的共享部分分配到每个线程块102,并允许由线程块102内的所有warp访问共享存储器110的共享部分。某些实施例包括仅使用本地存储器的warp。许多其他实施例包括平衡本地存储器和共享存储器110的使用的warp。
对于图1所示的处理器100,在实际执行并行处理的过程中,单个warp的宽度(也可被称为warp所包含的线程数或核心的数目)通常是固定的。以K=8为例,根据目前并行处理方案执行分支语句的情况示意如图2所示,在图3中,纵向以顺序的处理周期表征时间顺序,各相邻的时刻点之间均相差一个处理周期cycle。由图中可以看出,从cycle-n至cycle-n+3的第一时间段以及从cycle-n+4至cycle-n+7的第二时间段分别对应着分支语句两个代码区域,warp中所包括的8个线程分别标记为T0、T1、T2、T3、T4、T5、T6和T7。在图2中,未被填充的线程表示其处于活跃状态或活动状态,也可被称之为活跃线程或活动线程;被交叉线填充的线程表示其处于屏蔽状态或空闲状态,也可称之为屏蔽线程或空闲线程。对于处于屏蔽状态的线程来说,通常会执行空操作、或者不执行任何操作,这就意味着一个warp执行分支语句过程中,处于屏蔽状态的线程有部分时间可以认为是无效的,其对应的计算资源是被浪费掉的从图2中可以看出,在执行分支语句的过程中,一个warp的线程利用率平均仅有50%,极大地浪费了计算资源。
为了避免上述情况的发生,提高GPU的并行执行性能,本发明实施例期望能够在并行执行分支语句的过程中,对空闲状态的线程进行填充利用,以便能够将这部分线程所对应的计算资源充分利用起来,以此达到计算资源更高的利用率。基于此,本发明实施例期望能够在一个warp执行分支语句的过程中,对warp中的空闲状态线程进行填充,因此,对于图1所示的处理器100,在一些示例中,管线控制器108经配置为执行:相应于检测到当前warp基于执行分支语句出现处于空闲状态的空闲线程,获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp;调度所述补偿warp进入执行状态并且调度所述当前warp中的空闲线程执行所述补偿warp。
通过上述示例,在当前warp中的空闲线程处于空闲状态的时间段内,将补偿warp调度至空闲线程以执行,从而在并行执行分支语句的过程中,对空闲状态的线程进行填充利用,充分地利用了这部分线程所对应的计算资源,以此达到计算资源更高的利用率。
基于上述示例,在一些可能的实现方式中,管线控制器108通常优先从warp队列中进行选择,以获得补偿warp。因此,管线控制器108,经配置为:从当前尚未执行的warp队列中选择warp宽度与所述空闲线程数目相同的目标warp;将选择出的所述目标warp作为所述补偿warp。对于该实现方式,具体来说,作为GPU实现并行执行的基本调度单位,warp宽度对并行执行的性能和效果影响极大,warp宽度通常表示一个warp所包含的线程数目,假定一个warp的宽度为n,则基于该宽度,该warp可以被表示为warp-n。由于warp队列中的warp宽度并不确定,且通常情况下,并不能保证在warp队列中找到宽度恰好与所述空闲线程数目相同的warp,也就是说,在warp队列中可能不存在这样的目标warp。
基于以上阐述,在无法从warp队列中找到目标warp的情况下,就可以根据所述空闲线程生成相应的满足所述空闲线程数目的warp作为补偿warp;当然,从warp队列中找到目标warp并非是必须的前置条件。在一些可能的实现方式中,管线控制器108,经配置为:按照所述空闲线程数目从任务队列中选择屏蔽了设定数目线程的warp作为所述补偿warp。具体来说,由于空闲线程数目的限制,当无法找到相应宽度的warp之后,还可以根据任务队列中已屏蔽的warp来选择补偿warp。举例来说,当前warp在执行分支语句过程中屏蔽了N个线程,即空闲线程数目为N;在任务队列中,在一个warp屏蔽了设定数目线程后,剩余的非屏蔽线程数目不超过N的情况下,就可以将该warp的非屏蔽线程调度进入执行状态并且由当前warp的空闲线程进行执行。在本发明实施例中,该warp的非屏蔽线程可以被称之为补偿线程,相应来说,该warp也就可被称为补偿warp。对于宽度小于8的warp来说,可以支持8种宽度的warp作为补偿warp,即warp-1至warp-8。
基于上述实现方式,在当前warp执行分支语句完毕之后,在一些实施例中,管线控制器108,经配置为:将warp队列中尚未执行的warp调度至所述当前warp继续执行;以及,在当前warp继续执行过程中,相应于所述当前warp执行分支语句而出现新的空闲线程,获取用于在所述新的空闲线程处于空闲状态期间填充所述新的空闲线程的新的补偿warp;调度所述新的补偿warp进入执行状态并且调度所述当前warp中所述新的空闲线程执行所述新的补偿warp。
针对上述实施例,对于继续执行过程中所出现的新的空闲线程,优选地,管线控制器108,可以根据所述新的空闲线程数目从当前已有且尚未执行结束的补偿warp队列中查找匹配warp,并将查找得到所述匹配warp作为新的补偿warp。但是进一步地,若此时没有空余的补偿warp,或者在补偿warp队列中无法找到匹配warp,那么,管线控制器108,还可以经配置为:根据所述新的空闲线程数目从线程中创建补偿warp,并将创建所得到的补偿warp调入所述新的空闲线程以执行。
此外,在本发明实施例中,在通过补偿warp填充当前warp的空闲线程执行之后,若当前warp执行分支语句结束,但补偿warp尚未执行完成,则此时管线控制器108可以根据所述补偿warp的宽度以及当前warp的宽度确定继续执行的warp,并调度当前warp中除补偿warp以外的其他线程以执行所述继续执行的warp。举例来说,当前warp宽度为8,由于执行分支语句出现了4个空闲线程,此时根据本发明实施例上述内容确定活跃线程不超过4的warp作为补偿warp,并且会从4个空闲线程中按照该补偿warp的宽度调度空闲线程以执行该补偿warp;若当前warp执行分支语句结束,但补偿warp的任务尚未执行结束,设定补偿warp的宽度为3,则当前warp中会出现5个线程没有任务执行,此时,可以按照宽度由宽到窄的顺序选择所述继续执行的warp,也就是说,为了能够更加充分的利用资源,应当优先选择宽度为5的warp作为继续执行的warp。
对于上述技术方案,本发明实施例通过以下具体示例对其实现过程进行阐述,在本具体示例中,设定当前warp宽度为8,分支语句为嵌套分支,也就是说会出现三个代码区域,如图3所示,纵向以顺序的处理周期表征时间顺序,各相邻的时刻点之间均相差一个处理周期cycle。由图中可以看出,从cycle-n至cycle-n+3的第一时间段对应于分支语句的第一代码区域,从cycle-n+4和cycle-n+5的第二时间段对应于分支语句的嵌套分支部分,可以认为是第二代码区域;从cycle-n+6至cycle-n+9的第三时间段对应于分支语句的第三代码区域。warp中所包括的8个线程分别标记为T0、T1、T2、T3、T4、T5、T6和T7。以未被填充的线程表示为活跃线程或活动线程;被交叉线填充的线程表示为屏蔽线程或空闲线程,从图3中可以看出,当前warp在执行第一代码区域期间,活跃线程分别为T0、T1、T3、T6和T7;而空闲线程为T2、T4和T5,空闲线程数目为3;所以,在执行第一代码区域期间,需要对上述三个空闲线程进行填充,也就是说,在该期间,补偿warp的宽度为3。当前warp在执行第二代码区域期间,活跃线程分别为T0、T6和T7;而空闲线程为T1、T2、T3、T4和T5,空闲线程数目为5;所以,在执行第二代码区域期间,需要对上述五个空闲线程进行填充,也就是说,在该期间,补偿warp的宽度为5。当前warp在执行第三代码区域期间,活跃线程分别为T2、T4和T5;而空闲线程为T0、T1、T3、T6和T7,空闲线程数目为5;所以,在执行第三代码区域期间,需要对上述五个空闲线程进行填充,也就是说,在该期间,补偿warp的宽度仍旧为5。尽管在执行第二代码区域期间和执行第三代码区域期间都需要对五个空闲线程进行填充,但是具体填充的线程是有差异的,所以,管线控制器108在调度所述当前warp中的空闲线程执行所述补偿warp过程中,需要为每个线程的线程标识对应设置执行单元标识,也就是图1中的核心标识,以区分不同线程对应的执行单元,即核心。经过执行单元标识的对应设置,可以看出,在执行第二代码区域期间,5个空闲线程在执行单元层面是连续的;而在执行第三代码区域期间,5个空闲线程在执行单元层面是不连续的。因此,可以在执行第三代码区域期间,对于被调入执行的空闲线程所对应的执行单元进行重新排列。
需要说明的是,对于补偿warp中若再次发生条件分支,可以按照前述内容中针对当前warp的方案进行继续填充调度;同样也可以基于控制逻辑实现的复杂性和所带来的能效比这些方面的考虑,不再对补偿warp进行继续填充调度。本发明实施例对此不作具体限定。
基于前述技术方案相同的发明构思,参见图4,其示出了本发明实施例提供的一种动态补偿线程束warp的方法,该方法可以应用于图1所示的处理器100中,所述方法可以包括:
S401:相应于检测到当前warp基于执行分支语句出现处于空闲状态的空闲线程,获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp;
S402:调度所述补偿warp进入执行状态并且调度所述当前warp中的空闲线程执行所述补偿warp。
对于图4所示的技术方案,在一些示例中,所述获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp,包括:
从当前尚未执行的warp队列中选择warp宽度与所述空闲线程数目相同的目标warp;将选择出的所述目标warp作为所述补偿warp。
对于图4所示的技术方案,在一些示例中,所述获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp,包括:
按照所述空闲线程数目从任务队列中选择屏蔽了设定数目线程的warp作为所述补偿warp。
对于图4所示的技术方案,在一些示例中,所述方法还包括:在当前warp执行分支语句完毕之后,将warp队列中尚未执行的warp调度至所述当前warp继续执行;
在当前warp继续执行过程中,相应于所述当前warp执行分支语句而出现新的空闲线程,获取用于在所述新的空闲线程处于空闲状态期间填充所述新的空闲线程的新的补偿warp;
调度所述新的补偿warp进入执行状态并且调度所述当前warp中所述新的空闲线程执行所述新的补偿warp。
基于上述示例,所述获取用于在所述新的空闲线程处于空闲状态期间填充所述新的空闲线程的新的补偿warp,包括:
根据所述新的空闲线程数目从当前已有且尚未执行结束的补偿warp队列中查找匹配warp,并将查找得到所述匹配warp作为所述新的补偿warp。
对于图4所示的技术方案,在一些示例中,所述方法还包括:若当前warp执行分支语句结束,但补偿warp尚未执行完成,则根据所述补偿warp的宽度以及当前warp的宽度确定继续执行的warp,并调度当前warp中除补偿warp以外的其他线程以执行所述继续执行的warp。
需要说明的是,上述图4所示的技术方案及其示例均可以结合前述技术方案中针对处理器100,或者管线控制器108的阐述以实现,本发明实施例不多做赘述。
可以理解地,图4所示的技术方案及其示例既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,图4所示的技术方案及其示例本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM, ReadOnly Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本实施例提供了一种计算机存储介质,所述计算机存储介质存储有动态补偿线程束warp的程序,所述动态补偿线程束warp的程序被至少一个处理器执行时实现上述技术方案中所述动态补偿线程束warp的方法步骤。
需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种处理器,其特征在于,所述处理器包括:管线控制器、所执行线程被组织成多个线程组warp的多个核心;其中,每个warp能够在多个核心中执行,每个核心同一个时刻对应一个线程的执行;
所述管线控制器,经配置为执行以下步骤:
相应于检测到当前warp基于执行分支语句出现处于空闲状态的空闲线程,获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp;
调度所述补偿warp进入执行状态并且调度所述当前warp中的空闲线程执行所述补偿warp。
2.根据权利要求1所述的处理器,其特征在于,所述管线控制器,经配置以执行:
从当前尚未执行的warp队列中选择warp宽度与所述空闲线程数目相同的目标warp;将选择出的所述目标warp作为所述补偿warp。
3.根据权利要求1所述的处理器,其特征在于,所述管线控制器,经配置以执行:
按照所述空闲线程数目从任务队列中选择屏蔽了设定数目线程的warp作为所述补偿warp。
4.根据权利要求1所述的处理器,其特征在于,所述管线控制器,还经配置以执行:
将warp队列中尚未执行的warp调度至所述当前warp继续执行;
在当前warp继续执行过程中,相应于所述当前warp执行分支语句而出现新的空闲线程,获取用于在所述新的空闲线程处于空闲状态期间填充所述新的空闲线程的新的补偿warp;
调度所述新的补偿warp进入执行状态并且调度所述当前warp中所述新的空闲线程执行所述新的补偿warp。
5.根据权利要求4所述的处理器,其特征在于,所述管线控制器,还经配置以执行:
若继续执行过程中所出现的新的空闲线程,根据所述新的空闲线程数目从当前已有且尚未执行结束的补偿warp队列中查找匹配warp,并将查找得到所述匹配warp作为新的补偿warp。
6.根据权利要求1所述的处理器,其特征在于,所述管线控制器,还经配置以执行:
若当前warp执行分支语句结束,但补偿warp尚未执行完成,则根据所述补偿warp的宽度以及所述当前warp的宽度确定继续执行的warp,并调度当前warp中除补偿warp以外的其他线程以执行所述继续执行的warp。
7.一种动态补偿线程束warp的方法,其特征在于,所述方法包括:
相应于检测到当前warp基于执行分支语句出现处于空闲状态的空闲线程,获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp;
调度所述补偿warp进入执行状态并且调度所述当前warp中的空闲线程执行所述补偿warp。
8.根据权利要求7所述的方法,其特征在于,所述获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp,包括:
从当前尚未执行的warp队列中选择warp宽度与所述空闲线程数目相同的目标warp;将选择出的所述目标warp作为所述补偿warp。
9.根据权利要求7所述的方法,其特征在于,所述获取用于在所述空闲线程处于空闲状态期间填充所述空闲线程的补偿warp,包括:
按照所述空闲线程数目从任务队列中选择屏蔽了设定数目线程的warp作为所述补偿warp。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:在当前warp执行分支语句完毕之后,将warp队列中尚未执行的warp调度至所述当前warp继续执行;
在当前warp继续执行过程中,相应于所述当前warp执行分支语句而出现新的空闲线程,获取用于在所述新的空闲线程处于空闲状态期间填充所述新的空闲线程的新的补偿warp;
调度所述新的补偿warp进入执行状态并且调度所述当前warp中所述新的空闲线程执行所述新的补偿warp。
11.根据权利要求10所述的方法,其特征在于,所述获取用于在所述新的空闲线程处于空闲状态期间填充所述新的空闲线程的新的补偿warp,包括:
根据所述新的空闲线程数目从当前已有且尚未执行结束的补偿warp队列中查找匹配warp,并将查找得到所述匹配warp作为所述新的补偿warp。
12.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若当前warp执行分支语句结束,但补偿warp尚未执行完成,则根据所述补偿warp的宽度以及当前warp的宽度确定继续执行的warp,并调度当前warp中除补偿warp以外的其他线程以执行所述继续执行的warp。
13.一种计算机存储介质、其特征在于,所述计算机存储介质存储有动态补偿线程束warp的程序,所述动态补偿线程束warp的程序被至少一个处理器执行时实现权利要求7至12任一项所述的动态补偿线程束warp的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011043576.8A CN112114877B (zh) | 2020-09-28 | 2020-09-28 | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011043576.8A CN112114877B (zh) | 2020-09-28 | 2020-09-28 | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112114877A true CN112114877A (zh) | 2020-12-22 |
CN112114877B CN112114877B (zh) | 2023-03-14 |
Family
ID=73797243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011043576.8A Active CN112114877B (zh) | 2020-09-28 | 2020-09-28 | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112114877B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467959A (zh) * | 2021-09-06 | 2021-10-01 | 西安芯瞳半导体技术有限公司 | 应用于gpu的确定任务复杂度的方法、装置及介质 |
CN117009054A (zh) * | 2023-07-27 | 2023-11-07 | 北京登临科技有限公司 | 一种simt装置、线程组动态构建方法及处理器 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288728A1 (en) * | 2006-06-07 | 2007-12-13 | Azul Systems, Inc. | CPU utilization metering on sytems that include multiple hardware threads per core |
US20110072244A1 (en) * | 2009-09-24 | 2011-03-24 | John Erik Lindholm | Credit-Based Streaming Multiprocessor Warp Scheduling |
US20110219221A1 (en) * | 2010-03-03 | 2011-09-08 | Kevin Skadron | Dynamic warp subdivision for integrated branch and memory latency divergence tolerance |
CN103336718A (zh) * | 2013-07-04 | 2013-10-02 | 北京航空航天大学 | 一种gpu线程调度优化方法 |
CN103809964A (zh) * | 2012-11-05 | 2014-05-21 | 辉达公司 | 用线程组执行顺序代码的系统和方法和包含其的simt处理器 |
US20140373020A1 (en) * | 2013-06-13 | 2014-12-18 | Wipro Limited | Methods for managing threads within an application and devices thereof |
US20160132338A1 (en) * | 2013-04-22 | 2016-05-12 | Samsung Electronics Co., Ltd. | Device and method for managing simd architecture based thread divergence |
US20170097825A1 (en) * | 2015-10-02 | 2017-04-06 | Mediatek Inc. | System and method for managing static divergence in a simd computing architecture |
CN107832146A (zh) * | 2017-10-27 | 2018-03-23 | 北京计算机技术及应用研究所 | 高可用集群系统中的线程池任务处理方法 |
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
CN111258655A (zh) * | 2020-01-14 | 2020-06-09 | 中科寒武纪科技股份有限公司 | 融合计算方法及可读存储介质 |
-
2020
- 2020-09-28 CN CN202011043576.8A patent/CN112114877B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288728A1 (en) * | 2006-06-07 | 2007-12-13 | Azul Systems, Inc. | CPU utilization metering on sytems that include multiple hardware threads per core |
US20110072244A1 (en) * | 2009-09-24 | 2011-03-24 | John Erik Lindholm | Credit-Based Streaming Multiprocessor Warp Scheduling |
US20110219221A1 (en) * | 2010-03-03 | 2011-09-08 | Kevin Skadron | Dynamic warp subdivision for integrated branch and memory latency divergence tolerance |
CN103809964A (zh) * | 2012-11-05 | 2014-05-21 | 辉达公司 | 用线程组执行顺序代码的系统和方法和包含其的simt处理器 |
CN103809936A (zh) * | 2012-11-05 | 2014-05-21 | 辉达公司 | 编译或运行时执行分叉-合并数据并行程序的系统和方法 |
US20160132338A1 (en) * | 2013-04-22 | 2016-05-12 | Samsung Electronics Co., Ltd. | Device and method for managing simd architecture based thread divergence |
US20140373020A1 (en) * | 2013-06-13 | 2014-12-18 | Wipro Limited | Methods for managing threads within an application and devices thereof |
CN103336718A (zh) * | 2013-07-04 | 2013-10-02 | 北京航空航天大学 | 一种gpu线程调度优化方法 |
US20170097825A1 (en) * | 2015-10-02 | 2017-04-06 | Mediatek Inc. | System and method for managing static divergence in a simd computing architecture |
CN107038019A (zh) * | 2015-10-02 | 2017-08-11 | 联发科技股份有限公司 | 单指令多数据计算系统中处理指令的方法及计算系统 |
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
CN107832146A (zh) * | 2017-10-27 | 2018-03-23 | 北京计算机技术及应用研究所 | 高可用集群系统中的线程池任务处理方法 |
CN111258655A (zh) * | 2020-01-14 | 2020-06-09 | 中科寒武纪科技股份有限公司 | 融合计算方法及可读存储介质 |
Non-Patent Citations (4)
Title |
---|
EHSAN ATOOFIAN 等: "Reducing Static and Dynamic Power of L1 Data Caches in GPGPUs", 《2014 IEEE INTERNATIONAL PARALLEL & DISTRIBUTED PROCESSING SYMPOSIUM WORKSHOPS》 * |
HUCAI HUANG 等: "Simulator Implementation and Performance Study of a Polymorphous Array Computer", 《2013 12TH IEEE INTERNATIONAL CONFERENCE ON TRUST, SECURITY AND PRIVACY IN COMPUTING AND COMMUNICATIONS》 * |
YANG ZHANG等: "CWLP:一种在GPU中协同的线程束调度和局部性保护的高速缓存分配策略(英文)", 《FRONTIERS OF INFORMATION TECHNOLOGY & ELECTRONIC ENGINEERING》 * |
张正昌等: "基于动态任务调度的层次包围盒构建算法", 《计算机辅助设计与图形学学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467959A (zh) * | 2021-09-06 | 2021-10-01 | 西安芯瞳半导体技术有限公司 | 应用于gpu的确定任务复杂度的方法、装置及介质 |
CN117009054A (zh) * | 2023-07-27 | 2023-11-07 | 北京登临科技有限公司 | 一种simt装置、线程组动态构建方法及处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN112114877B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8516461B2 (en) | Method to dynamically distribute a multi-dimensional work set across a multi-core system | |
US11797348B2 (en) | Hierarchical task scheduling in a multi-threaded processing system | |
US8893145B2 (en) | Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes | |
US20150121391A1 (en) | Method and device for scheduling multiprocessor of system on chip (soc) | |
CN103809936A (zh) | 编译或运行时执行分叉-合并数据并行程序的系统和方法 | |
EP2711839A1 (en) | Parallel processing device, parallel processing method, optimization device, optimization method, and computer program | |
US20070143582A1 (en) | System and method for grouping execution threads | |
CN112114877B (zh) | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 | |
CN110308982B (zh) | 一种共享内存复用方法及装置 | |
US20130036423A1 (en) | Systems and methods for bounding processing times on multiple processing units | |
EP2943877B1 (en) | Method and apparatus for exploiting data locality in dynamic task scheduling | |
US11340942B2 (en) | Cooperative work-stealing scheduler | |
US11875425B2 (en) | Implementing heterogeneous wavefronts on a graphics processing unit (GPU) | |
JP6007516B2 (ja) | リソース配分システム、リソース配分方法、及びリソース配分プログラム | |
Gharajeh et al. | Heuristic-based task-to-thread mapping in multi-core processors | |
Kim et al. | Las: locality-aware scheduling for GEMM-accelerated convolutions in GPUs | |
CN116069480B (zh) | 一种处理器及计算设备 | |
Yang et al. | Managing asynchronous operations in Coarray Fortran 2.0 | |
CN112131008B (zh) | 一种调度线程束warp的方法、处理器及计算机存储介质 | |
Hugo et al. | A runtime approach to dynamic resource allocation for sparse direct solvers | |
CN116521351B (zh) | 多线程任务调度方法、装置、存储介质及处理器 | |
Zhao et al. | ISPA: Exploiting Intra-SM Parallelism in GPUs via Fine-Grained Resource Management | |
US20230367633A1 (en) | Gpu and gpu method | |
CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
Tsukada et al. | A Method for Estimating Task Granularity for Automating GPU Cycle Sharing |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, Building D, Yeda Science and Technology Park, No. 300 Changjiang Road, Yantai Area, China (Shandong) Pilot Free Trade Zone, Yantai City, Shandong Province, 265503 Patentee after: Xi'an Xintong Semiconductor Technology Co.,Ltd. Address before: Room 21101, 11 / F, unit 2, building 1, Wangdu, No. 3, zhangbayi Road, Zhangba Street office, hi tech Zone, Xi'an City, Shaanxi Province Patentee before: Xi'an Xintong Semiconductor Technology Co.,Ltd. |