处理器的多线程调度方法、装置、电子设备和存储介质制造方法及图纸

技术编号:36754212 阅读:9 留言:0更新日期:2023-03-04 10:43
本公开提供了一种处理器的多线程调度方法,涉及计算机技术领域,尤其涉及人工智能和深度学习领域。具体实现方案为:响应于计算线程发起的传输第一数据的第一通知消息,使用第一通信线程传输第一数据;响应于第一通信线程发起的传输第一数据的第二通知消息,在第一时段使用第二通信线程传输第一数据;以及响应于计算线程发起的传输第二数据的第三通知消息,在第二时段使用第一通信线程传输第二数据;其中,第一时段与第二时段彼此重叠。本公开还提供了一种处理器的多线程调度装置、电子设备和存储介质。存储介质。存储介质。

【技术实现步骤摘要】
处理器的多线程调度方法、装置、电子设备和存储介质


[0001]本公开涉及计算机
,尤其涉及人工智能和深度学习技术。更具体地,本公开提供了一种处理器的多线程调度方法、装置、电子设备和存储介质。

技术介绍

[0002]近年来,随着数据量的不断增长,对深度学习性能的要求正在逐渐提高。作为一种行之有效的性能提升手段,分布式训练在其中发挥了重要的作用。

技术实现思路

[0003]本公开提供了一种处理器的多线程调度方法、装置、设备以及存储介质。
[0004]根据第一方面,提供了一种处理器的多线程调度方法,该方法包括:响应于计算线程发起的传输第一数据的第一通知消息,使用第一通信线程传输第一数据;响应于第一通信线程发起的传输第一数据的第二通知消息,在第一时段使用第二通信线程传输第一数据;以及响应于计算线程发起的传输第二数据的第三通知消息,在第二时段使用第一通信线程传输第二数据;其中,第一时段与第二时段彼此重叠。
[0005]根据第二方面,提供了一种处理器的多线程调度装置,该装置包括:第一通信模块,用于响应于计算线程发起的传输第一数据的第一通知消息,使用第一通信线程传输第一数据;第二通信模块,用于响应于第一通信线程发起的传输第一数据的第二通知消息,在第一时段使用第二通信线程传输第一数据;以及第三通信模块,用于响应于计算线程发起的传输第二数据的第三通知消息,在第二时段使用第一通信线程传输第二数据;其中,第一时段与第二时段彼此重叠。
[0006]根据第三方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据本公开提供的方法。
[0007]根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行根据本公开提供的方法。
[0008]根据第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序存储于可读存储介质和电子设备其中至少之一上,所述计算机程序在被处理器执行时实现根据本公开提供的方法。
[0009]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0010]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0011]图1是相关技术中计算流与通信流重叠的方法的示意图;
[0012]图2是相关技术中通信流与通信流重叠的方法的示意图;
[0013]图3是根据本公开的一个实施例的处理器的多线程调度方法的流程图;
[0014]图4是根据本公开的一个实施例的通信流与通信流重叠的方法的示意图;
[0015]图5是根据本公开的一个实施例的处理器的多线程调度装置的框图;
[0016]图6是根据本公开的一个实施例的处理器的多线程调度方法的电子设备的框图。
具体实施方式
[0017]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0018]本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
[0019]在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
[0020]分布式训练应用中,分布式系统间和系统内通信均存在额外开销,因此,需要减少计算操作与通信操作之间的阻塞以及多个通信操作之间的阻塞,以充分满足用户对性能的要求。
[0021]例如,通过将计算操作与通信操作在时间维度上进行重叠,可以减少计算操作与通信操作之间的阻塞,通过将通信操作与通信操作在时间维度上进行重叠,可以减少通信间的阻塞。利用CUDA(Compute Unified Device Architecture,统一计算设备架构)编程模型中的流,可以达成这一目标。流是利用CUDA函数的异步特性构建的操作队列(或线程),属于不同的流的操作是异步的,因而可以并行;而同属于一个流的操作是串行的。
[0022]例如,可以将CUDA流分为负责计算的计算流和负责通信的通信流,计算流可以认为是计算线程,通信流可以认为是通信线程。利用CUDA函数本身的异步特性,可以有效实现流之间的重叠(包括计算流与通信流重叠、通信流间的重叠),从而减少阻塞。
[0023]图1是相关技术中计算流与通信流重叠的方法的示意图。
[0024]如图1所示,计算流110包括多个计算操作(calc),且多个计算操作具有先后执行顺序。通信流120包括多个通信操作(comm),每个通信操作用于传输计算流110中的计算操作所产生的计算结果。
[0025]可以理解,当前任务的计算流中各计算操作的计算结果可能需要传输给其他的任务。例如,计算流110属于深度学习中前向计算任务中的计算流,计算流110中的计算结果(例如梯度)需要传输给反向计算任务中的计算流来计算损失。
[0026]例如,计算流110中的计算操作2(calc2)的计算结果需要传输给其他任务,在计算操作2执行完成后,可以发起通知消息event1,该通知消息event1用于通知通信流120开始传输计算操作2的计算结果。
[0027]例如,通信流120在接收到或等待到通知消息event1(wait event1)之后,可以获取计算操作2的计算结果,并执行通信操作3(comm3),通信操作3可以将该计算操作2的计算结果传输给其他任务。
[0028]类似地,计算流110中的计算操作4(calc4)在执行完成后,可以发起通知消息
event2,该通知消息event2用于通知通信流120开始传输计算操作4的计算结果。通信流120在接收到或等待到通知消息event2(wait event2)之后,可以获取计算操作4的计算结果,并执行通信操作5(comm5),通信操作5可以将该计算操作4的计算结果传输给其他任务。
[0029]通信操作5在完成计算操作4的计算结果的传输之后,可以发起通知消息event3,该通知消息event3用于通知计算流110通信流120已完成通信。
[0030]在通信流120传输计算流110中计算操作的计算结果的过程中,计算流110可以继续执行后续计算操作。因此,计算流的计算操作与通信流的通信操作在时间上产生了重叠。例如,如图1所示,计算流110中的计算操作4与通信流120中的通信操作3在时间上存在重叠。
[0031]如图1所示的计算流与通信流重叠的方式可以应用于流水线并行任务,通过在时间维度上复用计算操作和通本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种处理器的多线程调度方法,包括:响应于计算线程发起的传输第一数据的第一通知消息,使用第一通信线程传输所述第一数据;响应于所述第一通信线程发起的传输所述第一数据的第二通知消息,在第一时段使用第二通信线程传输所述第一数据;以及响应于所述计算线程发起的传输第二数据的第三通知消息,在第二时段使用所述第一通信线程传输所述第二数据;其中,所述第一时段与所述第二时段彼此重叠。2.根据权利要求1所述的方法,还包括:响应于确定所述第一通信线程完成所述第一数据的传输,通过所述第一通信线程发起传输所述第一数据的第二通知消息。3.根据权利要求1或2所述的方法,还包括:响应于确定所述第二通信线程完成所述第一数据的传输,通过所述第二通信线程发起完成所述第一数据的传输的第四通知消息。4.根据权利要求1至3中任一项所述的方法,还包括:响应于确定所述第一通信线程完成所述第二数据的传输,通过所述第一通信线程发起传输所述第二数据的第五通知消息;响应于所述第五通知消息,使用所述第二通信线程传输所述第二数据。5.根据权利要求1或2所述的方法,还包括:响应于确定所述第二通信线程完成所述第一数据的传输,通过所述第二通信线程发起传输所述第一数据的第六通知消息;响应于所述第六通知消息,使用第三通信线程传输所述第一数据。6.根据权利要求1至5中任一项所述的方法,其中,所述计算线程包括统一计算设备架构CUDA中的计算流,所述通信线程包括统一计算设备架构CUDA中的通信流。7.根据权利要求1至6中任一项所述的方法,所述方法应用于电子设备中;所述方法还包括通过以下操作为所述电子设备提供用于实现所述方法的接口:使用目标对象作为所述第一数据和所述第二数据的传输载体,使得所述计算线程、第一通信线程和第二通信线程通过所述目标对象传输所述第一数据和第二数据中的至少之一;提供用于控制所述第一通信线程和所述第二通信线程之间先后执行顺序的第一子接口;以及提供用于配置所述第一通信线程和所述第二通信线程的第二子接口。8.一种处理器的多线程调度装置,包括:第一通信模块,用于响应于计算线程发起的传输第一数据的第一通知消息,使用第一通信线程传输所述第一数据;第二通信模块,用于响应于所述第一通信线程发起的传输所述第一数据的第二通知消息,在第一时段使用第二通信线程传输所述第一数据;以及第三通信模块,用于响应于所述计算线程发起的传输第二数据的第三通知消息,在第二时段使用所述第一通信线程传输所述第二数据...

【专利技术属性】
技术研发人员:孙逸伦李雨芮巩伟宝于佃海
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

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

1