异构计算中进程切换管理方法及计算装置制造方法及图纸

技术编号:36406165 阅读:18 留言:0更新日期:2023-01-18 10:14
本申请提供了一种异构计算中进程切换管理方法及计算装置。其中响应于收到进程切换请求,确定当前进程中各个命令列表执行到的最大栅栏命令编号,执行当前进程的每个命令列表直到执行至该命令列表的栅栏命令的编号大于最大栅栏命令编号或者该命令列表为空,以及从当前进程切换至所述进程切换请求中指定的进程。该方案通过在各命令列表中添加的栅栏命令可以准确识别进程中各命令列表的可靠切换边界,提高了进程切换的效率,避免了切换错误和死锁,降低了软件编程的复杂度。降低了软件编程的复杂度。降低了软件编程的复杂度。

【技术实现步骤摘要】
异构计算中进程切换管理方法及计算装置


[0001]本申请涉及高性能计算和并行计算,尤其涉及管理多个进程之间切换的方法及装置。

技术介绍

[0002]本部分的陈述仅仅是为了提供与本申请的技术方案有关的背景信息,以帮助理解,其对于本申请的技术方案而言并不一定构成现有技术。
[0003]人工智能(AI)技术在近些年来得到了迅猛的发展,很多人工智能算法要求较强的并行计算能力以处理海量数据,而现有的串行指令执行方式的中央处理器CPU执行并行算法的效率很低。由此出现了“CPU+加速芯片”的异构计算架构,其中加速芯片作为协处理器专门处理大量计算任务,而其他非计算任务可由作为主处理器的CPU负责。这种加速芯片通常也可以称为协处理器、AI处理器、AI加速器、GPU处理器等等(在本文中统称为协处理器或设备端)。协处理器可以同时支持多路并行的计算任务,这些计算任务可以属于一个用户的多个进程,也可以属于多个用户的多个进程。但协处理器在一个时间点通常只能执行一个或有限个进程,这意味着,多个进程需要在协处理器上切换执行以使各进程的任务得到有效、平衡、及时的执行。通常不能等待某个进程完成所有任务后再切换至下一进程,这样会造成后续进程得不到及时响应。
[0004]在现有的异构计算架构中,进程的切换管理通常是由主处理器(也可称为主机端)负责。例如主机端为设备端的每个进程分别提交能正常切换的部分任务,任务的顺序由主机端预先排列好,设备端按顺序执行这些任务。当设备端发现任务属于不同进程时,进行进程切换。但在这种情况下由于任务的执行次序是预先设置的,而主机端实际上难以预知设备端执行完各个任务所需要的时间,因此常常导致各进程的任务执行时间不平衡,也难以及时切换到高优先级任务。在另一种方案中,为解决各进程的任务执行时间不平衡的问题,将设备端配置为当执行完某一进程的某个任务时会及时通知主机端,由主机端再来指定切换至下一进程,或继续提交同一进程的任务。这种方式可使各进程执行时间更平衡,且可以更及时地切换至高优先级任务;但是会增加主机端处理的负载,而且主机端和设备端的频繁通信引入的延迟也会造成设备端处理性能损失。
[0005]需要说明的是,上述内容仅用于帮助理解本申请的技术方案,并不作为评价本申请的现有技术的依据。

技术实现思路

[0006]本申请的目的是提供一种异构计算中进程切换管理方法,提高了进程切换的效率,防止了切换错误和死锁,并降低了软硬件编程的复杂度。
[0007]上述目的是通过以下技术方案实现的:根据本申请实施例的第一方面,提供了一种异构计算中进程切换管理方法,包括:响应于收到进程切换请求,确定当前进程中各个命令列表执行到的最大栅栏命令编号;执
行当前进程的每个命令列表直到其满足可切换状态,其中可切换状态包括:执行至该命令列表的栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空;以及从当前进程切换至所述进程切换请求中指定的进程。其中栅栏命令用于在命令列表中标识属于同一计算任务的命令的起始或结束位置,所述栅栏命令的编号随着提交至进程的计算任务而递增,同一计算任务在不同命令列表中使用相同的栅栏命令编号。
[0008]在一些实施例中,该方法还可包括:响应于收到向进程提交的计算任务,为该计算任务分配相应的栅栏命令,所述栅栏命令中包含栅栏命令的编号,用于识别该计算任务。对于所述进程的每个命令列表,在将该计算任务中包含的命令分发至该命令列表时,可以先分发与该计算任务对应的栅栏命令,以识别该计算任务的命令在该命令列表中的起始位置;或者也可以先将该计算任务中包含的命令分发至每个命令列表,并接着将与该计算任务对应的栅栏命令也一起分发至该命令列表,以识别该计算任务的命令在该命令列表中的结束位置。
[0009]可以看出,在上述实施例的进程切换中,不需要主机端的参与,设备端可以根据在进程各命令列表中添加的栅栏命令准确地识别各命令列表的可靠切换边界,不仅避免了切换错误和死锁,提高了进程切换的效率;同时减少了主机端处理的负载,避免了由于主机端和设备端的频繁通信引入的延迟也会造成设备端处理性能损失。而且该方案简单高效,降低了软硬件编程的复杂度,非常有利于设备端纯硬件逻辑实现。
[0010]在一些实施例中,该方法还可包括:分别记录当前进程的每个命令列表执行到的栅栏编号;在收到进程切换请求时,通过比较所记录的每个命令列表执行到的栅栏编号来确定当前进程中各个命令列表执行到的最大栅栏命令编号。这样,在收到进程切换请求时,通过简单地比较所记录的每个命令列表执行到的当前的栅栏命令编号,就可以确定出当前进程中各个命令列表执行到的最大栅栏命令编号,从而可以节约计算量,提高切换速度。
[0011]在一些实施例中,所述栅栏命令还可包括可配置的锁定标记,用于指示与该栅栏命令对应的计算任务不可中断。该方法还可包括:根据收到的对任务锁定范围的设置,将与处于所述任务锁定范围中每个任务对应的栅栏命令中添加锁定标记;或者将与任务锁定范围的起始任务对应的栅栏命令中添加锁定标记,并在与任务锁定范围的结束任务对应的栅栏命令中添加解锁标记。通过这样的方式可以使得单个或连续多个计算任务不会被进程切换所中断,从而更灵活地控制进程切换。
[0012]在上述的包含锁定标记的实施例中,当执行当前进程的每个命令列表直到其满足可切换状态包括对于每个命令列表:执行至该命令列表的当前栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空,并且该当前栅栏命令中不包含锁定标记,以及将该命令列表标记为可切换状态。
[0013]根据本申请实施例的第二方面,提供了一种高性能处理器,其包括控制器,其中控制器被配置为执行根据本申请实施例的第一方面所述的方法。
[0014]根据本申请实施例的第三方面,提供了一种计算设备,包括主处理器和协处理器,其中所述协处理器为根据本申请实施例的第二方面所述的高性能处理器应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
[0015]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1示出了根据设备端多个进程的命令集合的数据结构示意图。
[0016]图2示出了存在命令间依赖关系的属于同一进程的三个计算任务的示意图。
[0017]图3示出了根据本申请一个实施例的异构计算中多进程管理方法的流程示意图。
[0018]图4示出了适用根据本申请一个实施例的命令列表结构示意图。
[0019]图5示出了适用根据本申请又一个实施例的命令列表结构示意图。
[0020]图6示出了适用根据本申请又一个实施例的命令列表结构示意图。
具体实施方式
[0021]为了使本申请的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种异构计算中进程切换管理方法,包括:响应于收到进程切换请求,确定当前进程中各个命令列表执行到的最大栅栏命令编号;执行当前进程的每个命令列表直到其满足可切换状态,其中可切换状态包括:执行至该命令列表的栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空;从当前进程切换至所述进程切换请求中指定的进程;其中所述栅栏命令用于在命令列表中标识属于同一计算任务的命令的起始或结束位置,所述栅栏命令的编号随着提交至进程的计算任务而递增,同一计算任务在不同命令列表中使用相同的栅栏命令编号。2.根据权利要求1所述的方法,其中所述栅栏命令还包括可配置的锁定标记,用于指示与该栅栏命令对应的计算任务不可中断;所述可切换状态还包括:执行至命令列表的栅栏命令不再包含锁定标记。3.根据权利要求1或2所述的方法,还包括:响应于收到向进程提交的计算任务,为该计算任务分配相应的栅栏命令,所述栅栏命令中包含栅栏命令的编号,用于识别该计算任务;对于所述进程的每个命令列表,在将该计算任务中包含的命令分发至该命令列表时,先分发与该计算任务对应的栅栏命令,以识别该计算任务的命令在该命令列表中的起始位置。4.根据权利要求1或2所述的方法,还包括:响应于收到向进程提交的计算任务,为该计算任务分配相应的栅栏命令,所述栅栏命令中包含栅栏命令的编号,用于识别该计算任务;在将该计算任务中包含的命令分发至每个命令列表时,同时将与该计算任务对应的栅栏命令也一起分发至该命令...

【专利技术属性】
技术研发人员:严宗宗马亮
申请(专利权)人:上海登临科技有限公司
类型:发明
国别省市:

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

1