线程配置方法、设备、装置、存储介质及程序产品制造方法及图纸

技术编号:34458778 阅读:31 留言:0更新日期:2022-08-06 17:12
本公开提供了一种线程配置方法、设备、装置、存储介质及程序产品,涉及大数据及人工智能技术领域,特别涉及深度学习技术领域。在本公开的一些实施例中,线程配置方法包括获取输入的第一维度和第二维度,以及需要计算的中间维度,其中,第二维度大于所述第一维度;根据第一维度和中间维度对线程块之中的线程进行配置,以生成线程块在x方向上的第一线程数和在y方向上的第二线程数;根据第二维度以及所述线程块在x方向上的第一线程数和在y方向上的第二线程数对线程栅格之中的线程进行配置,以生成线程栅格在x方向上的第三线程数和在y方向上的第四线程。通过本公开的实施例对线程块之中的线程进行配置,可以大幅提高访存效率。可以大幅提高访存效率。可以大幅提高访存效率。

【技术实现步骤摘要】
线程配置方法、设备、装置、存储介质及程序产品


[0001]本公开涉及计算机
,具体涉及大数据及人工智能
,特别涉及深度学习
,尤其涉及一种线程配置方法、装置、设备、存储介质和程序产品。

技术介绍

[0002]随着计算机技术的快速发展,深度学习框架的应用范围越来越广,例如图形处理器算子等等。
[0003]在深度学习框架中,底层算子的性能在很大程度上决定了该深度学习框架的性能,底层算子的性能由计算效率和访存效率决定,目前,在深度学习框架中,存在访问效率低的问题。

技术实现思路

[0004]本公开提供了一种线程配置方法、装置、设备、存储介质及程序产品。
[0005]根据本公开的一方面,提供了一种线程配置方法,包括:
[0006]获取输入的第一维度和第二维度,以及需要计算的中间维度,其中,所述第二维度大于所述第一维度;
[0007]根据所述第一维度和所述中间维度对线程块之中的线程进行配置,以生成所述线程块在x方向上的第一线程数和在y方向上的第二线程数;
[0008]根据所述第二维度和所述线程块在x方向上的第一线程数和在y方向上的第二线程数对线程栅格之中的线程进行配置,以生成所述线程栅格在x方向上的第三线程数和在y方向上的第四线程数。
[0009]根据本公开的另一方面,提供了一种线程配置装置,包括:
[0010]获取模块,用于获取输入的第一维度和第二维度,以及需要计算的中间维度,其中,所述第二维度大于所述第一维度;
[0011]第一生成模块,用于根据所述第一维度和所述中间维度对线程块之中的线程进行配置,以生成所述线程块在x方向上的第一线程数和在y方向上的第二线程数;
[0012]第二生成模块,用于根据所述第二维度和所述线程块在x方向上的第一线程数和在y方向上的第二线程数对线程栅格之中的线程进行配置,以生成所述线程栅格在x方向上的第三线程数和在y方向上的第四线程数。
[0013]根据本公开的另一方面,提供了一种电子设备,包括:
[0014]至少一个处理器;以及
[0015]与所述至少一个处理器通信连接的存储器;其中,
[0016]所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的方法中的各步骤。
[0017]根据本公开的另一方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行上述的方法中的各步骤。
[0018]根据本公开的另一方面,提供一种计算机程序产品,包括计算机程序。所述计算机程序在被处理器执行时实现上述的方法中的各步骤。
[0019]在本公开的一些实施例中,通过为线程块block和线程栅格grid配置适合的线程数,从而可以提高访存效率。
[0020]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0021]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0022]图1为本公开第一实施例提供的一种线程配置方法的流程示意图;
[0023]图2a为本公开示例性实施例提供的一种线程配置装置的结构框图;
[0024]图2b为本公开示例性实施例提供的另一种线程配置装置的结构框图;
[0025]图3示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。
具体实施方式
[0026]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0027]本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
[0028]本公开的技术方案中,所涉及的用户个人信息的获取、存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
[0029]目前,在深度学习框架中的线程配置中,存在访问效率低的问题。在深度学习框架中,底层算子的性能在很大程度上决定了该深度学习框架的性能,底层算子的性能由计算效率和访存效率决定,另外,IO密集型算子种类更多,占比更大,对于这类算子来说,其访存效率往往决定了其性能的优劣,IO密集型算子访存效率较低。
[0030]一个操作系统内核在启动时,程序需要启动的线程块block和线程栅格grid可以为一维、二维或者三维,不同的线程配置方式,决定了通用并行计算架构操作系统内核不同的并行策略实现以及不同的并行执行效率,一维的线程块block和线程栅格grid最常见也最利于理解,深度学习框架中的算子在最初实现是往往会优先考虑这种实现方式,看i如对于某些规约操作,通常会采用一维的线程块block设置,每个线程块block完成一次完整的规约操作并得到结果。
[0031]另外,目前常见的线程块block和线程栅格grid的配置方式,虽然在逻辑上简单易懂,但是在一些场景中存在性能不理想的问题,比如无法实现内存合并访问,即一个线程束warp内的线程无法访问连续的内存块以及线程的并行度不高,无法充分利用多处理器资源的问题。
[0032]由于采用单指令多线程的架构,图形处理器对内存的访问指令是由线程束warp发起的,即线程束warp中每个线程同时执行内存操作指令,不过每个线程所访问的数据地址
可以不同,图形处理器会根据这些不同的地址发起一次或多次动态随机存取存储器->缓存的传输(事务),直到所有线程都拿到各自所需的数据(缓存->寄存器)。显然,我们可以通过减少动态随机存取存储器->缓存的传输事务来优化程序性能。内存合并访问是理想的全局内存访问方式,即一个图形处理器线程束warp内的线程访问连续的内存块。在进行带有跨度的非最低维数据读取时,一个图形处理器线程束warp内的线程无法实现内存合并访问,从而导致访存效率差的问题。
[0033]一个操作系统内核的并行效率并不完全取决于一个线程块block内的线程数量,其原因首先是能够同时并发的线程束warp数量会受到多处理器上的资源限制,因为每个多处理器上的资源如寄存器、共享内存等是有限的,因此线程束warp中每个线程所需的资源越多,能同时启动的线程束warp数就越少;其次,若不考虑实际多维数据的排布特点,仅使用一维线程块block和线程栅格grid配置中会导致负载不均衡,无法在多变的实际场景中都保证高效地并行效率。
[0034]针对上述存在的技术问题,在本公开的一些实施例中,线程配置装置获取输入的第一维度和第二维度,以及需要计算的中间维度,其中,所述第二维度大于所述第一维度;根据所述第一维度本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种线程配置方法,包括:获取输入的第一维度和第二维度,以及需要计算的中间维度,其中,所述第二维度大于所述第一维度;根据所述第一维度和所述中间维度对线程块之中的线程进行配置,以生成所述线程块在x方向上的第一线程数和在y方向上的第二线程数;根据所述第二维度以及所述线程块在x方向上的第一线程数和在y方向上的第二线程数对线程栅格之中的线程进行配置,以生成所述线程栅格在x方向上的第三线程数和在y方向上的第四线程数。2.如权利要求1所述的方法,其中,所述根据所述第一维度和所述中间维度对线程块之中的线程进行配置,以生成所述线程块在x方向上的第一线程数和在y方向上的第二线程数,包括:根据所述第一维度确定线程块在x方向上的第五线程数;根据所述中间维度和所述线程块在x方向上的第五线程数确定所述线程块在y方向上的第二线程数;根据所述线程块在y方向上的第二线程数和所述第一维度更新所述线程块在x方向上的第五线程数,以生成所述线程块在x方向上的第一线程数。3.如权利要求2所述的方法,其中,所述根据所述第一维度确定所述线程块在x方向上的第五线程数,包括:获取线程束的大小;将所述线程束的大小和所述第一维度之中的较小值作为所述线程块在x方向上的第五线程数。4.如权利要求2所述的方法,其中,所述根据所述中间维度和所述线程块在x方向上的第五线程数确定所述线程块在y方向上的第二线程数,包括:获取线程块中最大可配置线程数;将所述中间维度与所述线程块中最大可配置线程数之中的较小值作为第一值;将所述中间维度与所述线程块在x方向上的第五线程数之中的较小值作为第二值;将所述第一值与所述第二值之中的较小值作为所述线程块在y方向上的第二线程数。5.如权利要求2所述的方法,其中,所述根据所述线程块在y方向上的第二线程数和所述第一维度更新所述线程块在x方向上的第五线程数,以生成所述线程块在x方向上的第一线程数,包括:将所述第一维度与所述线程块在x方向上的第五线程数之中的较小值作为第三值;将所述第一维度与所述线程块在y方向上的第二线程数之中的较小值作为第四值;根据所述第三值和第四值中的较小值,以及所述第一维度更新所述线程块在x方向上的第一线程数。6.如权利要求1所述的方法,其中,所述根据所述第二维度和所述线程块在x方向上的第一线程数和在y方向上的第二线程数对线程栅格之中的线程进行配置,以生成所述线程栅格在x方向上的第三线程数和在y方向上的第四线程数,包括:根据所述第一维度和所述线程块在x方向上的第一线程数确定在所述线程栅格在x方向上的第三线程数;
根据所述第二维度和所述线程栅格在x方向上的第三线程数确定所述线程栅格在y方向上的第四线程数。7.如权利要求6所述的方法,其中,所述根据所述第一维度和所述线程块在x方向上的第一线程数确定所述线程栅格在x方向上的第三线程数,包括:获取所述线程栅格的可同时启动最大线程块数量;将所述第一维度向上取整后的值与所述可同时启动最大线程块数量之中的较小值作为第五值;将所述线程块在x方向上的第一线程数向上取整后的值与所述可同时启动最大线程块数量之中的较小值作为第六值;将所述第五值和第六值中较小值作为所述线程栅格在x方向上的第三线程数。8.如权利要求6所述的方法,其中,所述根据所述第二维度和所述初线程栅格在x方向上的第三线程数确定所述线程栅格在y方向上的第四线程数,包括:将所述可同时启动最大线程块数量向上取整后的值与所述第二维度之中的较小值为第七值;将所述线程栅格在x方向上的第三线程数向上取整后的值与所述第...

【专利技术属性】
技术研发人员:张政牛丽玲邢冯刘益群蓝翔
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

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

1