CN117667207B - 一种调度方法、系统、处理器及芯片 - Google Patents
一种调度方法、系统、处理器及芯片 Download PDFInfo
- Publication number
- CN117667207B CN117667207B CN202410129590.1A CN202410129590A CN117667207B CN 117667207 B CN117667207 B CN 117667207B CN 202410129590 A CN202410129590 A CN 202410129590A CN 117667207 B CN117667207 B CN 117667207B
- Authority
- CN
- China
- Prior art keywords
- temporary registers
- thread
- temporary
- physical addresses
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 239000000872 buffer Substances 0.000 claims description 7
- 230000008520 organization Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种调度方法、系统、处理器及芯片,用于提高临时寄存器的使用灵活性和运行效率。在本申请中,方法包括:获取第一线程簇的编译指令,编译指令用于指示第一线程簇占用的临时寄存器的个数是M;根据第一线程簇的编译指令,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址,将M个临时寄存器的物理地址分配给第一线程簇;其中,第二线程簇是在第一线程簇之前被调度且正在被执行的线程簇,N和M为正整数,M≤N。
Description
技术领域
本申请实施例涉及计算机领域,尤其涉及一种调度方法、系统、处理器及芯片。
背景技术
异构系统中通常包括主机(host)和设备(device),设备包括通用寄存器。主机在访问通用寄存器时,往往受到并行数的限制,例如主机仅能并行访问2个通用寄存器。为了提高主机访问寄存器的效率,目前在设备中进一步引入临时寄存器,临时寄存器能够存储数据的数据量可以等于通用寄存器能够存储数据的数据量,且主机在访问通用寄存器的同时,还可并行访问多个临时寄存器。
主机在访问临时寄存时,具体可以是,主机向设备中的调度器发送线程簇的编译指令,相应的,调度器接收线程簇的编译指令,对该编译指令进行解码以确定该线程簇是否占用临时寄存器,若是,则将为该线程簇分配多个临时寄存器,进而由设备中的执行器在执行该线程簇时访问该多个临时寄存器。
目前,虽然设备中包括多个临时寄存器,但是该多个临时寄存器只能够由一个线程簇独占,造成临时寄存器使用不灵活的问题。
发明内容
本申请提供一种调度方法、系统、处理器及芯片,用于提高设备中的临时寄存器的使用灵活性和运行效率。
第一方面,本申请提供一种调度方法,由调度器执行。
方法包括:获取第一线程簇的编译指令,编译指令用于指示第一线程簇占用的临时寄存器的个数是M;根据第一线程簇的编译指令,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址,将M个临时寄存器的物理地址分配给第一线程簇;其中,第二线程簇是在第一线程簇之前被调度且正在被执行的线程簇,N和M为正整数,M≤N。
上述技术方案中,调度器在获取到第一线程簇的编译指令之后,可根据编译指令确定第一线程簇占用的临时寄存器的个数是M,进而从N个临时寄存器中选择尚未被之前调度的第二线程簇占用的M个临时寄存器,将M个临时寄存器的物理地址分配给第一线程簇。如此,N个临时寄存器可被多个线程簇使用,提高临时寄存器的使用灵活性和运行效率。且该N个临时寄存器均可能被占用,提高临时寄存器的利用率。
在一种可能的实现方式中,根据第一线程簇的编译指令,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址,包括:获取记录信息,记录信息中包括第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系;根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,以及临时寄存器的个数M,确定M个临时寄存器的物理地址。
上述技术方案中,调度器中存储有记录信息,即记录有哪些线程簇占用了哪些临时寄存器,从而调度器可根据记录信息确定出尚未被占用的M个临时寄存器,以及该M个临时寄存器的物理地址。
在一种可能的实现方式中,根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,以及临时寄存器的个数M,确定M个临时寄存器的物理地址,包括:根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,和N个临时寄存器的物理地址,确定基准地址;根据基准地址,以及临时寄存器的个数M,确定M个临时寄存器的物理地址。在一种可能的实现方式中,根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,和N个临时寄存器的物理地址,确定基准地址,包括:根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,和N个临时寄存器的物理地址,确定尚未被占用的临时寄存器中物理地址处于最低位的临时寄存器的物理地址;在根据处于最低位的临时寄存器的物理地址,确定出M个连续的未被占用的临时寄存器的物理地址的情况下,将该处于最低位的临时寄存器的物理地址作为基准地址。
上述技术方案中,调度器确定M个连续的未被占用的临时寄存器,将该M个连续的未被占用的临时寄存器分配给第一线程簇,有助于提高第一线程簇访问M个临时寄存器的效率,且降低方案复杂性。
在一种可能的实现方式中,第二线程簇为一个或多个,该一个或多个第二线程簇占用K个临时寄存器,K为正整数。任一个线程簇占用的临时寄存器的个数基于线程簇写入的数据大小和临时寄存器能够承载的数据量的大小(或称为是临时寄存器的长度、临时寄存器能够存储数据的数据量等)确定。
上述技术方案中,可将在第一线程簇之前被调度的线程簇均称为是第二线程簇,也即是,N个临时寄存器可被两个或两个以上的线程簇使用,提高临时寄存器的使用灵活性和利用率。且该两个或两个以上的线程簇可被同时调度,有助于减少线程簇的等待时长。
在一种可能的实现方式中,将M个临时寄存器的物理地址分配给第一线程簇之后,还包括:将第一线程簇的标识和M个临时寄存器的物理地址的对应关系,写入到记录信息中。进一步的,将第一线程簇的标识和M个临时寄存器的物理地址的对应关系,写入到记录信息中之后,还包括:获取第一线程簇的释放指令,释放指令用于释放第一线程簇占用的M个临时寄存器;根据释放指令,删除记录信息中的第一线程簇的标识和M个临时寄存器的物理地址的对应关系。
上述技术方案中,调度器在将M个临时寄存器的物理地址分配给第一线程簇之后,会将第一线程簇的标识和M个临时寄存器的物理地址的对应关系,写入到记录信息中,以及,在确定第一线程簇对应的代码被执行完之后,可将第一线程簇占用的M个临时寄存器释放,删除记录信息中的第一线程簇的标识和M个临时寄存器的物理地址的对应关系。如此,有助于调度器保持准确的记录信息,并且释放的临时寄存器还可继续被其他的线程簇使用,有助于提高临时寄存器的使用灵活性和利用率,有助于减少线程簇的等待时长。
在一种可能的实现方式中,适用于异构计算系统中,异构计算系统中包括设备和主机,设备中包括调度器和执行器,执行器中包括N个临时寄存器和执行单元;获取第一线程簇的编译指令,包括:调度器接收来自主机的第一线程簇的编译指令;将M个临时寄存器的物理地址分配给第一线程簇,包括:调度器向执行单元发送第一线程簇的调度指令,调度指令中包括第一线程簇的标识和M个临时寄存器的物理地址,调度指令用于指示执行单元在执行第一线程簇时,根据M个临时寄存器的物理地址将第一线程簇对应的数据写入至M个临时寄存器中。在一种可能的实现方式中,设备是图形处理器(graphics processingunit,GPU)或者通用GPU(general purpose computing on GPU,GPGPU)。主机是中央处理器(central processing unit,CPU)。
上述技术方案中,提供本方案的具体适用场景,即适用于包括主机和设备的异构计算系统中,设备具体可以是GPU或者GPGPU。
第二方面,本申请提供一种调度器,包括:获取模块,用于获取第一线程簇的编译指令,编译指令用于指示第一线程簇占用的临时寄存器的个数是M;处理模块,用于根据第一线程簇的编译指令,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址,将M个临时寄存器的物理地址分配给第一线程簇;其中,第二线程簇是在第一线程簇之前被调度且正在被执行的线程簇,N和M为正整数,M≤N。
在一种可能的实现方式中,处理模块在根据第一线程簇的编译指令,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址时,具体用于:获取记录信息,记录信息中包括第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系;根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,以及临时寄存器的个数M,确定M个临时寄存器的物理地址。
在一种可能的实现方式中,处理模块在根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,以及临时寄存器的个数M,确定M个临时寄存器的物理地址时,具体用于:根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,和N个临时寄存器的物理地址,确定基准地址;根据基准地址,以及临时寄存器的个数M,确定M个临时寄存器的物理地址。
在一种可能的实现方式中,处理模块在根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,和N个临时寄存器的物理地址,确定基准地址时,具体用于:根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,和N个临时寄存器的物理地址,确定尚未被占用的临时寄存器中物理地址处于最低位的临时寄存器的物理地址;在根据处于最低位的临时寄存器的物理地址,确定出M个连续的未被占用的临时寄存器的物理地址的情况下,将处于最低位的临时寄存器的物理地址作为基准地址。
在一种可能的实现方式中,第二线程簇为一个或多个,该一个或多个第二线程簇占用K个临时寄存器,K为正整数。任一个线程簇占用的临时寄存器的个数基于线程簇写入的数据大小和临时寄存器能够承载的数据量的大小确定。
在一种可能的实现方式中,处理模块在将M个临时寄存器的物理地址分配给第一线程簇之后,还用于:将第一线程簇的标识和M个临时寄存器的物理地址的对应关系,写入到记录信息中。在一种可能的实现方式中,处理模块在将第一线程簇的标识和M个临时寄存器的物理地址的对应关系,写入到记录信息中之后,还用于:获取第一线程簇的释放指令,释放指令用于释放第一线程簇占用的M个临时寄存器;根据释放指令,删除记录信息中的第一线程簇的标识和M个临时寄存器的物理地址的对应关系。
第三方面,本申请提供一种异构计算系统,包括:设备和主机,设备中包括调度器和执行器,执行器中包括N个临时寄存器;
主机用于:向设备(或调度器)发送第一线程簇的编译指令,编译指令用于指示第一线程簇占用的临时寄存器的个数是M;设备用于:接收来自主机的第一线程簇的编译指令;根据第一线程簇的编译指令,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址,将M个临时寄存器的物理地址分配给第一线程簇;第二线程簇是在第一线程簇之前被调度且正在被执行的线程簇,N和M为正整数,M≤N。
第四方面,本申请提供一种处理器,处理器包括逻辑电路和供电电路,供电电路用于为逻辑电路供电,逻辑电路用于执行上述第一方面或第一方面的任一种可能的实现方式中的方法。
第五方面,本申请提供一种芯片,计算机芯片包括处理器和缓存,处理器用于执行上述第一方面或第一方面的任一种可能的实现方式中的方法。
上述第二方面至第五方面中任一方面可以达到的技术效果可以参照上述第一方面中有益效果的描述,此处不再重复赘述。
附图说明
图1为本申请提供的一种异构系统的架构示意图;
图2为本申请提供的一种调度方法的流程示意图;
图3为本申请提供的再一种调度方法的流程示意图;
图4为本申请提供的一种线程簇占用临时寄存器的示意图;
图5为本申请提供的一种调度器的结构示意图。
具体实施方式
下面先对本申请实施例所涉及的相关技术特征进行解释说明。需要说明的是,这些解释是为了让本申请实施例更容易被理解,而不应该视为对本申请所要求的保护范围的限定。
1、图形处理器(graphics processing unit,GPU)
GPU是相对于中央处理器(central processing unit,CPU)的一个概念,由于在现代的计算机中,图像的处理越来越重要,需要一个专门用于处理图像的处理器。GPU是显示卡的心脏,相当于CPU在电脑中的作用。随着GPU技术的发展,GPU不再局限于图形处理,还具有更强大的通用计算能力,其在浮点运算、并行计算等计算领域的性能甚至远高于CPU。
2、通用GPU(general purpose computing on GPU,GPGPU)
GPGPU是一个图形处理单元,可以通俗的将GPGPU理解为一个辅助CPU的工具,它能够帮助CPU进行非图形相关程序的运算。通常情况下,GPU负责图形渲染,这是一个负荷较大的工作,为了给GPU分担一部分压力,一些非图形相关程序的运算就会交由GPGPU。说到GPGPU的实际用途,GPGPU主要用于例如物理计算、加密解密、科学计算等。
3、存储器分层(memory hierarchy)
按照距离CPU由近到远的顺序,可将存储器依次划分为寄存器、缓存(cache)、内存、硬盘,其中,越靠近CPU的存储器的容量越小但访问速度越快。
异构系统中通常包括主机和设备,设备包括通用寄存器。主机在访问通用寄存器时,往往受到并行数的限制,例如,主机仅能并行访问2个通用寄存器。为了提高主机访问寄存器的效率,目前在设备中进一步引入临时寄存器,临时寄存器能够存储数据的数据量可以等于通用寄存器能够存储数据的数据量,且主机在访问通用寄存器的同时,还可并行访问多个临时寄存器,且主机并行访问临时寄存器的数量不受限制。进一步的,主机在访问多个临时寄存时,具体可以是,主机向设备中的调度器发送线程簇的编译指令,相应的,调度器接收来自主机的线程簇的编译指令,对该编译指令进行解码以确定该线程簇是否需要占用临时寄存器,若是,则将为该线程簇分配多个临时寄存器,进而由设备中的执行器在执行该线程簇时访问该多个临时寄存器;否则,则将为该线程簇分配多个通用寄存器,进而由执行器在执行该线程簇时访问该通用寄存器。
如图1为本申请示例性提供的一种异构系统的架构示意图,其中,包括主机和设备,示例性的,主机具体可以是CPU,设备具体可以是GPU或者GPGPU。进一步的,主机中包括编译器(图1中未示出),设备中包括调度器和执行器,执行器中包括执行单元、N个临时寄存器和n个通用寄存器。示例性的,通用寄存器能够存储数据量的大小等于临时寄存器能够存储数据量的大小;示例性的,通用寄存器是向量寄存器(vector register)。其中,N和n均为正整数。如图1示例性示出临时寄存器0至临时寄存器3,以及,通用寄存器0至通用寄存器2,即N=4,n=3,但其并不构成对本申请的限定。
在一个可能实现方式中,N个临时寄存器的组织方式是缓存(buffer)方式,也即,N个临时寄存器的读写方式类似于buffer的读写方式。相比于先进先出(first in fistout,FIFO)的组织方式,buffer往往就是一段累积的存储空间,而无需限定于先进先出原则,如此,执行单元可将数据写入到任一个临时寄存器中,或者,从任一个临时寄存器中读取数据。
在一个可能实现方式中,主机(或者说编译器,下同)在执行某段代码时,向调度器发送线程簇的编译指令,调度器可根据线程簇的编译指令调度一个或多个寄存器(即N个临时寄存器和n个通用寄存器中的一个或多个寄存器)。需要指出的是,如下重点描述调度器调度临时寄存器的方式,而调度器调度通用寄存器的方式可参见现有技术,本申请不再赘述。
进一步的,调度器在调度临时寄存器时,具体可以是,调度器根据编译指令中是否包括临时寄存器的逻辑地址,确定该编译指令对应的线程簇是否占用临时寄存器,进而指示执行单元在执行线程簇时是否将线程簇对应的数据写入到临时寄存器中。示例性的,调度器若确定该编译指令中包括临时寄存器的逻辑地址,则向执行单元发送的调度指令用于指示执行单元在执行线程簇时将线程簇对应的数据写入到临时寄存器中。此处,编译指令中的逻辑地址表征多个临时寄存器的逻辑地址,例如,是多个临时寄存器中处于最低位的临时寄存器的逻辑地址,结合图1例子,编译指令中的逻辑地址是临时寄存器0的逻辑地址0。
结合图1中例子,执行器中包括临时寄存器0至临时寄存器3共计4个临时寄存器,但该4个临时寄存器仅能够被一个线程簇占用。例如,当调度器将线程簇0对应的调度指令发送给执行器时,线程簇0对应的调度指令中的逻辑地址表征临时寄存器0至临时寄存器3的逻辑地址,线程簇0占用该4个临时寄存器,若此时,调度器又接收线程簇1的编译指令,即使线程簇1的编译指令中包括临时寄存器的逻辑地址,调度器也不能立即将线程簇1对应的调度指令发送给执行器。示例性的,调度器可在确定线程簇0释放该4个临时寄存器之后,再将线程簇1对应的调度指令发送给执行器。
如此,存在临时寄存器使用不灵活的问题。进一步的,若线程簇0写入至临时寄存器的数据较小,比如,仅需要占用临时寄存器0,那么,临时寄存器1至临时寄存器3未被占用,且不能被其他线程簇使用,存在临时寄存器利用率低的问题。为此,本申请提供一种调度方法,用于解决上述问题。
结合图1示出的异构系统的架构示意图,如图2为本申请示例性示出的一种调度方法的流程示意图,该调度方法可以由调度器执行。
步骤201,调度器获取第一线程簇的编译指令,其中,编译指令用于指示第一线程簇占用的临时寄存器的个数是M,M为小于或等于N的正整数。
调度器获取第一线程簇的编译指令,具体可以是,主机向调度器发送第一线程簇的编译指令,相应的,调度器接收来自主机的第一线程簇的编译指令。
在一个可能示例中,第一线程簇的编译指令中包括逻辑地址(记为目标逻辑地址)。示例性的,目标逻辑地址可用于指示总地址长度,该总地址长度用于指示临时寄存器的个数M。相应的,调度器根据总地址长度和每个临时寄存器的长度,确定临时寄存器的个数。可以理解,N个临时寄存器中的任两个临时寄存器的长度(或者说,临时寄存器能够存储数据的数据量)是相同的,调度器可将总地址长度与临时寄存器的长度的比值,作为临时寄存器的个数。
结合图1中例子,可将临时寄存器0至临时寄存器3的逻辑地址记为是逻辑地址0至逻辑地址3(下同),第一线程簇的编译指令中包括的目的逻辑地址是临时寄存器1的逻辑地址1,那么调度器可根据临时寄存器1的逻辑地址1,确定第一线程簇占用的临时寄存器的个数是2。再例如,第一线程簇的编译指令中包括的目的逻辑地址是临时寄存器2的逻辑地址2,那么调度器可根据临时寄存器2的逻辑地址2,确定第一线程簇占用的临时寄存器的个数是3。
进一步的,由于主机只知道执行器中包括有N个临时寄存器,以及每个临时寄存器的长度,也即是,主机只知道N个临时寄存器各自对应的逻辑地址,而主机不知道执行器中的各临时寄存器的物理地址,更不知道N个临时寄存器中的哪些临时寄存器被线程簇占用,以及哪些临时寄存器未被线程簇占用。所以,主机在向调度器发送第一线程簇的编译指令时,只能根据N个临时寄存器各自对应的逻辑地址和每个临时寄存器的长度,向调度器发送第一线程簇的编译指令。在一个具体实现中,主机根据数据的大小和临时寄存器的长度的大小,确定需要的临时寄存器的数量M,进而根据数量M和N个临时寄存器的逻辑地址,确定目标逻辑地址。
继续结合图1中例子,主机根据数据的大小和临时寄存器的长度,确定需要的临时寄存器的数量是2,那么主机可根据数量2和4个临时寄存器的逻辑地址,确定目标逻辑地址是临时寄存器1的逻辑地址1,相应的,编译指令中包括临时寄存器1的逻辑地址1。再例如,主机根据数据的大小和临时寄存器的长度,确定需要的临时寄存器的数量是3,那么主机可根据数量3和4个临时寄存器的逻辑地址,确定目标逻辑地址是临时寄存器2的逻辑地址2,相应的,编译指令中包括临时寄存器2的逻辑地址2。
该方式中,主机通过在编译指令中携带目标逻辑地址,隐式地向调度器指示临时寄存器的个数M,有助于兼容现有硬件架构和地址计算方式。
在又一个可能示例中,第一线程簇的编译指令中包括临时寄存器的个数M。相应的,调度器可直接从第一线程簇的编译指令中获取到临时寄存器的个数M。
进一步的,结合上述第一个可能示例中的解释可知,主机只知道执行器中包括有N个临时寄存器,以及每个临时寄存器的长度,所以主机在向调度器发送第一线程簇的编译指令时,可根据每个临时寄存器的长度,向调度器发送第一线程簇的编译指令。在一个具体实现中,主机可根据数据的大小和临时寄存器的长度,确定需要的临时寄存器的数量M,进而向调度器发送包含有临时寄存器的个数M的第一线程簇的编译指令。
继续结合图1中例子,主机根据数据的大小和临时寄存器的长度,确定需要的临时寄存器的数量是2,那么主机可在第一线程簇的编译指令中包括临时寄存器的个数2;主机根据数据的大小和临时寄存器的长度,确定需要的临时寄存器的数量是3,那么主机可在第一线程簇的编译指令中包括临时寄存器的个数3。
该方式中,主机通过在编译指令中携带临时寄存器的个数M,显示地向调度器指示临时寄存器的个数M,有助于降低复杂度。
此外,第一线程簇的编译指令中还可以包括第一线程簇的标识。
步骤202,调度器根据第一线程簇的编译指令,确定M个临时寄存器的物理地址,将M个临时寄存器的物理地址分配给第一线程簇。
M个临时寄存器的物理地址的表现形式,具体可以有如下示例1至示例3:
示例1,M个临时寄存器的物理地址,具体是,M个临时寄存器各自对应的M个物理地址。结合图1中例子,临时寄存器0至临时寄存器3的物理地址分别表示为物理地址0至物理地址3(下同),调度器确定M个临时寄存器是临时寄存器0和临时寄存器1,即M=2,那么M个临时寄存器的物理地址即是物理地址0和物理地址1。
示例2,M个临时寄存器的物理地址,具体是,M个临时寄存器中最低位临时寄存器的物理地址和地址总长度,此处,M个临时寄存器中最低位临时寄存器的物理地址,又可称为是,M个临时寄存器的起始地址(或基准地址)。仍结合图1中例子,调度器确定M个临时寄存器是临时寄存器0和临时寄存器1,即M=2,那么M个临时寄存器的物理地址即是物理地址0和地址总长度L,其中,地址总长度L是两个临时寄存器的长度。
示例3,M个临时寄存器的物理地址,具体是,M个临时寄存器中最低位临时寄存器的物理地址和最高位临时寄存器的物理地址。仍结合图1中例子,调度器确定M个临时寄存器是临时寄存器0至临时寄存器2,即M=3,那么M个临时寄存器的物理地址即是物理地址0和物理地址2。
为方便描述,如下均以示例2为例说明。
进一步的,调度器在根据第一线程簇的编译指令,确定M个临时寄存器的物理地址时,具体可以是,调度器根据第一线程簇的编译指令指示的临时寄存器的个数M,以及,N个临时寄存器中已经被第二线程簇占用的临时寄存器的物理地址,确定M个临时寄存器的物理地址。其中,第二线程簇是在第一线程簇之前被调度,且当前仍然被执行单元执行的线程簇。也即是,在本申请中,可将调度器当前接收到的编译指令对应的当前线程簇认为是第一线程簇,而在当前线程簇之前被调度且仍然被执行的线程簇认为是第二线程簇。
进一步的,第二线程簇可以是一个或多个。该一个或多个第二线程簇占用N个临时寄存器中的K个临时寄存器,K为正整数,且M+K小于或等于N。
在一个可能方式中,第二线程簇在第一线程簇之前被调度,具体可以是,调度器在接收到来自主机的第一线程簇的编译指令之前,还接收来自主机的第二线程簇的编译指令,第二线程簇的编译指令用于指示第二线程簇占用的临时寄存器的个数M’,M’为正整数。相应的,调度器根据第二线程簇的编译指令,确定N个临时寄存器中的、未被该第二线程簇之前的线程簇占用的M’个临时寄存器的物理地址,将M’个临时寄存器的物理地址分配给第二线程簇。
在一个可能示例中,调度器获取记录信息,其中,记录信息中包括第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系。其中,第二线程簇可以是一个或多个,该一个或多个第二线程簇占用N个临时寄存器中的K个临时寄存器。调度器先根据记录信息,确定基准地址;调度器根据基准地址和编译指令指示的临时寄存器的个数M,确定M个临时寄存器的物理地址。
解释为,调度器每向执行单元下发一次线程簇的调度指令,便根据线程簇的调度指令更新记录信息,具体的,调度器将该线程簇的标识,以及该线程簇占用的临时寄存器的物理地址对应存储于记录信息中。也可以理解,调度器在将M个临时寄存器的物理地址分配给第一线程簇之后,还将第一线程簇的标识和M个临时寄存器的物理地址的对应关系,写入到记录信息中。
进一步的,调度器在根据记录信息,确定基准地址时,具体可以是,根据记录信息中包括的第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,确定尚未被占用的多个临时寄存器中物理地址处于最低位的临时寄存器的物理地址,若在将该临时寄存器的物理地址作为基准地址的情况下,能够确定出M个连续的未被占用的临时寄存器,则将该临时寄存器的物理地址作为基准地址;若在将该临时寄存器的物理地址作为基准地址的情况下,不能够确定出M个连续的未被占用的临时寄存器,则将该临时寄存器所在的连续的未被占用的临时寄存器排除后,从剩余的其他寄存器中再选择未被占用的多个临时寄存器中物理地址处于最低位的临时寄存器,以此类推,直至确定出基准地址。相应的,该基准地址即是M个临时寄存器的基准地址(或起始地址)。
结合图1中例子,举例如下:
例子1,调度器接收线程簇0(作为第一线程簇的一个例子)的编译指令,线程簇0的编译指令中包括的目标逻辑地址是临时寄存器1的逻辑地址1,调度器根据记录信息确定临时寄存器0至临时寄存器3均未被占用,于是根据记录信息,确定临时寄存器0的物理地址0是基准地址;调度器根据基准地址(即物理地址0)和编译指令中目标逻辑地址(即逻辑地址1),确定临时寄存器的物理地址中起始地址是物理地址0,地址长度是2个临时寄存器的长度,或者说,调度器确定出第一线程簇占用的两个临时寄存器分别是临时寄存器0和临时寄存器1。进一步的,调度器将线程簇0的标识和线程簇0占用的临时寄存器的物理地址写入到记录信息中。
例子2,调度器接收线程簇1(作为第一线程簇的一个例子)的编译指令,线程簇1的编译指令中包括的目标逻辑地址是临时寄存器1的逻辑地址1,调度器根据记录信息确定临时寄存器0和临时寄存器1已经被第二线程簇占用,而临时寄存器2和临时寄存器3未被占用,于是根据记录信息,确定临时寄存器2的物理地址2是基准地址;调度器根据基准地址(即物理地址2)和编译指令中包括的目标逻辑地址(即逻辑地址1),确定临时寄存器的物理地址中起始地址是物理地址2,地址长度是2个临时寄存器的长度,或者说,调度器确定出第一线程簇占用的两个临时寄存器分别是临时寄存器2和临时寄存器3。调度器将线程簇1的标识和线程簇1占用的临时寄存器的物理地址写入到记录信息中。
例子3,调度器接收线程簇2(作为第一线程簇的一个例子)的编译指令,线程簇2的编译指令中包括的目标逻辑地址是临时寄存器1的逻辑地址1,调度器根据记录信息确定临时寄存器1已经被第二线程簇占用,而临时寄存器0、临时寄存器2和临时寄存器3未被占用。调度器根据记录信息,在将临时寄存器0的物理地址0作为基准地址时,确定不存在2个连续的未被占用的临时寄存器;调度器再根据记录信息,在将临时寄存器2的物理地址2作为基准地址时,确定存在2个连续的未被占用的临时寄存器,于是根据基准地址(即物理地址2)和编译指令中包括的目标逻辑地址(即逻辑地址1),确定临时寄存器的物理地址中起始地址是物理地址2,地址长度是2个临时寄存器的长度,或者说,调度器确定出第一线程簇占用的两个临时寄存器分别是临时寄存器2和临时寄存器3。调度器将线程簇2的标识和线程簇2占用的临时寄存器的物理地址写入到记录信息中。
在一个可能示例中,调度器可以对编译指令进行解码,以确定编译指令指示的临时寄存器的个数是M,然后确定M个临时寄存器的物理地址。随后调度器再生成第一线程簇的调度指令,向执行单元发送调度指令,调度指令中包括第一线程簇的标识和M个临时寄存器的物理地址。相应的,执行单元接收到来自调度器的调度指令,在执行第一线程簇时,根据调度指令中的M个临时寄存器的物理地址将第一线程簇对应的数据写入至M个临时寄存器中。
可选的,当主机确定执行完成第一线程簇时,可向调度器发送第一线程簇的释放指令,其中,第一线程簇的释放指令用于释放第一线程簇占用的M个临时寄存器,示例性的,第一线程簇的释放指令中包括第一线程簇的标识。相应的,调度器接收来自主机的释放指令,根据释放指令,删除记录信息中的第一线程簇的标识和M个临时寄存器的物理地址的对应关系。可选的,调度器还指示执行单元释放第一线程簇和第一线程簇占用的M个临时寄存器。
如此,在调度器接收到主机的新的线程簇的编译指令时,可进一步指示执行单元调度该新的线程簇占用该被释放的M个临时寄存器中的全部或部分,有助于进一步提高临时寄存器的利用率。
为了更好的解释本申请示例,结合图1示出的系统架构图和图2示出的一种调度方法的流程示意图,如图3为本申请示例性提供的再一种调度方法的流程示意图,图3中未详尽描述的内容,可参见图2相关实施例中的描述。
预先说明的是,执行器中共计有四个临时寄存器,分别记为是临时寄存器0至临时寄存器3。临时寄存器0至临时寄存器3的组织方式是buffer。
步骤301,编译器在执行线程簇0对应的一段代码(英文可表示为closed segment)时,编译器分析得到此代码需要使用两个临时寄存器,向调度器发送线程簇0的编译指令0,编译指令0中包括临时寄存器1的逻辑地址1。
步骤302,调度器接收到编译指令0,对编译指令0进行解码得到线程簇0的调度指令0。调度器向执行器发送调度指令0,该调度指令0中包括临时寄存器0的物理地址0和两个临时寄存器的地址长度。
步骤303,执行器接收到调度指令0。执行器在执行线程簇0时,根据调度指令0中的临时寄存器0的物理地址0和两个临时寄存器的地址长度,将线程簇0对应的数据0写入至临时寄存器0和临时寄存器1中。
步骤304,调度器根据线程簇0的标识、物理地址0和两个临时寄存器的地址长度,更新记录信息。
步骤305,编译器在执行线程簇1对应的一段代码时,编译器分析得到此代码需要使用两个临时寄存器,向调度器发送线程簇1的编译指令1,编译指令1中包括临时寄存器1的逻辑地址1。
步骤306,调度器接收到编译指令1,对编译指令1进行解码得到线程簇1的调度指令1。调度器向执行器发送调度指令1,该调度指令1中包括临时寄存器2的物理地址2和两个临时寄存器的地址长度。
步骤307,执行器接收到调度指令1。执行器在执行线程簇1时,根据调度指令1中的临时寄存器2的物理地址2和两个临时寄存器的地址长度,将线程簇1对应的数据1写入到临时寄存器2和临时寄存器3中。
步骤308,调度器根据线程簇1的标识、临时寄存器2的物理地址2和两个临时寄存器的地址长度,更新记录信息。
其中,线程簇0占用的临时寄存器和线程簇1占用的临时寄存器,可参见图4示出的线程簇占用临时寄存器的示意图。可以理解,主机认为线程簇0占用两个临时寄存器,于是向调度器发送的编译指令中包括逻辑地址1,相应的,调度器从编译指令中获取逻辑地址1,将逻辑地址1转换为物理地址0和两个临时寄存器的长度,进而确定线程簇0占用物理地址0和物理地址1分别对应的临时寄存器0和临时寄存器1;主机认为线程簇1占用两个临时寄存器,于是向调度器发送的编译指令中包括逻辑地址1,相应的,调度器从编译指令中获取逻辑地址1,将逻辑地址1转换为物理地址2和两个临时寄存器的长度,进而确定线程簇1占用物理地址2和物理地址3分别对应的临时寄存器2和临时寄存器3。
步骤309,编译器在确定执行完线程簇0对应的一段代码时,向调度器发送线程簇0的释放指令0。
步骤310,调度器接收到线程簇0的释放指令0,根据线程簇0的释放指令0,指示执行单元释放临时寄存器0和临时寄存器1,可选的,调度器还删除记录信息中的线程簇0的标识、物理地址0和两个临时寄存器的地址长度。
需要补充的是,第一线程簇是调度器当前接收到的编译指令对应的当前线程簇,第二线程簇是在当前线程簇之前被调度且仍然被执行的线程簇。可以理解,在上述步骤301至步骤304中,第一线程簇(即当前线程簇)是线程簇0。在上述步骤305至步骤308中,第一线程簇(即当前线程簇)是线程簇1,相应的,线程簇0是在线程簇1之前被调度的且仍然被执行的线程簇,所以,第二线程簇是线程簇0。图3相关实施例中未详尽描述的内容,均可参见图2相关实施例中的描述,例如,调度器怎么根据编译指令0确定调度指令0,以及,怎么根据编译指令1确定调度指令1,均可参见上述步骤201至步骤202中的描述;调度器怎么确定记录信息,可参见上述步骤202中的描述等。
上述技术方案中,调度器在获取到第一线程簇的编译指令之后,可根据编译指令确定第一线程簇占用的临时寄存器的个数是M,进而从N个临时寄存器中选择尚未被之前调度的第二线程簇占用的M个临时寄存器,将M个临时寄存器的物理地址分配给第一线程簇。如此,N个临时寄存器可被多个线程簇使用,提高临时寄存器的使用灵活性和运行效率。且该N个临时寄存器均可能被占用,提高临时寄存器的利用率。
基于上述内容和相同构思,图5为本申请示例性提供的一种调度器的结构示意图,该调度器中包括获取模块501和处理模块502。
获取模块501,用于获取第一线程簇的编译指令,编译指令用于指示第一线程簇占用的临时寄存器的个数是M;处理模块502,用于根据第一线程簇的编译指令,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址,将M个临时寄存器的物理地址分配给第一线程簇;其中,第二线程簇是在第一线程簇之前被调度且正在被执行的线程簇,N和M为正整数,M≤N。
在一种可能的实现方式中,处理模块502在根据第一线程簇的编译指令,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址时,具体用于:获取记录信息,记录信息中包括第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系;根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,以及临时寄存器的个数M,确定M个临时寄存器的物理地址。
在一种可能的实现方式中,处理模块502在根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,以及临时寄存器的个数M,确定M个临时寄存器的物理地址时,具体用于:根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,和N个临时寄存器的物理地址,确定基准地址;根据基准地址,以及临时寄存器的个数M,确定M个临时寄存器的物理地址。
在一种可能的实现方式中,处理模块502在根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,和N个临时寄存器的物理地址,确定基准地址时,具体用于:根据第二线程簇的标识和第二线程簇占用的临时寄存器的物理地址的对应关系,和N个临时寄存器的物理地址,确定尚未被占用的临时寄存器中物理地址处于最低位的临时寄存器的物理地址;在根据处于最低位的临时寄存器的物理地址,确定出M个连续的未被占用的临时寄存器的物理地址的情况下,将处于最低位的临时寄存器的物理地址作为基准地址。
在一种可能的实现方式中,第二线程簇为一个或多个,任一个线程簇占用的临时寄存器的个数基于线程簇写入的数据大小和临时寄存器能够承载的数据量的大小确定。
在一种可能的实现方式中,处理模块502在将M个临时寄存器的物理地址分配给第一线程簇之后,还用于:将第一线程簇的标识和M个临时寄存器的物理地址的对应关系,写入到记录信息中。
在一种可能的实现方式中,处理模块502在将第一线程簇的标识和M个临时寄存器的物理地址的对应关系,写入到记录信息中之后,还用于:获取第一线程簇的释放指令,释放指令用于释放第一线程簇占用的M个临时寄存器;根据释放指令,删除记录信息中的第一线程簇的标识和M个临时寄存器的物理地址的对应关系。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是个人计算机,手机,或者网络设备等)或处理器(processor)执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括计算机程序指令,在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例图2至图4相关方法实施例中的流程或功能。
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如SSD)。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。在本申请的文字描述中,字符“/”,一般表示前后关联对象是一种“或”的关系;在本申请的公式中,字符“/”,表示前后关联对象是一种“相除”的关系。“包括A,B和C中的至少一个”可以表示:包括A;包括B;包括C;包括A和B;包括A和C;包括B和C;包括A、B和C。可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。
Claims (12)
1.一种调度方法,其特征在于,由调度器执行,所述方法包括:
获取第一线程簇的编译指令,所述编译指令中包括临时寄存器的逻辑地址;
根据所述逻辑地址,确定所述第一线程簇占用的临时寄存器的个数是M;
根据所述第一线程簇占用的临时寄存器的个数M,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址,将所述M个临时寄存器的物理地址分配给所述第一线程簇;其中,所述第二线程簇是在所述第一线程簇之前被调度且正在被执行的线程簇,N、M为正整数,M≤N;
其中,所述N个临时寄存器的组织方式是缓存buffer。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一线程簇的编译指令,确定N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址,包括:
获取记录信息,所述记录信息中包括所述第二线程簇的标识和所述第二线程簇占用的临时寄存器的物理地址的对应关系;
根据所述第二线程簇的标识和所述第二线程簇占用的临时寄存器的物理地址的对应关系,以及所述临时寄存器的个数M,确定所述M个临时寄存器的物理地址。
3.如权利要求2所述的方法,其特征在于,所述根据所述第二线程簇的标识和所述第二线程簇占用的临时寄存器的物理地址的对应关系,以及所述临时寄存器的个数M,确定所述M个临时寄存器的物理地址,包括:
根据所述第二线程簇的标识和所述第二线程簇占用的临时寄存器的物理地址的对应关系,和所述N个临时寄存器的物理地址,确定基准地址;
根据所述基准地址,以及所述临时寄存器的个数M,确定所述M个临时寄存器的物理地址。
4.如权利要求3所述的方法,其特征在于,所述根据所述第二线程簇的标识和所述第二线程簇占用的临时寄存器的物理地址的对应关系,和所述N个临时寄存器的物理地址,确定基准地址,包括:
根据所述第二线程簇的标识和所述第二线程簇占用的临时寄存器的物理地址的对应关系,和所述N个临时寄存器的物理地址,确定尚未被占用的临时寄存器中物理地址处于最低位的临时寄存器的物理地址;
在根据所述处于最低位的临时寄存器的物理地址,确定出M个连续的未被占用的临时寄存器的物理地址的情况下,将所述处于最低位的临时寄存器的物理地址作为所述基准地址。
5.如权利要求1所述的方法,其特征在于,所述第二线程簇为一个或多个,任一个线程簇占用的临时寄存器的个数基于所述线程簇写入的数据大小和所述临时寄存器能够承载的数据量的大小确定。
6.如权利要求1所述的方法,其特征在于,所述将所述M个临时寄存器的物理地址分配给所述第一线程簇之后,还包括:
将所述第一线程簇的标识和所述M个临时寄存器的物理地址的对应关系,写入到记录信息中。
7.如权利要求6所述的方法,其特征在于,
所述将所述第一线程簇的标识和所述M个临时寄存器的物理地址的对应关系,写入到记录信息中之后,还包括:
获取所述第一线程簇的释放指令,所述释放指令用于释放所述第一线程簇占用的M个临时寄存器;
根据所述释放指令,删除所述记录信息中的所述第一线程簇的标识和所述M个临时寄存器的物理地址的对应关系。
8.如权利要求1-7中任一项所述的方法,其特征在于,适用于异构计算系统中,所述异构计算系统中包括设备和主机,所述设备中包括所述调度器和执行器,所述执行器中包括所述N个临时寄存器和执行单元;
所述获取第一线程簇的编译指令,包括:
所述调度器接收来自所述主机的所述第一线程簇的编译指令;
所述将所述M个临时寄存器的物理地址分配给所述第一线程簇,包括:
所述调度器向所述执行单元发送所述第一线程簇的调度指令,所述调度指令中包括所述第一线程簇的标识和所述M个临时寄存器的物理地址,所述调度指令用于指示所述执行单元在执行所述第一线程簇时,根据所述M个临时寄存器的物理地址将所述第一线程簇对应的数据写入至所述M个临时寄存器中。
9.如权利要求8所述的方法,其特征在于,所述设备是图形处理器GPU或者通用图形处理器GPGPU,所述主机是中央处理器CPU。
10.一种异构计算系统,其特征在于,包括:
设备和主机,所述设备中包括N个临时寄存器;
所述主机用于:
向所述设备发送第一线程簇的编译指令,所述编译指令中包括临时寄存器的逻辑地址;
所述设备用于:
接收来自所述主机的所述第一线程簇的编译指令;
根据所述第一线程簇的编译指令中的逻辑地址,确定所述第一线程簇占用的临时寄存器的个数是M;
根据所述第一线程簇占用的临时寄存器的个数M,确定所述N个临时寄存器中的、未被第二线程簇占用的M个临时寄存器的物理地址,将所述M个临时寄存器的物理地址分配给所述第一线程簇;其中,所述第二线程簇是在所述第一线程簇之前被调度且正在被执行的线程簇,N和M为正整数,M≤N;
其中,所述N个临时寄存器的组织方式是缓存buffer。
11.一种处理器,其特征在于,所述处理器包括逻辑电路和供电电路,所述供电电路用于为所述逻辑电路供电,所述逻辑电路用于执行如权利要求1至9中任一项所述的方法的操作步骤。
12.一种芯片,其特征在于,所述芯片包括处理器和缓存,所述处理器用于执行如权利要求1至9中任一项所述的方法的操作步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410129590.1A CN117667207B (zh) | 2024-01-30 | 2024-01-30 | 一种调度方法、系统、处理器及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410129590.1A CN117667207B (zh) | 2024-01-30 | 2024-01-30 | 一种调度方法、系统、处理器及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117667207A CN117667207A (zh) | 2024-03-08 |
CN117667207B true CN117667207B (zh) | 2024-04-26 |
Family
ID=90068367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410129590.1A Active CN117667207B (zh) | 2024-01-30 | 2024-01-30 | 一种调度方法、系统、处理器及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667207B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200098744A (ko) * | 2019-02-11 | 2020-08-21 | 서경대학교 산학협력단 | 범용 그래픽 처리장치 및 이의 스케쥴링 방법 |
CN114880104A (zh) * | 2021-02-05 | 2022-08-09 | 上海登临科技有限公司 | 便于OpenCL工作组乱序执行的方法、系统及存储介质 |
CN114968549A (zh) * | 2021-02-25 | 2022-08-30 | 想象技术有限公司 | 用于向任务分配资源的方法和设备 |
WO2023184900A1 (zh) * | 2022-03-31 | 2023-10-05 | 上海商汤智能科技有限公司 | 处理器、芯片、电子设备及数据处理方法 |
-
2024
- 2024-01-30 CN CN202410129590.1A patent/CN117667207B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200098744A (ko) * | 2019-02-11 | 2020-08-21 | 서경대학교 산학협력단 | 범용 그래픽 처리장치 및 이의 스케쥴링 방법 |
CN114880104A (zh) * | 2021-02-05 | 2022-08-09 | 上海登临科技有限公司 | 便于OpenCL工作组乱序执行的方法、系统及存储介质 |
CN114968549A (zh) * | 2021-02-25 | 2022-08-30 | 想象技术有限公司 | 用于向任务分配资源的方法和设备 |
WO2023184900A1 (zh) * | 2022-03-31 | 2023-10-05 | 上海商汤智能科技有限公司 | 处理器、芯片、电子设备及数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117667207A (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5388237A (en) | Method of and apparatus for interleaving multiple-channel DMA operations | |
US6901454B2 (en) | Circuit group control system | |
US10007527B2 (en) | Uniform load processing for parallel thread sub-sets | |
CN110008009B (zh) | 在运行时绑定常量以提高资源利用率 | |
US9542227B2 (en) | Parallel dynamic memory allocation using a lock-free FIFO | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
EP0550163A1 (en) | Circuit architecture for supporting multiple-channel DMA operations | |
US20060123420A1 (en) | Scheduling method, scheduling apparatus and multiprocessor system | |
US20130305009A1 (en) | Virtual memory structure for coprocessors having memory allocation limitations | |
CN103019810A (zh) | 具有不同执行优先级的计算任务的调度和管理 | |
US9626216B2 (en) | Graphics processing unit sharing between many applications | |
JP2011238271A (ja) | 低ポート数メモリーを用いたマルチポートメモリーのシミュレート | |
CN102667714B (zh) | 支持访问由操作系统环境外的资源提供的功能的方法和系统 | |
US20130268942A1 (en) | Methods and apparatus for auto-throttling encapsulated compute tasks | |
US9417881B2 (en) | Parallel dynamic memory allocation using a lock-free pop-only FIFO | |
US9715413B2 (en) | Execution state analysis for assigning tasks to streaming multiprocessors | |
CN114942831A (zh) | 处理器、芯片、电子设备及数据处理方法 | |
US7865632B2 (en) | Memory allocation and access method and device using the same | |
US9286114B2 (en) | System and method for launching data parallel and task parallel application threads and graphics processing unit incorporating the same | |
CN117667207B (zh) | 一种调度方法、系统、处理器及芯片 | |
US20070162651A1 (en) | Data transfer control | |
WO2007135532A2 (en) | Method and system for managing buffers pool | |
US10235208B2 (en) | Technique for saving and restoring thread group operating state | |
CN116820579A (zh) | 访存指令的调度方法、装置、电子设备和存储介质 | |
CN118435177A (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 |