一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种异构众核架构下的任务动态分配异步管理方法与流程

2022-03-22 20:16:45 来源:中国专利 TAG:


1.本发明涉及一种异构众核架构下的任务动态分配异步管理方法,属于异构众核架构下的任务管理技术领域。


背景技术:

2.高性能计算领域中异构众核处理器通过将控制核心和运算核心分层组合的方式,具有性能强、性价比高的特点,在超大规模并行机等大型实用系统中得到了较为广泛的应用。在大规模计算应用的部署中,为了充分利用数量庞大的计算核心,在控制核心这一阶层通过网络消息等方式划分任务,在处理器内部需要通过控制核心进行并行调度,为计算核心分配计算任务。
3.控制核心维护通过消息协议获取的任务池,交由计算核心完成计算任务,也分为静态分配和动态分配两种模式。静态分配是指,将任务按照一定的规律均匀的分配给每个计算核心,例如按照计算核心编号,当且仅当所有计算核心完成任务池中的计算任务后,当前处理器被认为完成任务,可以进入下一阶段应用进程,或者继续通过消息协议获取更多的任务;动态分配是指,在初始时按照一定规律分配给每个计算核心部分任务,当计算核心完成分配的任务后为它们分配更多的任务,直到所有任务被完成。
4.高性能计算应用的任务通常对数据比较敏感,不同的输入数据对应的计算任务复杂度并不相同,从实现的角度来说即控制流逻辑比较复杂,和输入数据具备相关性,因此不同的计算核心在执行任务时可能经过不同的执行路径,需要不同的执行时间,在任务规模较大时很可能出现负载不均衡的现象,特别是静态分配的方式中,处理器完成任务的时间受限于最后完成任务的计算核心,而在很多时刻大量的计算核心处于空转状态,严重浪费计算资源,同时也带来功耗损失。因此,动态任务分配模式是异构众核架构部署大规模任务应用时更高效的选择。
5.在异构众核处理器中,通常的动态任务执行模式为由控制核心为计算核心分配任务,并通过共享内存等方式轮询查看每个核心的执行状态,当发现某计算核心当前任务执行完毕后为其分配任务并更新任务池,直到所有任务执行完毕。这种执行模式中,控制核心处于轮询状态,存在如下几个问题:1、控制核心只能通过多线程或添加其他轮询操作来参与并行消息或计算任务,性能损失较大;2、控制核心需要查询的计算核心数据过多,会造成处理不及时或拥堵;3、控制核心轮询时处于挂死状态,不适用非任务分配模式,需要用户判断和控制,对运行时库的实现和应用开发都带来困难。


技术实现要素:

6.本发明的目的是提供一种异构众核架构下的任务动态分配异步管理方法,以解决控制核心需要通过轮询等方式主动查看任务完成状态,而不能进行其他操作的问题。
7.为达到上述目的,本发明采用的技术方案是:提供一种异构众核架构下的任务动态分配异步管理方法,包括以下步骤:
s1、运算核心向控制核心发送任务请求;s2、控制核心收到第一次运算核心的任务请求,初始化任务池;s3、控制核心根据收到的任务请求类型,判断任务请求类型是计算任务还是控制代理任务,如果任务请求类型为控制代理任务,则启动相应代理线程完成请求,否则,执行下一步;s4、控制核心响应运算核心请求,分配任务至运算核心;s5、控制核心继续本地任务,运算核心接收来自控制核心的任务序号,执行对应任务;s6、运算核心任务执行完成后,向控制核心发送任务完成报告信号;s7、控制核心收到运算核心的任务完成报告信号后,更新任务池,并查找是否存在未分配任务,若存在,则将未分配任务分配给运算核心,若不存在,则执行下一步;s8、运算核心查询是否更新任务,若有,则跳转至s5继续执行,若没有,则该运算核心任务全部执行完毕,退出;s9、控制核心继续执行本地任务,如果存在其他运算核心任务完成报告,返回s4,否则执行下一步;s10、控制核心的本地任务执行完毕后,等待所有任务执行完毕或得到最终结果,通知计算核心退出。
8.上述技术方案中进一步改进的方案如下:1. 上述方案中,s5中所述本地任务包括通过节点间消息通信更新本地应完成的任务池和计算是否已得到最终结果。
9.由于上述技术方案的运用,本发明与现有技术相比具有下列优点:本发明使得控制核心可自主完成任务,不需要挂死对控制核心进行轮询操作,在收到运算核心信号后针对信号种类进行处理,性能好、实时性强,同时具有良好的可编程性和可扩展性。
附图说明
10.附图1为本发明任务动态分配异步管理流程图。
具体实施方式
11.实施例:本发明提供一种异构众核架构下的任务动态分配异步管理方法,具体包括以下步骤:s1、运算核心向控制核心发送任务请求;s2、控制核心收到第一次运算核心的任务请求,初始化任务池;s3、控制核心根据收到的任务请求类型,判断任务请求类型是计算任务还是控制代理任务,如果任务请求类型为控制代理任务,例如打印、io访问等,则启动相应代理线程完成请求,否则,执行下一步;s4、控制核心响应运算核心请求,分配任务至运算核心;s5、控制核心继续本地任务,运算核心接收来自控制核心的任务序号,执行对应任务;
s6、运算核心任务执行完成后,向控制核心发送任务完成报告信号;s7、控制核心收到运算核心的任务完成报告信号后,更新任务池,并查找是否存在未分配任务,若存在,则将未分配任务分配给运算核心,若不存在,则执行下一步;s8、运算核心查询是否更新任务,若有,则跳转至s5继续执行,若没有,则该运算核心任务全部执行完毕,退出;s9、控制核心继续执行本地任务,如果存在其他运算核心任务完成报告,返回s4,否则执行下一步;s10、控制核心的本地任务执行完毕后,等待所有任务执行完毕或得到最终结果,通知计算核心退出。
12.s5中所述本地任务包括通过节点间消息通信更新本地应完成的任务池和计算是否已得到最终结果。
13.对上述实施例的进一步解释如下:在异构架构中,通常存在运算核心到控制核心的信号机制,即在控制核心的软件内核中响应运算核心对特定寄存器地址的访问,实现异步通知的功能。本发明基于这一异步通知机制实现,由运算核心主动通知控制核心任务执行状态,运算核心在完成控制核心分配的任务后,通过异步的方式通知控制核心,并获得新的计算任务信息,控制核心在无信号时可自主进行其他任务,在收到运算核心信号后针对信号种类进行处理,控制核心同时需要响应任务申请、完成报告和其他代理请求,在其余空闲时间中控制核心可以进行并行消息通信或者完成部分计算任务,性能好、实时性强,同时不需要额外的轮询操作,可编程性好。
14.在异构众核架构中,控制核心维护任务池,运算核心动态获取任务,是实现节点内负载平衡的有效手段。异构众核架构下的动态任务分配是指,由控制核心维护任务池并分配任务,运算核心获取任务并执行,通过动态分配的方法提高运算核心利用率。
15.为避免控制核心轮询运算核心任务完成状态带来的控制核心占用、响应不及时、编程困难等问题,本发明提出一种基于信号机制的异步管理方法,计算核心通过异步机制通知控制核心任务状态,主要包括控制核心处理计算核心任务请求信号的方法和控制核心分类处理计算核心任务的机制;其中,控制核心的具体流程为:1.收到第一次运算核心的任务请求,初始化任务池;2.判断任务类型,对于控制代理信号,例如运算核心的打印请求、io请求、找到结果退出等开启线程进行处置;3.进入任务管理阶段,响应运算核心请求,分配任务;4.继续节点间消息和计算等控制核心本地任务;5.收到运算核心的任务完成报告信号后,更新任务池,查找是否存在未分配任务,若存在则分配给运算核心;6.继续执行,如果存在其他任务完成报告,返回步骤3,否则向下执行;7.本地计算任务执行完毕,等待所有任务执行完毕或得到最终结果,通知计算核心退出。
16.运算核心执行任务的具体流程为:
1.向控制核心发送任务请求2.接收任务序号,执行对应任务;3.任务执行完成,向控制核报告;4.查询是否更新任务,若有则跳转步骤2继续执行;5.任务全部执行完毕,退出。
17.在本算法实现的过程中需要注意,基于性能考虑,控制核心的内核可能仅支持一条来自运算核心的异步信号通路,而控制核心可能需要响应多种运算核心的异步请求,在这里可以分为两类:1.长期的计算任务集合,通过信号机制进行动态处理;2.短期的一次性代理任务,通过开启线程进行快速处理。
18.本发明中涉及到的信号机制可以是通过软硬件结合实现的其他异步通知方式。
19.采用上述一种异构众核架构下的任务动态分配异步管理方法时,其使得控制核心可自主完成任务,不需要挂死对控制核心进行轮询操作,在收到运算核心信号后针对信号种类进行处理,性能好、实时性强,同时具有良好的可编程性和可扩展性。
20.为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:异构众核:将少量承担管理、通信和运算功能的通用主核核心和大量承担运算功能的精简从核核心集成在一颗完整芯片上的高性能异构中央处理器架构;通用主核核心运行通用的操作系统,主要承担整个芯片的管理和控制功能,也承担一定的运算功能和芯片与外部的通信功能;从核核心起到加速计算的功能。
21.动态任务分配:通过任务管理者维护任务池,根据任务完成情况动态分配任务给任务执行者,以保证负载平衡,加快任务完成进度的方法。
22.任务异步管理模式:任务管理者在执行者执行任务的过程中不进行阻塞等待,而是执行其他通信、运算等任务。
23.上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献