System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 支持标量寄存器动态分配的计算单元、方法及相应处理器技术_技高网

支持标量寄存器动态分配的计算单元、方法及相应处理器技术

技术编号:41836025 阅读:5 留言:0更新日期:2024-06-27 18:18
本申请提供了支持标量寄存器动态分配的计算单元、方法及相应处理器,其中每个计算单元采用的是多层级的标量寄存器,标量寄存器的层级按线程规模自顶向下为内核程序级、工作组级、线程组级和分片级,其中每一层级的标量寄存器由下一层级对应的所有线程共享;计算单元的调度控制器可以根据当前执行的指令中包含的标量类型信息来分配相应层级的标量寄存器。该解决方案在计算单元采用了多层级标量寄存器以及通过动态分配标量寄存器的方式来提供不同粒度的资源共享,有利于减少不必要的矢量资源开销,从而改善GPU整体的任务执行效率。

【技术实现步骤摘要】

本申请涉及通用图形处理器,尤其涉及通用图形处理器中标量资源的管理和分配。


技术介绍

1、本部分的陈述仅仅是为了提供与本申请的技术方案有关的背景信息,以帮助理解,其对于本申请的技术方案而言并不一定构成现有技术。

2、用于通用计算目的图形处理器gpgpu (general-purpose computing ongraphics processing units,下文可简称为通用图形处理器或gpu)由于其高并发性、高吞吐量以及不断提升的可编程能力,已经成为了人工智能领域最主要的协处理器方案。gpgpu上有多个可并行执行的计算单元,可在短时间内完成大量的计算任务,极大地提高了计算效率和速度。

3、在软件层面上,gpu以内核程序kernel的形式执行计算任务,每个kernel被划分成多个工作组,这些工作组被分发到各计算单元上执行。每个工作组包括一定数量的线程,同一工作组中多个线程在单个计算单元上执行。工作组的大小和数量通常是在软件上根据待执行的kernel的特性和gpu的架构等因素来决定的。由于每个计算单元上硬件资源有限,工作组的大小会影响gpu资源利用率和执行效率,过大的工作组可能导致资源不足,而过小的工作组则可能无法充分利用gpu的并行计算能力。

4、在硬件层面上,每个计算单元执行、调度的基本单位是线程组,而非线程。线程组的大小取决于gpu的硬件架构,通常由预定数量(一般为32或64个)线程组成。对于分派至同一计算单元的多个工作组,当计算单元上有硬件资源可用时,该计算单元以线程组为粒度来调度执行相应工作组中的多个线程。这些硬件资源至少包括诸如矢量寄存器、标量寄存器之类的存储资源以及诸如运算单元之类的计算资源。

5、其中矢量寄存器是影响gpu计算单元性能的关键硬件资源。计算单元需要为其执行的每个线程分配相应的矢量寄存器,以保存该线程涉及的变量、数据、上下文(context)等,从而使得各个线程有自己的副本,可互相独立地并行执行。当矢量寄存器资源不足时,各工作组的线程只能被挂起以等待后续调度。


技术实现思路

1、专利技术人在研究和实践中发现,在有限硬件资源的限制下,减少不必要的矢量寄存器的使用可以显著提升gpu的性能,在gpu的每个计算单元上寄存器空间是有限的,如果能减少每个线程的矢量资源开销,意味着计算单元可以支持更多工作组的并行调度和执行,由此改善gpu整体的任务执行效率。

2、因此,本申请的目的在于减少不必要的矢量资源开销以提升gpu整体的任务执行效率。

3、上述目的是通过以下技术方案实现的:

4、根据本申请实施例的第一方面,提供了一种用于通用图形处理器的计算单元,其包括调度控制器和多层级的标量寄存器。其中,标量寄存器的层级按线程规模(例如,共享或可访问标量寄存器的线程的数量)自顶向下为内核程序级、工作组级、线程组级和分片级。每一层级的标量寄存器由下一层级对应的所有线程共享。该计算单元的调度控制器被配置为根据当前执行的指令中包含的标量类型信息来为该指令分配相应层级的标量寄存器。该方案通过采用多层级标量寄存器为不同规模的线程集合提供了不同粒度的资源共享,有利于减少不必要的矢量资源开销,从而可改善gpu整体的任务执行效率。

5、本申请实施例中,可在每个计算单元上通过动态分配标量资源的方式来尽量减少不必要的矢量资源开销,优化资源利用率。

6、在一些实施例中,多层级的标量寄存器共享计算单元上同一标量寄存器池,不同层级的标量寄存器在标量寄存器池中所占比例是可以由调度控制器来动态调整的。也就是说,调度控制器可以被配置为动态调整各层级的标量寄存器在标量寄存器池中可用空间的大小。在该实施例中,多层级的标量寄存器共享计算单元上同一块硬件存储空间,并且各层级标量寄存器所占比例可以根据实际需求而动态调整,不仅进一步优化了硬件资源利用率,而且还具有良好的可扩展性,能满足各种不同特性的内核程序的执行需求。

7、在一些实施例中,调度控制器还可被配置为根据内核程序的执行参数来设置各层级的标量寄存器在标量寄存器池中可用空间的大小或不同层级的标量寄存器在标量寄存器池中所占比例,从而可以针对不同特性内核程序采用不同的寄存器资源分配方式,更好地满足不同kernel的需求,提高gpu整体执行效率。

8、在一些实施例中,多层级的标量寄存器可以共享计算单元上同一标量寄存器池,各层级的标量寄存器在标量寄存器池中可用空间的大小可以是预先设定的。这样更易于管理,不会引入额外的软硬件开销。

9、在一些实施例中,调度控制器还可被配置为对于每个层级上所分配的标量寄存器,在检测到共享该标量寄存器的其下一层级所有线程执行完毕后,释放该标量寄存器在标量寄存器池中所占空间。在该实施例中,在每个层级上的标量寄存器都是有生命周期的,可以根据当前执行的指令而为该指令动态分配相应标量寄存器,也可以响应于共享该标量寄存器的所有线程已执行完毕,而及时地释放其所占空间,以供后续的执行过程中使用,由此改善了计算单元存储资源利用率。

10、在一些实施例中,线程组级对应的线程数量为所述通用图形处理器的线程束包含的线程数量,分片级对应的线程数量小于线程组级对应的线程数量。由于分片的线程规模介于线程束与单个线程之间,通过设置分片级共享可以使得在同一分片中的线程也可共享相应级别的标量寄存器,比线程束更小的分片可在更细粒度上共享对应层级的标量寄存器,既可以支持更多样的计算需求,又可以减少对各个线程的矢量寄存器空间的消耗。

11、在一些实施例中,调度控制器还可被配置为:对于内核程序级的标量寄存器,是在检测到共享该标量寄存器的所有工作组线程已经同步后才允许进行标量寄存器中内容的更新;以及被配置为对于工作组级的标量寄存器,是在检测到共享该标量寄存器的所有线程组级线程已经同步后才允许进行标量寄存器中内容的更新。在对内核程序级和工作组层级的标量寄存器中内容进行更新时,以更新的内容直接覆盖相应的标量寄存器在标量寄存器池中原来的使用区域。与现有gpu中标量寄存器只能保存只读变量不同,在本申请的实施例中,不仅让标量寄存器中内容可以实现动态的更新,还在一定程度上增加了允许内核程序使用的标量的数量。并且标量寄存器也不再局限于保存只读标量,而是通过分层级可读写标量实现了各层级执行结果的快速收集,改善了多线程的并行执行效率。

12、在一些实施例中,调度控制器还可被配置为:对于分片级的标量寄存器,按照预先设定的阈值来设置其在标量寄存器池中可用空间的大小(即分配其在标量寄存器池中所占比例),并在响应于检测到分片中所有线程执行完毕后立刻释放该分片对应的标量寄存器在标量寄存器池中所占空间,从而可以较小的管理代价在分片不断地新增或执行结束的情况下实现对于资源利用率的改善。

13、根据本申请实施例的第二方面,提供了一种通用图形处理器,其至少包含多个根据本申请实施例第一方面所述的计算单元。

14、根据本申请实施例的第三方面,提供了一种用于通用本文档来自技高网...

【技术保护点】

1.一种用于支持标量寄存器动态分配的计算单元,所述计算单元用于通用图形处理器,其特征在于,包括调度控制器和多层级的标量寄存器,其中,标量寄存器的层级按线程规模自顶向下为内核程序级、工作组级、线程组级和分片级,其中每一层级的标量寄存器由下一层级对应的所有线程共享;所述调度控制器被配置为根据当前执行的指令中包含的标量类型信息来为该指令分配相应层级的标量寄存器。

2.根据权利要求1所述的计算单元,其特征在于,所述多层级的标量寄存器共享计算单元上同一标量寄存器池,调度控制器还被配置为动态调整各层级的标量寄存器在标量寄存器池中可用空间的大小。

3.根据权利要求2所述的计算单元,其特征在于,所述调度控制器还被配置为:根据内核程序的执行参数来设置各层级的标量寄存器在标量寄存器池中可用空间的大小。

4.根据权利要求1所述的计算单元,其特征在于,所述多层级的标量寄存器共享计算单元上同一标量寄存器池,各层级的标量寄存器在标量寄存器池中可用空间的大小是预先设定的。

5.根据权利要求1所述的计算单元,其特征在于,所述调度控制器还被配置为:对于所分配的标量寄存器,在检测到共享该标量寄存器的下一层级所有线程执行完毕后,释放该标量寄存器在标量寄存器池中所占空间。

6.根据权利要求1所述的计算单元,其特征在于,所述调度控制器还被配置为:对于分片级的标量寄存器,按照预先设定的阈值来设置其在标量寄存器池中可用空间的大小,并在响应于检测到分片中所有线程执行完毕后立刻释放该分片对应的标量寄存器在标量寄存器池中所占空间。

7.根据权利要求1-6中任一项所述的计算单元,其特征在于,线程组级对应的线程数量为所述通用图形处理器的线程束包含的线程数量,分片级对应的线程数量小于线程组级对应的线程数量。

8.根据权利要求7所述的计算单元,其特征在于,所述调度控制器还被配置为:对于内核程序级的标量寄存器,是在检测到共享该标量寄存器的所有工作组级线程已经同步后才允许进行该标量寄存器中内容的更新;以及对于工作组级的标量寄存器,是在检测到共享该标量寄存器的所有线程组级线程已经同步后才允许进行该标量寄存器中内容的更新。

9.根据权利要求8所述的计算单元,其特征在于,所述调度控制器还被配置为:在对内核程序级和工作组层级的标量寄存器中内容进行更新时,以更新的内容直接覆盖相应的标量寄存器在标量寄存器池中原来的使用区域。

10.一种支持标量寄存器动态分配的通用图形处理器,其特征在于,其包括多个如权利要求1-9中任一项所述的计算单元。

11.一种支持标量寄存器动态分配的方法,所述方法用于通用图形处理器,其特征在于,所述通用图形处理器包括如权利要求1-9中任一项所述的计算单元,所述方法包括:

...

【技术特征摘要】

1.一种用于支持标量寄存器动态分配的计算单元,所述计算单元用于通用图形处理器,其特征在于,包括调度控制器和多层级的标量寄存器,其中,标量寄存器的层级按线程规模自顶向下为内核程序级、工作组级、线程组级和分片级,其中每一层级的标量寄存器由下一层级对应的所有线程共享;所述调度控制器被配置为根据当前执行的指令中包含的标量类型信息来为该指令分配相应层级的标量寄存器。

2.根据权利要求1所述的计算单元,其特征在于,所述多层级的标量寄存器共享计算单元上同一标量寄存器池,调度控制器还被配置为动态调整各层级的标量寄存器在标量寄存器池中可用空间的大小。

3.根据权利要求2所述的计算单元,其特征在于,所述调度控制器还被配置为:根据内核程序的执行参数来设置各层级的标量寄存器在标量寄存器池中可用空间的大小。

4.根据权利要求1所述的计算单元,其特征在于,所述多层级的标量寄存器共享计算单元上同一标量寄存器池,各层级的标量寄存器在标量寄存器池中可用空间的大小是预先设定的。

5.根据权利要求1所述的计算单元,其特征在于,所述调度控制器还被配置为:对于所分配的标量寄存器,在检测到共享该标量寄存器的下一层级所有线程执行完毕后,释放该标量寄存器在标量寄存器池中所占空间。

6.根据权利要求1所述的计算单元,其特征在于,所述调度控制器还被配置为:对于分...

【专利技术属性】
技术研发人员:廖群峰李晶晶孟祥斌张毅
申请(专利权)人:成都登临科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1