CN115617533B - 异构计算中进程切换管理方法及计算装置 - Google Patents
异构计算中进程切换管理方法及计算装置 Download PDFInfo
- Publication number
- CN115617533B CN115617533B CN202211599077.6A CN202211599077A CN115617533B CN 115617533 B CN115617533 B CN 115617533B CN 202211599077 A CN202211599077 A CN 202211599077A CN 115617533 B CN115617533 B CN 115617533B
- Authority
- CN
- China
- Prior art keywords
- command
- barrier
- task
- command list
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种异构计算中进程切换管理方法及计算装置。其中响应于收到进程切换请求,确定当前进程中各个命令列表执行到的最大栅栏命令编号,执行当前进程的每个命令列表直到执行至该命令列表的栅栏命令的编号大于最大栅栏命令编号或者该命令列表为空,以及从当前进程切换至所述进程切换请求中指定的进程。该方案通过在各命令列表中添加的栅栏命令可以准确识别进程中各命令列表的可靠切换边界,提高了进程切换的效率,避免了切换错误和死锁,降低了软件编程的复杂度。
Description
技术领域
本申请涉及高性能计算和并行计算,尤其涉及管理多个进程之间切换的方法及装置。
背景技术
本部分的陈述仅仅是为了提供与本申请的技术方案有关的背景信息,以帮助理解,其对于本申请的技术方案而言并不一定构成现有技术。
人工智能(AI)技术在近些年来得到了迅猛的发展,很多人工智能算法要求较强的并行计算能力以处理海量数据,而现有的串行指令执行方式的中央处理器CPU执行并行算法的效率很低。由此出现了“CPU+加速芯片”的异构计算架构,其中加速芯片作为协处理器专门处理大量计算任务,而其他非计算任务可由作为主处理器的CPU负责。这种加速芯片通常也可以称为协处理器、AI处理器、AI加速器、GPU处理器等等(在本文中统称为协处理器或设备端)。协处理器可以同时支持多路并行的计算任务,这些计算任务可以属于一个用户的多个进程,也可以属于多个用户的多个进程。但协处理器在一个时间点通常只能执行一个或有限个进程,这意味着,多个进程需要在协处理器上切换执行以使各进程的任务得到有效、平衡、及时的执行。通常不能等待某个进程完成所有任务后再切换至下一进程,这样会造成后续进程得不到及时响应。
在现有的异构计算架构中,进程的切换管理通常是由主处理器(也可称为主机端)负责。例如主机端为设备端的每个进程分别提交能正常切换的部分任务,任务的顺序由主机端预先排列好,设备端按顺序执行这些任务。当设备端发现任务属于不同进程时,进行进程切换。但在这种情况下由于任务的执行次序是预先设置的,而主机端实际上难以预知设备端执行完各个任务所需要的时间,因此常常导致各进程的任务执行时间不平衡,也难以及时切换到高优先级任务。在另一种方案中,为解决各进程的任务执行时间不平衡的问题,将设备端配置为当执行完某一进程的某个任务时会及时通知主机端,由主机端再来指定切换至下一进程,或继续提交同一进程的任务。这种方式可使各进程执行时间更平衡,且可以更及时地切换至高优先级任务;但是会增加主机端处理的负载,而且主机端和设备端的频繁通信引入的延迟也会造成设备端处理性能损失。
需要说明的是,上述内容仅用于帮助理解本申请的技术方案,并不作为评价本申请的现有技术的依据。
发明内容
本申请的目的是提供一种异构计算中进程切换管理方法,提高了进程切换的效率,防止了切换错误和死锁,并降低了软硬件编程的复杂度。
上述目的是通过以下技术方案实现的:
根据本申请实施例的第一方面,提供了一种异构计算中进程切换管理方法,包括:响应于收到进程切换请求,确定当前进程中各个命令列表执行到的最大栅栏命令编号;执行当前进程的每个命令列表直到其满足可切换状态,其中可切换状态包括:执行至该命令列表的栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空;以及从当前进程切换至所述进程切换请求中指定的进程。其中栅栏命令用于在命令列表中标识属于同一计算任务的命令的起始或结束位置,所述栅栏命令的编号随着提交至进程的计算任务而递增,同一计算任务在不同命令列表中使用相同的栅栏命令编号。
在一些实施例中,该方法还可包括:响应于收到向进程提交的计算任务,为该计算任务分配相应的栅栏命令,所述栅栏命令中包含栅栏命令的编号,用于识别该计算任务。对于所述进程的每个命令列表,在将该计算任务中包含的命令分发至该命令列表时,可以先分发与该计算任务对应的栅栏命令,以识别该计算任务的命令在该命令列表中的起始位置;或者也可以先将该计算任务中包含的命令分发至每个命令列表,并接着将与该计算任务对应的栅栏命令也一起分发至该命令列表,以识别该计算任务的命令在该命令列表中的结束位置。
可以看出,在上述实施例的进程切换中,不需要主机端的参与,设备端可以根据在进程各命令列表中添加的栅栏命令准确地识别各命令列表的可靠切换边界,不仅避免了切换错误和死锁,提高了进程切换的效率;同时减少了主机端处理的负载,避免了由于主机端和设备端的频繁通信引入的延迟也会造成设备端处理性能损失。而且该方案简单高效,降低了软硬件编程的复杂度,非常有利于设备端纯硬件逻辑实现。
在一些实施例中,该方法还可包括:分别记录当前进程的每个命令列表执行到的栅栏编号;在收到进程切换请求时,通过比较所记录的每个命令列表执行到的栅栏编号来确定当前进程中各个命令列表执行到的最大栅栏命令编号。这样,在收到进程切换请求时,通过简单地比较所记录的每个命令列表执行到的当前的栅栏命令编号,就可以确定出当前进程中各个命令列表执行到的最大栅栏命令编号,从而可以节约计算量,提高切换速度。
在一些实施例中,所述栅栏命令还可包括可配置的锁定标记,用于指示与该栅栏命令对应的计算任务不可中断。该方法还可包括:根据收到的对任务锁定范围的设置,将与处于所述任务锁定范围中每个任务对应的栅栏命令中添加锁定标记;或者将与任务锁定范围的起始任务对应的栅栏命令中添加锁定标记,并在与任务锁定范围的结束任务对应的栅栏命令中添加解锁标记。通过这样的方式可以使得单个或连续多个计算任务不会被进程切换所中断,从而更灵活地控制进程切换。
在上述的包含锁定标记的实施例中,当执行当前进程的每个命令列表直到其满足可切换状态包括对于每个命令列表:执行至该命令列表的当前栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空,并且该当前栅栏命令中不包含锁定标记,以及将该命令列表标记为可切换状态。
根据本申请实施例的第二方面,提供了一种高性能处理器,其包括控制器,其中控制器被配置为执行根据本申请实施例的第一方面所述的方法。
根据本申请实施例的第三方面,提供了一种计算设备,包括主处理器和协处理器,其中所述协处理器为根据本申请实施例的第二方面所述的高性能处理器
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了根据设备端多个进程的命令集合的数据结构示意图。
图2示出了存在命令间依赖关系的属于同一进程的三个计算任务的示意图。
图3示出了根据本申请一个实施例的异构计算中多进程管理方法的流程示意图。
图4示出了适用根据本申请一个实施例的命令列表结构示意图。
图5示出了适用根据本申请又一个实施例的命令列表结构示意图。
图6示出了适用根据本申请又一个实施例的命令列表结构示意图。
具体实施方式
为了使本申请的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本申请进一步详细说明。应当理解,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动下获得的所有其他实施例,都属于本申请保护的范围。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在异构计算中通过协处理器专门处理大量计算任务,而其他非计算任务可由作为主处理器的CPU负责,例如进程切换管理。通常,每个应用对应一个进程,其可以向与其对应的进程提交多个计算任务。每个计算任务包括一个或多个命令,当一个计算任务从主机端提交至设备端执行时,设备端的软件驱动会将该计算任务包含的所有命令添加至负责处理该计算任务的进程的命令列表中。每个进程可包括一个或多个命令列表,命令列表是多个命令的集合。一般的,顺序执行的命令分配至同一命令列表,而可以并行执行的命令往往分配至不同的命令列表。
与设备端执行的多个进程相关的进程信息被记录在进程列表中。在该进程列表中包含了若干个进程信息。每个进程信息包含进程头信息和若干个命令列表的控制信息。其中进程头信息包含了控制进程所必要的信息,因此也可以称为进程控制信息;例如进程标识、进程开始时间、进程状态、进程包含的命令列表的数量等等。每个命令列表的控制信息包含了命令列表的存储地址及与该命令列表相关的所有控制信息。其中,命令列表的存储可以通过多种形式来实现。例如,命令列表可以被设计为环形缓冲结构,采用环形缓冲结构的好处是软件不用频繁分配内存。这样的环形缓冲结构通过写指针和读指针来完成命令列表的管理:当向命令列表中添加新命令时,可以更新写指针;当从命令列表取出命令后,可以更新读指针。每个命令列表在存储器中都有自己的存储地址,该信息被保存在命令列表的控制信息中。上述的进程列表以及命令列表由软件驱动生成并保存在存储器中,该存储器可以是主机端的存储器,也可以是设备端的存储器。
图1示出了设备端多个进程的命令集合的数据结构示例。如图1所示,在设备端进程列表中包含若干个进程信息(例如进程信息0、进程信息1、进程信息2…)和从属于每进程的若干命令列表(例如命令列表0、命令列表1、命令列表2…)。当设备端软件驱动收到来自上层应用提交的计算任务时,将计算任务中包含的一个或多个命令添加至与该应用对应的进程的一个或多个命令列表中。当设备端执行完一部分命令时,可通知软件驱动回收命令列表中这些已完成命令对应的存储器空间。一个计算任务中包含的多个命令可以分布于多个命令列表中。每个计算任务中包括的命令数量是不定的,且关联的命令列表数量也是不定的,并且一个计算任务也不必在所有命令列表上均添加命令。
在设备端通常会为各个进程设定时间片,当设备端执行某进程达到该时间片时,产生硬件进程切换请求以从当前进程切换至其他进程。另外还会有优先级相关的进程切换,例如从低优先级的进程切换至高优先级的进程。当设备端确定有进程切换请求时,应当先执行完当前正在执行的命令,然后才能执行进程切换。然而,同一进程的多个任务命令之间可能存在依赖关系,即某个命令依赖于另一个命令的输出。如图2所示,任务1、任务2和任务3属于同一个进程中的3个任务,这三个任务的命令分布在该进程的命令列表0、1、2、3中。各个任务分别隔开表示,实线箭头表示两个命令的依赖关系:箭尾的命令依赖于箭头尖处的命令,即箭头尖处的命令需先执行。由于协处理器并行执行各个命令列表,且每个命令的执行时间不定,假设协处理器正在执行命令列表0的命令1时(因上述时间片轮转及优先级要求)请求进程切换,而此时协处理器在命令列表2中还未执行到命令2,那么将造成协处理器状态异常,该协处理器无法完成命令列表0的命令1,也不能进行进程切换,由此造成了切换错误和死锁现象的出现。
在本申请的实施例中,提供了一种新的管理进程切换的方法,其通过在进程各命令列表中添加的栅栏命令准确地识别各命令列表的可靠切换边界,提高了进程切换的效率,避免了切换错误和死锁。这里的栅栏命令是在本申请的实施例中专门定制的用于在命令列表中标识属于同一计算任务的命令的起始或结束位置的命令,其也是采用命令的形式存在,可以与正常命令一起提交至命令列表中。该栅栏命令包括编号,该编号随着提交至进程的计算任务而递增。对于到达进程的每个计算任务都会设置一个相应的栅栏命令。在将计算任务包含的一个或多个命令分发至进程的一个或多个命令列表中时,可以先将与该计算任务对应的栅栏命令分发至命令列表中,再将该计算任务包含的命令分发至命令列表,这样就可以在命令列表中标记该计算任务的命令的起始位置。同理,也可以先将计算任务包含的命令分发至命令列表中,然后再将与该计算任务对应的栅栏命令分发至命令列表中,从而可以在命令列表中标记该计算任务的命令的结束位置。同一计算任务在不同的命令列表上使用的栅栏命令的编号相同。当设备端执行到命令列表中的栅栏命令时,可以获取该栅栏命令的编号,从而识别出相应计算任务在该命令列表中的起始或结束位置。这样的栅栏命令本身并不会影响正常命令的执行,但通过这样提交至命令列表中的栅栏命令,设备端可以准确地识别每个计算任务在各个命令列表中的边界或位置。
图3给出了根据本申请一个实施例的管理进程切换的方法的流程示意图。如图3所示,该方法包括:S1)响应于收到进程切换请求,确定当前进程中各个命令列表执行到的最大栅栏命令编号;S2)执行当前进程的每个命令列表直到其满足可切换状态,其中可切换状态包括:执行至该命令列表的栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空。S3)从当前进程切换至所述进程切换请求中指定的进程。该方法的执行主体是协处理器,即设备端。
更具体地,在步骤S1),当协处理器运行过程中收到进程切换请求时,首先确定正在执行的当前进程中各个命令列表执行到的最大栅栏命令编号。在一个实施例中,在执行过程中,协处理器可以分别记录当前进程的每个命令列表当前执行到的栅栏命令的编号。由于该栅栏命令的编号是随着到达进程的计算任务的先后顺序而递增的,同时命令列表是顺序执行的,因此,每当执行到命令列表中一个栅栏命令时,就将该栅栏命令的编号设置为当前的栅栏命令编号,实际上就是该命令列表的当前最大的栅栏命令编号。这样,在收到进程切换请求时,通过简单地比较所记录的每个命令列表执行到的当前的栅栏命令编号,就可以确定出当前进程中各个命令列表执行到的最大栅栏命令编号,从而可以节约计算量,提高切换速度。
在步骤S2),当协处理器收到进程切换请求时,为了防止切换错误和死锁,协处理器还会继续执行当前进程的各个命令列表直到每个命令列表都满足可切换状态为止。在一个示例中,当命令列表满足下列条件时,可以将其标记为可切换状态:该命令列表当前执行到的栅栏命令的编号大于在步骤S1)确定的最大栅栏命令编号,或者该命令列表为空。
在步骤S3),当协处理器确定当前进程中所有命令列表都是可切换状态时,开始执行进程切换,从当前进程切换至在步骤S1)收到的进程切换请求中指定的进程。
下面以图4为例说明上述进程切换的效果。图4示出了将图2的命令列表中加入根据本申请实施例的栅栏命令之后的命令列表结构示意图。在每个命令列表中每个任务的命令都以与该任务对应的栅栏命令作为开始标识,例如在命令列表0、1、2、3中,任务1对应的命令都以编号为1的栅栏命令开头,而任务2对应的命令都已编号为2的栅栏命令开头,每个任务对应的栅栏命令实际上充当了命令列表中各任务的命令的起始位置的标识或边界。应指出,上述仅是举例说明,而非进行任何限制,虽然图4中栅栏命令的编号恰好等于任务的编号,但应理解在本申请中栅栏命令的编号为每任务递增,但不一意味着栅栏命令的编号与任务的标号完全对应。该协处理器正在执行列表0命令1时收到进程切换请求,协处理器首先确定出当前进程的命令列表0、1、2、3中执行到的最大的栅栏编号为1,接着协处理器需要将各命令列表执行至编号为2的栅栏命令处(即命令列表当前执行到的栅栏命令的编号大于所确定的最大栅栏命令编号)或命令表列表为空才可进行进程切换。因此,可以避免上文结合图2中条的切换错误和死锁现象的出现。
应理解,栅栏命令在命令列表中的设置方式并不局限于图4所示的结构。如上文提到的,在一些实施例中,也可以先将计算任务包含的命令分发至命令列表中,然后再将与该计算任务对应的栅栏命令分发至命令列表中,从而可以通过该栅栏命令在命令列表中标记该计算任务的命令的结束位置。又例如,也可以采用如图5所示的命令列表结构。先将预至的同一栅栏命令(例如栅栏1)分发至进程的每个命令列表中作为统一的起始标志,接着将计算任务中包含的命令分发至进程的一个或多个命令列表中,然后再将与计算任务对应的栅栏命令每个命令列表中,即通过栅栏命令在命令列表中标记该计算任务的命令的结束位置,例如,与任务1对应的为栅栏2,与任务2对应的为栅栏3,与任务3对应的为栅栏4。在图5所示的命令列表结构中,每个命令列表无论其是否被分发有计算任务中包含的命令,都会被分发有与每个计算任务相应的栅栏命令,例如可参考图5中命令列表0中的栅栏3和栅栏4,命令列表3中的栅栏2。这样的结构更有益于在收到进程切换请求时更快速地确定出当前进程的各个命令列表执行到的最大的栅栏命令编号。
可以看出,在上述实施例的进程切换中,不需要主机端的参与,设备端可以根据在进程各命令列表中添加的栅栏命令准确地识别各命令列表的可靠切换边界,不仅避免了切换错误和死锁,提高了进程切换的效率;同时减少了主机端处理的负载,避免了由于主机端和设备端的频繁通信引入的延迟也会造成设备端处理性能损失。而且该方案简单高效,降低了软硬件编程的复杂度,非常有利于设备端纯硬件逻辑实现。
在又一些实施例中,该方法还可以包括通过在栅栏命令中设置锁定标记的步骤来使得单个或连续多个计算任务不会被进程切换所中断,从而更灵活地控制进程切换。例如,对于某些不想要被切换中断的任务,可以在于该任务对应的栅栏命令中设置锁定标记,用于指示与该栅栏命令对应的计算任务不可中断。例如,在收到对任务锁定范围的设置时,一种方式是可以将与处于该任务锁定范围中每个任务对应的栅栏命令中添加锁定标记。另一种方式是可以根据对任务锁定范围的设置,将与任务锁定范围的起始任务对应的栅栏命令中添加锁定标记,并在与任务锁定范围的结束任务对应的栅栏命令中添加解锁标记。如图6所示,通过设置与任务对应的栅栏命令中的锁定标记和解锁标记,将任务1与任务2配置于切换锁定范围中,即使进程切换请求发生于任务1中(最大栅栏命令编号为1),协处理器也不会在执行编号2的栅栏命令处停止,因为编号2的栅栏命令处仍为切换锁定状态;当执行到编号为3的栅栏命令处才会根据解锁标记解除锁定,才能执行进程切换。
在这样的实施例中,在步骤S2确定进程的每个命令列表是否满足可切换状态时,除了判断该命令列表当前执行到的栅栏命令的编号是否大于在步骤S1)确定的最大栅栏命令编号,或者该命令列表是否为空之外,还需要判断该命令列表当前执行到的栅栏命令是否包含锁定标记。如果该命令列表当前执行到的栅栏命令包含锁定标记,则需要继续执行该命令列表直到执行至命令列表的栅栏命令不再包含锁定标记。也就是说,在收到切换请求时,设备端继续执行当前进程的各命令列表,直到以下两条件均满足时停止且标记命令列表为可切换状态:
条件1:命令列表上出现栅栏命令且该命令的栅栏编号大于当前最大栅栏编号;或者,命令列表中没有更多的命令。
条件2:栅栏命令没有包含锁定标记。
如果条件1中出现栅栏命令且该命令栅栏编号于当前最大栅栏编号的情况,设备端需要回退该栅栏命令,不能识别为已执行,下一次切换至本进程时才会开始实际执行这个栅栏命令。
上述结合图4、5、6举例说明的命令列表可以存储在主机端的存储器,但优选地保存在设备端的存储器。在一些实施例中,该方法还可包括响应于收到要向进程提交的计算任务,为该计算任务分配相应的栅栏命令,并将该栅栏命令与该计算任务中包含的命令一起分发至该进程的命令列表中的步骤。例如,可以先分发与该计算任务对应的栅栏命令,以识别该计算任务的命令在命令列表中的起始位置,接着再将该计算任务中包含的命令分发至命令列表中;反之也可以,只是利用栅栏命令识别计算任务在命令列表中的结束位置。应理解,上述步骤实质上是在构建如图4、5、6所示的命令列表,而该构建过程本身与进程切换步骤S1)-S3)并非紧耦合的。对于上述的步骤S1)-S3)而言,只要能从存储器获取进程中的命令列表即可。因此,上述构建命令列表的过程可以由主处理器执行,也可以由协处理器执行,本文对此并不进行任何限制。在一个示例中,主处理器通过直接对协处理器的进程控制寄存器进行写入的方式来将对进程的相关控制命令提供至协处理器。例如,主处理器可以根据上层应用软件的计算任务更新该上层应用软件对应进程的命令列表,并向协处理器的进程控制寄存器写入更新命令,协处理器根据其进程控制器寄存器来执行相应进程的命令列表。通常,这样的进程控制寄存器可以由现有的任意硬件形式的寄存器来实现。
在本申请的又一个实施例中,还提供了一种高性能处理器,其包括控制器和存储器,其中控制器被配置为执行上文结合图3介绍的方法,而存储器用于保存上文结合图4-6所介绍的命令列表。
在本申请的又一个实施例中,还提供了一种用于异构计算的计算装置,包括主处理器和协处理器。其中主处理器被配置为响应于收到向进程提交的计算任务,为该计算任务分配相应的栅栏命令,并将该栅栏命令与该计算任务中包含的命令一起分发至该进程的一个或多个命令列表中,以通过该栅栏命令识别该计算任务的命令在各个命令列表中的起始位置或结束位置。其中,协处理器被配置为响应于收到进程切换请求,确定当前进程中各个命令列表执行到的最大栅栏命令编号;执行当前进程的每个命令列表直到执行至该命令列表的栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空;以及从当前进程切换至所述进程切换请求中指定的进程。
在一些实施例中,协处理器还可以被配置为:在进程执行过程中,分别记录当前进程的每个命令列表执行到的栅栏编号;在收到进程切换请求时,通过比较所记录的每个命令列表执行到的栅栏编号来确定当前进程中各个命令列表执行到的最大栅栏命令编号。
在一些实施例中,主处理器还可以被配置为根据收到的对任务锁定范围的设置,将与处于所述任务锁定范围中每个任务对应的栅栏命令中添加锁定标记。在又一些实施例中,主处理器还可以被配置为根据对任务锁定范围的设置,将与任务锁定范围的起始任务对应的栅栏命令中添加锁定标记,并在与任务锁定范围的结束任务对应的栅栏命令中添加解锁标记。在这样的实施例中,协处理器可被配置为执行当前进程的每个命令列表直到执行至该命令列表的当前栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空,并且该当前栅栏命令中不包含锁定标记。
本说明书中针对“各个实施例”、“一些实施例”、“一个实施例”、或“实施例”等的参考指代的是结合所述实施例所描述的特定特征、结构、或性质包括在至少一个实施例中。因此,短语“在各个实施例中”、“在一些实施例中”、“在一个实施例中”、或“在实施例中”等在整个说明书中各地方的出现并非必须指代相同的实施例。此外,特定特征、结构、或性质可以在一个或多个实施例中以任何合适方式组合。因此,结合一个实施例中所示出或描述的特定特征、结构或性质可以整体地或部分地与一个或多个其他实施例的特征、结构、或性质无限制地组合,只要该组合不是非逻辑性的或不能工作。
本说明书中“包括”和“具有”以及类似含义的术语表达,意图在于覆盖不排他的包含,例如包含了一系列步骤或单元的过程、方法、系统、产品或设备并不限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。“一”或“一个”也不排除多个的情况。另外,本申请附图中的各个元素仅仅为了示意说明,并非按比例绘制。
虽然本申请已经通过上述实施例进行了描述,然而本申请并非局限于这里所描述的实施例,在不脱离本申请范围的情况下还包括所做出的各种改变以及变化。
Claims (10)
1.一种异构计算中进程切换管理方法,包括:
响应于收到进程切换请求,确定当前进程中各个命令列表执行到的最大栅栏命令编号;
执行当前进程的每个命令列表直到其满足可切换状态,其中可切换状态包括:执行至该命令列表的栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空;
从当前进程切换至所述进程切换请求中指定的进程;
其中所述栅栏命令用于在命令列表中标识属于同一计算任务的命令的起始或结束位置,所述栅栏命令的编号随着提交至进程的计算任务而递增,同一计算任务在不同命令列表中使用相同的栅栏命令编号。
2.根据权利要求1所述的方法,其中所述栅栏命令还包括可配置的锁定标记,用于指示与该栅栏命令对应的计算任务不可中断;所述可切换状态还包括:执行至命令列表的栅栏命令不再包含锁定标记。
3.根据权利要求1或2所述的方法,还包括:
响应于收到向进程提交的计算任务,为该计算任务分配相应的栅栏命令,所述栅栏命令中包含栅栏命令的编号,用于识别该计算任务;
对于所述进程的每个命令列表,在将该计算任务中包含的命令分发至该命令列表时,先分发与该计算任务对应的栅栏命令,以识别该计算任务的命令在该命令列表中的起始位置。
4.根据权利要求1或2所述的方法,还包括:
响应于收到向进程提交的计算任务,为该计算任务分配相应的栅栏命令,所述栅栏命令中包含栅栏命令的编号,用于识别该计算任务;
在将该计算任务中包含的命令分发至每个命令列表时,同时将与该计算任务对应的栅栏命令也一起分发至该命令列表,以识别该计算任务的命令在该命令列表中的结束位置。
5.根据权利要求1或2所述的方法,还包括:
分别记录当前进程的每个命令列表执行到的栅栏编号;
在收到进程切换请求时,通过比较所记录的每个命令列表执行到的栅栏编号来确定当前进程中各个命令列表执行到的最大栅栏命令编号。
6.根据权利要求2所述的方法,还包括:
根据收到的对任务锁定范围的设置,将与处于所述任务锁定范围中每个任务对应的栅栏命令中添加锁定标记。
7.根据权利要求2所述的方法,还包括:
根据对任务锁定范围的设置,将与任务锁定范围的起始任务对应的栅栏命令中添加锁定标记,并在与任务锁定范围的结束任务对应的栅栏命令中添加解锁标记。
8.根据权利要求6所述的方法,其中所述执行当前进程的每个命令列表直到其满足可切换状态包括对于每个命令列表:
执行至该命令列表的当前栅栏命令的编号大于所述最大栅栏命令编号或者该命令列表为空,并且该当前栅栏命令中不包含锁定标记;
将该命令列表标记为可切换状态。
9.一种高性能处理器,其包括控制器,其中控制器被配置为执行根据权利要求1-8中任一项所述的方法。
10.一种计算装置,包括主处理器和协处理器,其中主处理器被配置为执行权利要求3-4、6-7中任一项所述的方法,所述协处理器被配置为执行权利要求1-2、5或8中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211599077.6A CN115617533B (zh) | 2022-12-14 | 2022-12-14 | 异构计算中进程切换管理方法及计算装置 |
PCT/CN2023/084003 WO2024124737A1 (zh) | 2022-12-14 | 2023-03-27 | 异构计算中进程切换管理方法及计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211599077.6A CN115617533B (zh) | 2022-12-14 | 2022-12-14 | 异构计算中进程切换管理方法及计算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115617533A CN115617533A (zh) | 2023-01-17 |
CN115617533B true CN115617533B (zh) | 2023-03-10 |
Family
ID=84880659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211599077.6A Active CN115617533B (zh) | 2022-12-14 | 2022-12-14 | 异构计算中进程切换管理方法及计算装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115617533B (zh) |
WO (1) | WO2024124737A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617533B (zh) * | 2022-12-14 | 2023-03-10 | 上海登临科技有限公司 | 异构计算中进程切换管理方法及计算装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287016A (zh) * | 2019-07-01 | 2019-09-27 | 武汉兆格信息技术有限公司 | 一种分布式流程图异构计算调度方法 |
CN110554925A (zh) * | 2019-09-05 | 2019-12-10 | 中国人民解放军国防科技大学 | 面向死锁检查的非阻塞mpi程序符号执行方法、系统及介质 |
CN111443999A (zh) * | 2020-02-17 | 2020-07-24 | 深圳壹账通智能科技有限公司 | 数据并行处理方法、执行器、计算机设备和存储介质 |
CN112292664A (zh) * | 2018-06-06 | 2021-01-29 | 普莱赛恩技术有限公司 | 用于设计分布式异构计算和控制系统的方法和系统 |
CN114548389A (zh) * | 2022-01-27 | 2022-05-27 | 上海登临科技有限公司 | 异构计算中计算单元的管理方法及相应处理器 |
CN114610472A (zh) * | 2022-05-09 | 2022-06-10 | 上海登临科技有限公司 | 异构计算中多进程管理方法及计算设备 |
CN115454576A (zh) * | 2022-09-29 | 2022-12-09 | 安超云软件有限公司 | 一种虚拟机进程管理方法、系统及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7421694B2 (en) * | 2003-02-18 | 2008-09-02 | Microsoft Corporation | Systems and methods for enhancing performance of a coprocessor |
US9851964B2 (en) * | 2009-07-29 | 2017-12-26 | Echostar Technologies L.L.C. | Process management providing operating mode switching within an electronic device |
US10761893B1 (en) * | 2018-11-23 | 2020-09-01 | Amazon Technologies, Inc. | Automatically scaling compute resources for heterogeneous workloads |
CN110032453B (zh) * | 2019-04-19 | 2022-05-03 | 上海兆芯集成电路有限公司 | 用以任务调度与分配的处理系统及其加速方法 |
CN115617533B (zh) * | 2022-12-14 | 2023-03-10 | 上海登临科技有限公司 | 异构计算中进程切换管理方法及计算装置 |
-
2022
- 2022-12-14 CN CN202211599077.6A patent/CN115617533B/zh active Active
-
2023
- 2023-03-27 WO PCT/CN2023/084003 patent/WO2024124737A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112292664A (zh) * | 2018-06-06 | 2021-01-29 | 普莱赛恩技术有限公司 | 用于设计分布式异构计算和控制系统的方法和系统 |
CN110287016A (zh) * | 2019-07-01 | 2019-09-27 | 武汉兆格信息技术有限公司 | 一种分布式流程图异构计算调度方法 |
CN110554925A (zh) * | 2019-09-05 | 2019-12-10 | 中国人民解放军国防科技大学 | 面向死锁检查的非阻塞mpi程序符号执行方法、系统及介质 |
CN111443999A (zh) * | 2020-02-17 | 2020-07-24 | 深圳壹账通智能科技有限公司 | 数据并行处理方法、执行器、计算机设备和存储介质 |
CN114548389A (zh) * | 2022-01-27 | 2022-05-27 | 上海登临科技有限公司 | 异构计算中计算单元的管理方法及相应处理器 |
CN114610472A (zh) * | 2022-05-09 | 2022-06-10 | 上海登临科技有限公司 | 异构计算中多进程管理方法及计算设备 |
CN115454576A (zh) * | 2022-09-29 | 2022-12-09 | 安超云软件有限公司 | 一种虚拟机进程管理方法、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115617533A (zh) | 2023-01-17 |
WO2024124737A1 (zh) | 2024-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9430388B2 (en) | Scheduler, multi-core processor system, and scheduling method | |
US5349656A (en) | Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information | |
EP0843849B1 (en) | Method and apparatus for strong affinity multiprocessor scheduling | |
US7290261B2 (en) | Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor | |
US7484017B1 (en) | Dequeuing from a host adapter two-dimensional queue | |
FI78993C (fi) | Oevervakare av driftsystem. | |
US9229789B2 (en) | Transparent user mode scheduling on traditional threading systems | |
US20070074214A1 (en) | Event processing method in a computer system | |
US8375390B2 (en) | Scheduling method and scheduling apparatus | |
US20080147945A1 (en) | Parallel memory migration | |
WO1999021082A1 (en) | Method and apparatus to force a thread switch in a multithreaded processor | |
US7590990B2 (en) | Computer system | |
US20110107344A1 (en) | Multi-core apparatus and load balancing method thereof | |
US20110265093A1 (en) | Computer System and Program Product | |
CN115617533B (zh) | 异构计算中进程切换管理方法及计算装置 | |
CN114168271B (zh) | 一种任务调度方法、电子设备及存储介质 | |
CN103329102A (zh) | 多处理器系统 | |
US5371857A (en) | Input/output interruption control system for a virtual machine | |
EP0239078A2 (en) | Register saving/restoring system | |
US20070143738A1 (en) | Method for efficient utilization of processors in a virtual shared environment | |
US6701429B1 (en) | System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location | |
JP2986930B2 (ja) | 対称型マルチプロセッサのタスクスケジューリング方式 | |
JP2795312B2 (ja) | プロセス間通信スケジューリング方式 | |
JP3206580B2 (ja) | Dmaデータ転送制御方法及び入出力処理装置 | |
JPH0836553A (ja) | マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |