本技术涉及计算机,尤其涉及一种用于图形处理器(graphicsprocessing unit,gpu)的线程束调度方法、设备及介质。
背景技术:
1、在传统的gpu架构中,每个可编程多处理器内部包含一个线程束调度器、一个指令缓冲以及一个流处理器(streaming processor,sp)阵列。
2、这种设计使得在任何给定时间,只有一个线程束的指令能够被调度和执行,即使其他流处理器可能处于空闲状态。这种串行化的调度方式限制了gpu的并行处理能力,尤其是在处理复杂或计算密集型任务时,可能导致资源利用率不高,从而影响整体性能。
技术实现思路
1、本技术实施例提供了一种用于gpu的线程束调度方法、设备及介质,用于解决目前对线程束的调度方式限制gpu并行处理能力,易使资源利用率被限制,影响gpu整体性能。
2、一方面,本技术实施例提供了一种用于gpu的线程束调度方法,该方法包括:
3、将缓存的线程束指令序列进行解码,并存储至缓冲指令表项;其中,所述缓冲指令表项至少包括线程束指令的有效字段、就绪字段;
4、根据所述缓冲指令表项中的所述线程束指令对应的运算类型,通过线程束调度器,确定相应的多个流处理器sp阵列的空闲状态;其中,所述空闲状态基于忙状态位得到;sp阵列的各运算单元的忙状态位存储于所述线程束调度器对应的忙状态寄存器;同一所述sp阵列的各所述运算单元对应不同所述运算类型;
5、基于各所述空闲状态及预设指令分配规则,将所述缓冲指令表项对应的已就绪线程束指令分配至相应的所述sp阵列。
6、在本技术的一种实现方式中,在将缓存的线程束指令序列进行解码,并存储至缓冲指令表项之前,所述方法还包括:
7、确定同一线程块分别对应的各线程束及各所述线程束对应的线程束指令流;
8、基于所述线程束指令流的指令执行顺序和/或待执行线程束指令的前一线程束指令的执行状态,确定可执行指令线程束;
9、按照预设线程束顺序标识,将各所述可执行指令线程束分别对应的所述待执行线程束指令,依次添加至相应的所述线程束指令序列;其中,同一所述线程束指令序列中的各线程束指令分别对应不同的所述线程束,且同一所述线程束指令序列中的各线程束指令为同一所述运算类型并处于所述线程束指令流的同一指令流顺序位置。
10、在本技术的一种实现方式中,基于所述线程束指令流的指令执行顺序和/或待执行线程束指令的前一线程束指令的执行状态,确定可执行指令线程束,具体包括:
11、在所述待执行线程束指令为所述指令执行顺序中的首个线程束指令的情况下,将所述待执行线程束指令相应的线程束,作为所述可执行指令线程束;
12、否则,根据所述指令执行顺序,确定所述待执行线程指令的前一线程束指令,并确定所述前一线程束指令的执行状态,以根据所述执行状态确定所述待执行线程指令相应的线程束是否为所述可执行指令线程束;所述执行状态至少包括:执行完成、未执行完成。
13、在本技术的一种实现方式中,根据所述缓冲指令表项中的线程束指令对应的运算类型,通过线程束调度器,确定相应的多个流处理器sp阵列的空闲状态,具体包括:
14、根据所述运算类型及所述忙状态寄存器,通过所述线程束调度器,遍历各所述sp阵列对应的忙状态位矩阵中元素值;其中,一个所述忙状态位矩阵记录一个所述sp阵列的各所述运算单元的忙状态位;一个所述运算单元的所述忙状态位对应一个所述元素值;不同所述元素值对应不同所述空闲状态;
15、根据遍历得到的各所述元素值,确定各所述sp阵列关于所述运算类型的所述空闲状态。
16、在本技术的一种实现方式中,基于各所述空闲状态及预设指令分配规则,将所述缓冲指令表项对应的已就绪线程束指令分配至相应的所述sp阵列,具体包括:
17、根据各所述空闲状态,确定空闲sp阵列数量;
18、将所述已就绪线程束指令的就绪指令数量与所述空闲sp阵列数量比对;
19、在所述就绪指令数量小于或等于所述空闲sp阵列数量的情况下,按照预设线程束顺序标识与sp阵列顺序标识的对应关系,将多个所述已就绪线程束指令分别分配至相应的各所述sp阵列。
20、在本技术的一种实现方式中,所述方法还包括:
21、在所述就绪指令数量大于所述空闲sp阵列数量的情况下,按照所述预设线程束顺序标识,以所述空闲sp阵列数量为分段指标,依次筛选所述分段指标数量个所述已就绪线程束指令,并添加至第一批次处理队列,直至各所述已就绪线程指令被添加至n个批次处理序列;其中,第n批次处理队列至多包含所述分段指标数量个所述已就绪线程束指令;n为自然数;
22、根据各所述批次处理队列,依次将各所述批次处理队列对应的多个所述已就绪线程束指令分配至相应的各所述sp阵列。
23、在本技术的一种实现方式中,所述同一线程块对应的所述线程束指令流中,同一所述指令流顺序位置的运算类型相同。
24、在本技术的一种实现方式中,一个所述sp阵列的所述运算单元包括以下一种或多种:计算单元、双精度浮点运算单元、加载存储单元、特殊函数单元。
25、另一方面,本技术实施例还提供了一种用于gpu的线程束调度设备,所述设备包括:
26、至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
27、将缓存的线程束指令序列进行解码,并存储至缓冲指令表项;其中,所述缓冲指令表项至少包括线程束指令的有效字段、就绪字段;
28、根据所述缓冲指令表项中的所述线程束指令对应的运算类型,通过线程束调度器,确定相应的多个流处理器sp阵列的空闲状态;其中,所述空闲状态基于忙状态位得到;sp阵列的各运算单元的忙状态位存储于所述线程束调度器对应的忙状态寄存器;同一所述sp阵列的各所述运算单元对应不同所述运算类型;
29、基于各所述空闲状态及预设指令分配规则,将所述缓冲指令表项对应的已就绪线程束指令分配至相应的所述sp阵列。
30、再一方面,本技术实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
31、将缓存的线程束指令序列进行解码,并存储至缓冲指令表项;其中,所述缓冲指令表项至少包括线程束指令的有效字段、就绪字段;
32、根据所述缓冲指令表项中的所述线程束指令对应的运算类型,通过线程束调度器,确定相应的多个流处理器sp阵列的空闲状态;其中,所述空闲状态基于忙状态位得到;sp阵列的各运算单元的忙状态位存储于所述线程束调度器对应的忙状态寄存器;同一所述sp阵列的各所述运算单元对应不同所述运算类型;
33、基于各所述空闲状态及预设指令分配规则,将所述缓冲指令表项对应的已就绪线程束指令分配至相应的所述sp阵列。
34、本技术与现有技术相比,其显著效果如下:
35、通过上述技术方案,本技术能够一次分配多个线程束指令,有效提升了同一个可编程多处理器的吞吐率,并通过多个sp阵列共用一个线程束调度器,减少了线程束调度器的数量,节约硬件资源。从而对线程束进行灵活地调度,提高了gpu并行处理能力及资源利用率,提升了gpu整体性能。
1.一种用于gpu的线程束调度方法,其特征在于,所述方法包括:
2.根据权利要求1所述的一种用于gpu的线程束调度方法,其特征在于,在将缓存的线程束指令序列进行解码,并存储至缓冲指令表项之前,所述方法还包括:
3.根据权利要求2所述的一种用于gpu的线程束调度方法,其特征在于,基于所述线程束指令流的指令执行顺序和/或待执行线程束指令的前一线程束指令的执行状态,确定可执行指令线程束,具体包括:
4.根据权利要求1所述的一种用于gpu的线程束调度方法,其特征在于,根据所述缓冲指令表项中的线程束指令对应的运算类型,通过线程束调度器,确定相应的多个流处理器sp阵列的空闲状态,具体包括:
5.根据权利要求1所述的一种用于gpu的线程束调度方法,其特征在于,基于各所述空闲状态及预设指令分配规则,将所述缓冲指令表项对应的已就绪线程束指令分配至相应的所述sp阵列,具体包括:
6.根据权利要求5所述的一种用于gpu的线程束调度方法,其特征在于,所述方法还包括:
7.根据权利要求2所述的一种用于gpu的线程束调度方法,其特征在于,所述同一线程块对应的所述线程束指令流中,同一所述指令流顺序位置的运算类型相同。
8.根据权利要求1所述的一种用于gpu的线程束调度方法,其特征在于,一个所述sp阵列的所述运算单元包括以下一种或多种:计算单元、双精度浮点运算单元、加载存储单元、特殊函数单元。
9.一种用于gpu的线程束调度设备,其特征在于,所述设备包括:
10.一种非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令能够执行如上述权利要求1-8任一项所述的一种用于gpu的线程束调度方法。