线程块派发方法、计算装置以及片上系统制造方法及图纸

技术编号:38206627 阅读:19 留言:0更新日期:2023-07-21 16:54
本发明专利技术实施例提供了一种线程块派发方法、计算装置以及片上系统。所述线程块派发方法包括:确定与多个计算引擎分别对应的多个线程块组,每个线程块组包括执行线程彼此关联的多个线程块;确定所述多个计算引擎中的当前轮询计算引擎;从所述多个线程块组中,确定与所述当前轮询计算引擎对应的当前线程块组;将所述当前线程块组中的线程块派发到所述当前轮询计算引擎。本发明专利技术实施例的方案提高了在线程块处理过程中计算引擎的缓存局部性。理过程中计算引擎的缓存局部性。理过程中计算引擎的缓存局部性。

【技术实现步骤摘要】
线程块派发方法、计算装置以及片上系统


[0001]本专利技术实施例涉及计算机
,尤其涉及一种线程块派发方法、计算装置以及片上系统。

技术介绍

[0002]在诸如通用图形处理器(General

purpose computing on graphics processing units,GPGPU)的并行处理器中,在对执行线程进行处理时,将各个执行线程组织成作为基本派发单元的线程块,进而将各个线程块组织成基于多个索引维度的线程网格。此外,每个线程块中的各个执行线程可以并发地执行,驱动程序内核定义了由多个相关线程块组成的线程块,使得同一线程块中的各个执行线程可以通过共享存储器交换数据。
[0003]一般地,核函数将线程分为三个层次:线程网格、线程块以及线程。与此相关联,诸如GPGPU的并行处理器的硬件存在三个层次:核心、流式多处理器、器件。在并行处理器执行不同类型的数据处理任务时,取决于特定的编译框架,往往需要对核函数进行线程块的划分,并把线程块派发到各个计算引擎里去执行,不同的划分和派发的方案往往对线程块的派发吞吐率和计算引擎的高速缓存局部性会有很大的影响。
[0004]在目前的划分和派发的方案中,为了实现多个计算引擎的并行计算所带来的高吞吐率,相邻线程块会被派发到不同的计算引擎中,同一计算引擎的执行线程相关性较低,导致计算引擎的缓存局部性还有提升空间。

技术实现思路

[0005]有鉴于此,本专利技术实施例提供一种线程块派发方法、计算装置以及片上系统,以至少部分解决上述问题。
[0006]根据本专利技术实施例的第一方面,提供了一种线程块派发方法,包括:确定与多个计算引擎分别对应的多个线程块组,每个线程块组包括执行线程彼此关联的多个线程块;确定所述多个计算引擎中的当前轮询计算引擎;从所述多个线程块组中,确定与所述当前轮询计算引擎对应的当前线程块组;将所述当前线程块组中的线程块派发到所述当前轮询计算引擎。
[0007]在本专利技术的另一实现方式中,每个计算引擎包括多个计算单元,所述方法还包括:从所述当前线程块组中,确定分别与多个计算单元对应的多个子线程块组;所述将所述当前线程块组中的线程块派发到所述当前轮询计算引擎,包括:将所述当前线程块组的当前子线程块组中的线程块派发到所述当前轮询计算引擎中的对应计算单元。
[0008]在本专利技术的另一实现方式中,派发到同一计算引擎的同一计算单元的各个线程块之间的数据相关性高于派发到同一计算引擎的不同计算单元的各个线程块之间的数据相关性。
[0009]在本专利技术的另一实现方式中,每个计算引擎配置有第一缓存,每个计算单元配置有第二缓存,所述第一缓存的缓存级别高于所述第二缓存的缓存级别。
[0010]在本专利技术的另一实现方式中,所述将所述当前线程块组的当前子线程块组中的线程块派发到所述当前轮询计算引擎中的对应计算单元,包括:确定与当前轮询时段对应的共用计算单元标识,所述共用计算单元标识指示所述多个计算引擎之间的对应计算单元;向所述当前轮询计算引擎中与所述共用计算单元标识指示的当前计算单元,派发与所述当前计算单元对应的当前子线程块组中的线程块。
[0011]在本专利技术的另一实现方式中,所述确定与多个计算引擎分别对应的多个线程块组,包括:分别针对所述多个计算引擎,将所述线程网格划分所述多个线程块组,使每个线程块组中的各个线程块的执行线程标识为连续。
[0012]在本专利技术的另一实现方式中,所述方法还包括:分别针对每个计算引擎的多个计算单元,将该计算引擎对应的线程块组划分成多个子线程块组,使每个子线程块组中的各个线程块的执行线程标识为连续。
[0013]在本专利技术的另一实现方式中,所述线程网格包括第一索引维度和第二索引维度,所述第二索引维度的索引优先级高于所述第一索引维度的索引优先级;所述将所述线程网格划分所述多个线程块组,包括:基于所述第一索引维度,将所述线程网格划分所述多个线程块组,不同的线程块组在所述第一索引维度上的索引范围不重合。
[0014]在本专利技术的另一实现方式中,所述将该计算引擎对应的线程块组划分成多个子线程块组,包括:基于所述第二索引维度,将该计算引擎对应的线程块组划分成多个子线程块组,不同的子线程块组在所述第二索引维度上的索引范围。
[0015]在本专利技术的另一实现方式中,所述线程网格还包括第三索引维度,所述第三索引维度的索引优先级高于所述第二索引维度的索引优先级。
[0016]根据本专利技术实施例的第二方面,提供了一种计算装置,包括:多个计算引擎;以及派发单元,执行根据第一方面所述的线程块派发方法。
[0017]根据本专利技术实施例的第三方面,提供了一种片上系统,包括:根据第二方面所述的计算装置。
[0018]在本专利技术实施例的方案中,多个计算引擎分别对应多个线程块组,每个线程块组包括执行线程彼此关联的多个线程块,通过多个计算引擎之间的轮询派发,保证了线程块派发的吞吐率,此外,当前轮询计算引擎对应的当前线程块组中的关联线程块被派发到当前轮询计算引擎中,提高了在线程块处理过程中计算引擎的缓存局部性。
附图说明
[0019]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0020]图1示出了一个示例的诸如GPGPU的并行处理单元的结构框图。
[0021]图2示出了图1示例的并行处理单元中的流式多处理器的结构框图。
[0022]图3A和图3B示出了另一示例的线程块派发机制的示意图。
[0023]图4为根据本专利技术的一个实施例的线程块派发方法的示意性流程图。
[0024]图5A为图4实施例的线程网格的示意图。
200实现了一种SIMD(单指令,多数据)体系结构,在一个实施例中,线程块包括32个相关线程,网格是执行相同流的一个或多个线程块的阵列,不同的线程块可以通过全局存储器交换数据。线程块也可以被称为协作线程阵列(CTA)。
[0037]在一个实施例中,PPU 200包括X个SM250(x)。例如,PPU 200可以包括15个不同的SM250。每个SM250是多线程的,并且被配置为同时执行来自特定线程块的多个线程(例如32个线程)。每个SM250连接到二级(L2)高速缓存265通过横杆260(或其它类型的互连网络)。L2高速缓存265连接到一个或多个存储器接口280。存储器接口280实现16,32,64,128位数据总线等,用于高速数据传输。在一个实施例中,PPU 200包括U个存储器接口280(U),其中每个存储器接口280(U)连接到相应的存储设备204(U)。
[0038]在一个实施例中,PPU 200实现多级存储器层次结构。存储器204位于与PPU耦合的SDRAM中的片外200。来自存储器的数据204可以被读取并存储在L本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种线程块派发方法,包括:确定与多个计算引擎分别对应的多个线程块组,每个线程块组包括执行线程彼此关联的多个线程块;确定所述多个计算引擎中的当前轮询计算引擎;从所述多个线程块组中,确定与所述当前轮询计算引擎对应的当前线程块组;将所述当前线程块组中的线程块派发到所述当前轮询计算引擎。2.根据权利要求1所述的方法,其中,每个计算引擎包括多个计算单元,所述方法还包括:从所述当前线程块组中,确定分别与多个计算单元对应的多个子线程块组;所述将所述当前线程块组中的线程块派发到所述当前轮询计算引擎,包括:将所述当前线程块组的当前子线程块组中的线程块派发到所述当前轮询计算引擎中的对应计算单元。3.根据权利要求2所述的方法,其中,派发到同一计算引擎的同一计算单元的各个线程块之间的数据相关性高于派发到同一计算引擎的不同计算单元的各个线程块之间的数据相关性。4.根据权利要求3所述的方法,其中,每个计算引擎配置有第一缓存,每个计算单元配置有第二缓存,所述第一缓存的缓存级别高于所述第二缓存的缓存级别。5.根据权利要求2所述的方法,其中,所述将所述当前线程块组的当前子线程块组中的线程块派发到所述当前轮询计算引擎中的对应计算单元,包括:确定与当前轮询时段对应的共用计算单元标识,所述共用计算单元标识指示所述多个计算引擎之间的对应计算单元;向所述当前轮询计算引擎中与所述共用计算单元标识指示的当前计算单元,派发与所述当前计算单元对应的当前子线程块组中的线程块。6...

【专利技术属性】
技术研发人员:田云
申请(专利权)人:平头哥上海半导体技术有限公司
类型:发明
国别省市:

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

1