多核任务调度器、多核任务调度方法、装置及相关产品与流程

文档序号:19828022发布日期:2020-02-04 12:05阅读:293来源:国知局
多核任务调度器、多核任务调度方法、装置及相关产品与流程

本申请涉及信息处理技术领域,具体涉及一种多核任务调度器、多核任务调度方法、装置及相关产品。



背景技术:

集成电路规模的急速增长导致现代芯片架构向多核异构的方向发展,即一个芯片上往往集成了多种不同种类的处理器核,如常见的中央处理器(centralprocessorunit,cpu)、图形处理器(graphicprocesserunit,gpu)以及视频编解码处理器(videoprocesserunit,vpu)。如图1所示,这些处理器核通过片上通信总线互相连接,可进行处理器核与处理器核之间的直接通信,也可以通过共享的存储空间进行间接通信,多个处理器核能够通过通信协同进行数据处理完成大规模的计算任务。

多核异构的芯片架构在很大程度上缓解了由晶体管密度增长带来的功耗墙和温度墙问题,但同时也增加了整个芯片的设计复杂度,如何为大规模计算任务提供高效的任务管理机制,使得计算任务能合理分配给各个处理器核成为了多核异构芯片设计的核心问题。

目前主流的芯片设计中大多将任务管理机制的实现放在操作系统(os,operatingsystem)层级,由于操作系统的主要进程运行在cpu上,整个芯片的任务调度严重依赖cpu的执行效率。当cpu自身存在大量计算任务负载时,有限的计算资源只有少量能提供给任务调度进程,使得整个芯片的使用效率急剧降低。



技术实现要素:

本申请实施例提供了一种多核任务调度器、多核任务调度方法、装置及相关产品,根据人工神经网络的计算来确定调度,能够不限于预先设定的调度机制,根据任务类型的不同能够自适应调整调度过程,获得最佳的调度结果。

第一方面,提供一种多核任务调度器,其包括处理器核状态管理器、任务管理器和人工神经网络装置,其中:

所述处理器核状态管理器用于接收处理器核发送的实时状态信息;

所述任务管理器用于接收当前任务的任务信息并缓存所述任务信息;以及

所述人工神经网络装置用于对来自所述处理器核状态管理器的实时状态信息、来自所述任务管理器的任务信息以及人工神经网络装置计算所需的参数进行计算,得出所述当前任务的调度信息。

第二方面,本申请实施例提供了一种芯片,该芯片包括上述第一方面所述的多核任务调度器。

第三方面,本申请实施例提供了一种板卡,该板卡包括上述第二方面所述的芯片。

第四方面,本申请实施例提供了一种电子设备,该电子设备包括上述第三方面所述的板卡。

第五方面,提供一种基于人工神经网络的片上多核任务调度方法,其包括:

接收处理器核发送的实时状态信息;

接收并缓存任务信息;以及

基于所述实时状态信息、所述任务信息以及进行人工神经网络计算所需的参数进行人工神经网络计算,得出当前任务的调度信息。

第六方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第五方面的方法。

第七方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第五方面提供的方法。

第八方面,提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行第五方面提供的方法。

本申请实施例提供了一种多核任务调度器、多核任务调度方法、装置及相关产品,根据人工神经网络的计算来确定调度,能够不限于预先设定的规则和调度机制,且人工神经网络具有实时训练的功能,能够对当前的场景进行训练,适应当前的实时场景,即根据任务类型的不同能够自适应调整调度过程,获得最佳的调度结果。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为一种多核异构芯片的结构示意图。

图2是根据本申请实施例的多核任务调度器的结构示意图。

图3为一个实施例提供的一种板卡结构示意图。

图4是根据本申请实施例的多核任务调度方法的流程图。

图5是本申请实施例提供的一种电子设备的结构图。

具体实施方式

下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。

应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

在现有技术中,有芯片设计者将任务调度器作为一个硬件模块集成在芯片中,以实现高效的实时任务调度。一种多核异构芯片结构如图1所示,使用者通过片外总线向芯片传输程序与数据,并存储在芯片的存储器中,然后向调度器发射计算任务。调度器接收到计算任务信息后进行任务拆分,任务拆分基于用户对任务类型以及任务运行所需处理器核数量的定义,将单个多处理器核计算任务拆分为多个单处理器核计算任务。随后调度器将完成子任务的分发,根据当前的处理器核状态,将子任务分配给空闲的处理器核并将其标记为被占用,待子任务完成后释放相应的处理器核占用状态。

然而,这类模块的设计都基于预先设定的一套固定机制,只能应对特定的任务类型,在处理其他任务类型时性能会有大幅下降。

针对上述现有技术中的技术问题,本申请提出一种新的多核任务调度器。参阅图2,图2是根据本申请实施例的多核任务调度器的结构示意图。如图2所示,该多核任务调度器包括处理器核状态管理器、任务管理器和人工神经网络装置。其中:所述处理器核状态管理器用于接收处理器核发送的实时状态信息;所述任务管理器用于接收任务信息并缓存所述任务信息;以及所述人工神经网络装置基于来自所述处理器核状态管理器的实时状态信息、来自所述任务管理器的任务信息以及人工神经网络装置计算所需的参数进行计算,得出当前任务的调度信息。

具体来说,在图2中,处理器核状态管理器用于接收至少一个处理器核发出的实时状态信息,并将实时状态信息发送给人工神经网络装置。其中,所述处理器核在任意时间只运行一个任务。在一个具体实施例中,该实时状态信息包括处理器核的占用情况、计算任务的规模以及所需的计算时间中的至少一个,其中,在一个具体实施例中,如果处理器核在执行指令,即表示处理器核被占用,而如果处理器核没有在执行指令,即表示处理器核未被占用,我们可以用“0”和“1”来表示处理器核的占用状态,例如,“1”表示占用,而“0”表示未占用。在一个可选实施例中,计算任务的规模可以为所运行指令代码的行数,一般来说,行数越多规模越大,反之则规模越小。在另一个可选实施例中,计算任务的规模可以为计算任务的复杂度,复杂度越高,计算任务的规模越大,反之则规模越小。在又一个可选实施例中,计算任务的规模可以为运算量,运算量越大,计算任务的规模越大,反之则规模越小。在一个可选实施例中,在实时状态信息的数据格式与人工神经网络输入的格式不匹配时,处理器核状态管理器将实时状态信息的数据格式转换为人工神经网络输入的格式。人工神经网络输入的格式可以包含各种数据格式,例如float32等等。例如,人工神经网络的输入格式是float32,而实时状态信息的数据格式是float16,此时需要将实时状态信息的数据格式转换为人工神经网络输入的格式。

如图2所示,任务管理器用于接收当前任务的任务信息并缓存所述任务信息。可选地,所述任务管理器包括任务缓存单元,所述任务缓存信息用于接收当前任务的任务信息并缓存所述任务信息。在一个具体实施例中,任务信息包括计算任务的类型、所需处理器核的数目、计算任务对应程序的起始地址以及可用存储空间的起始地址和范围中的至少一者。其中,计算任务的类型可以由用户划分:例如,可以是以任务的应用类型区分,比如图像处理任务,声音处理任务;也可以是以任务主要运行在何种处理器核上进行区分,比如以cpu为主,gpu为主,或者vpu为主。

在一个可选实施例中,任务管理器还可以包括任务拆分单元,其用于根据任务信息将当前任务拆分为至少一个子任务,得到至少一个子任务信息。这样,人工神经网络装置还可以根据所述实时状态信息、来自所述任务拆分单元的子任务信息以及人工神经网络装置计算所需的参数进行计算,得出当前任务的调度信息。在一个可选实施例中,该计算任务的拆分方式包括将单个多处理器核计算任务划分为多个单处理器核的子任务。例如,用户在定义任务需要什么样的核进行处理时,可以这样定义:完成一个任务的处理需要2个cpu核和2个gpu核,在实际运算的时候运行到不同的处理阶段,例如指定某一个阶段在1个或2个cpu上运行,而另一个阶段在1个或2个gpu上运行,这是用户在编程时就指定的,单个多处理器核计算任务可以认为是用户指定的程序段;将单个多处理器核计算任务划分为多个单处理器核的子任务可以是将在单个核上运行的程序段的起始地址、标识以及任务的描述符等发给相应的单处理器核。

在另一个可选实施例中,任务管理器还可以包括任务仲裁单元,其用于基于任务信息中携带的优先级信息,将优先级最高的任务确定为所述当前任务,以使得任务管理器可优先仲裁优先级高的任务。例如,任务管理器接收a、b和c三个任务,任务b的优先级最高,那么任务管理器优先处理任务b。在另一个可选实施例中,在任务信息的数据格式与人工神经网络输入的格式不匹配时,任务管理器将任务信息的数据格式转换为人工神经网络输入的格式。

在图2中,人工神经网络装置由神经元模块及神经元模块之间的互连线路组成,单个神经元模块对输入信号做一个线性映射计算后传入一个非线性的激活函数,得到的值作为输出传递给下一级神经元模块。在一个具体实施例中,线性映射计算可以包括卷积运算,池化运算等等,非线性的激活函数可以包括relu函数等等。人工神经网络装置将来自处理器核状态管理器的实时状态信息及来自任务管理器的任务信息作为输入,进行计算,计算后得到任务调度信息。

具体来说,人工神经网络装置包括多层神经元模块,多层神经元模块按照预设顺序连接形成有向无环结构,多层神经元模块包括输入层和输出层,其中,每层神经元模块均包括至少一个神经元单元,多层神经元模块中的上一层神经元模块中的神经元单元能够连接至相邻的下一层神经元模块中的神经元单元;所述输入层用于对接收的实时状态信息和任务信息进行处理后,将获得的中间处理结果传送至所述输入层之后的多层神经元模块进行计算,所述输出层得出当前任务的调度信息。

在一个具体实施例中,该任务调度信息包括任务选择信号及相应的目标处理器核标号,根据所述目标处理器核标号,相应的任务被分发到目标处理器核进行处理。在一个具体实施例中,对于任务a、b和c,人工神经网络装置基于输入的任务a、b和c的任务信息,输出任务选择信号,将任务a、b和c分别分配到对应的处理器核,例如,将任务a、b和c分别分配到处理器核1、2和3,那么处理器核1、2和3就分别对任务a、b和c进行处理。在本发明中,人工神经网络包括但不限于长短期记忆网络(longshort-termmemory,lstm)、卷积神经网络(convolutionalneuralnetworks,cnn),等等。

需要注意的是,实时状态信息、任务信息和任务调度信息并不限于上述实施例中举出的方面,根据具体应用和实际需要,本领域技术人员可以想到的实时状态信息、任务信息和任务调度信息所包含的其他方面都属于本申请覆盖的范围。

在图2中,多核任务调度器还包括网络配置器。网络配置器用于获取并存储整个人工神经网络装置中神经元模块的计算参数,在人工神经网络装置进行计算的情况下,网络配置器中存储的参数包括:神经元单元之间连接关系、权值、每个神经元单元所需的参数。

每个神经元模块计算使用的参数来源于网络配置器。整个人工神经网络装置根据网络配置器的配置参数,将来自处理器核状态管理器的实时状态信息及来自任务管理器的任务信息作为输入,进行计算,计算后得到任务调度信息。

在一个可选实施例中,如图2所示,多核任务调度器还可以包括计分板。在图2中,计分板用于保存历史任务的历史调度信息,并能够根据所述历史调度信息确定所述历史任务对应的调度操作的评分结果。其中,历史调度信息包括已作分配的任务编号及其任务信息,以及任务被分配到的目标处理器核标号,根据所述历史调度信息确定所述历史任务对应的调度操作的评分结果包括:从处理器核状态管理器中获取所述历史任务分配后的所述处理器核的实时状态信息;根据所述历史调度信息和所述历史任务分配后的所述处理器核的实时状态信息,确定预设周期内所述处理器核的占用数量;根据所述处理器核的占用数量确定所述评分结果,其中,所述评分结果与所述处理器核的占用数量正相关。

结合任务分配后的处理器核状态对任务调度信息对应的任务调度动作进行评分:以任务调度动作后一段时间内的平均处理器核占用数作为评分指标,根据评分结果通过一定的算法对网络配置器中的所述参数进行更新。具体来说,以任务调度动作后一段时间内(该一段时间可以是人为指定的,例如对应于硬件的可数个周期)的平均处理器核占用数作为评分指标,每个处理器分配的任务越均匀,平均处理器核占用数越高则评分越高,评分是历史调度信息的函数,通过对评分求导,通过一定的算法,例如误差反传算法,对网络配置器中的神经网络配置作更新。具体来说,误差反传算法是对人工神经网络的各个层逐层向前求导的过程,记录人工神经网络每次调度的结果(例如,前述任务调度信息),计分板将该结果记录下来,记录一段时间的结果后,将这一段时间的结果进入评价函数,获得到这段时间调度的评分,表示这段时间调度的效果。可以对该评分进行求导,导数可以通过逐层的求导向前传递,每传到一层,对当层的导数求偏导,对该偏导乘以放缩系数,可以得到神经网络这一层的参数(例如,权值和偏移)的修正的偏移量,在原来的参数的基础上加上该偏移量,可以完成对神经网络配置的更新。

网络配置器根据计分板对神经网络配置作更新,将更新的参数分发到人工神经网络装置的各个神经元模块,人工神经网络装置根据网络配置器的配置的更新的参数以及将来自处理器核状态管理器的实时状态信息和来自任务管理器的任务信息作为输入,进行计算,得到任务调度信息。

需要说明的是,基于人工神经网络的片上多核任务调度器存在两种工作模式:离线模式和在线模式。

在线模式下计分板正常工作,计分板根据所述历史调度信息对所述历史任务的调度操作进行评分,获得所述历史任务的调度操作的评分结果,具体包括:从处理器核状态管理器中获取所述历史任务分配后的所述处理器核的实时状态信息;根据所述历史调度信息和所述历史任务分配后的所述处理器核的实时状态信息,确定预设周期内所述处理器核的占用数量;根据所述处理器核的占用数量确定所述评分结果,其中,所述评分结果与所述处理器核的占用数量正相关。

计分板还用于根据所述评分结果和预设评分阈值计算损失函数;当所述损失函数的值不满足预设条件时,将所述损失函数传送至所述人工神经网络装置的输出层;所述人工神经网络装置的多层神经元模块分别对所述损失函数进行逐层求导,获得参数更新值,并根据所述参数更新值更新所述网络适配器中的参数,并根据更新的后参数重新计算历史调度信息;之后调用所述计分板根据所述历史调度信息对所述历史任务的调度操作进行评分,获得所述历史任务的调度操作的评分结果,直至所述损失函数的值满足预设条件。调度器在完成任务调度动作的一段时间(例如,可数个周期)后根据计分板提供的评分和损失函数对人工神经网络参数进行更新,使人工神经网络装置作出的调度动作能够获得更高的评分。其中,所述预设条件可以是用户可检查网络配置的更新状况,当人工神经网络装置的参数配置稳定时,可停止网络更新并存储相应配置参数,例如,当所有参数变化的平方的平均数在连续几次检查中都小于用户设定的阈值时可以认为网络的参数配置稳定。

离线模式下计分板不工作,调度器进行人工神经网络的前向计算,完成任务调度动作而不通过计分板进行神经网络配置的更新。人工神经网络装置的参数可来源于曾经使用在线模式时通过计分板得到的参数,也可来源于软件模拟得到的参数或更新的参数。

基于上述描述,网络配置器中参数的来源可以来自计分板也可以不来自计分板(例如,来自软件模拟获得的参数)。在在线模式下,网络配置器中参数的来源可以来自计分板,并使用计分板提供的评分信息对所述网络配置器的参数进行更新。在没有计分板的情况下,网络配置器中的参数可以来自软件模拟获得的参数,基于现有硬件结构通过软件模拟,对人工神经网络装置的参数进行更新。

在一个实施例中,本申请还提供了一种芯片,其包括了上述多核任务调度器。其中,所述芯片包括soc(systemonchip)。

在一个实施例中,本申请还提供了一种板卡,其包括了上述芯片。参照图3所示,上述板卡除了包括上述芯片封装结构81以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件82、接口装置83和控制器件84;所述存储器件82与所述芯片封装结构81内的机器学习芯片811通过总线连接,用于存储数据,所述存储器件82可以包括多组存储单元821。每一组所述存储单元821与所述机器学习芯片811通过总线连接。可以理解,每一组所述存储单元821可以是ddrsdram(doubledataratesdram,双倍速率同步动态随机存储器)。

ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述机器学习芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。

所述接口装置83与所述芯片封装结构81内的机器学习芯片811电连接。所述接口装置83用于实现所述机器学习芯片811与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置83可以为标准pcie(peripheralcomponentinterconnectexpress,一种高速串行计算机扩展总线标准)接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述机器学习芯片,实现数据转移。优选的,当采用pcie3.0x16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,所述接口装置83还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口装置能够实现转接功能即可。另外,所述机器学习芯片811的计算结果仍由所述接口装置83传送回外部设备(例如服务器)。

所述控制器件84与所述机器学习芯片811电连接。所述控制器件84用于对所述芯片的状态进行监控。具体的,所述机器学习芯片811与所述控制器件84可以通过spi(serialperipheralinterface,串行外设接口)接口电连接。所述控制器件可以包括单片机(microcontrollerunit,mcu)。如所述机器学习芯片可以包括多个数据处理装置和/或组合处理装置,可以带动多个负载。因此,所述机器学习芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制器件84可以实现对所述机器学习芯片中多个数据处理装置和/或组合处理装置的工作状态的调控。

在一些实施例里,申请了一种电子设备,其包括了上述板卡。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的全部或部分处理过程是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

基于上述调度器,本申请提出一种多核任务调度方法。如图4所示,所述方法包括如下步骤:

步骤s301,接收处理器核发送的实时状态信息。

如图2所述,调度器的处理器核状态管理器用于接收各个处理器核发出的实时状态信息,并将实时状态信息发送给人工神经网络装置。在一个具体实施例中,该实时状态信息包括处理器核的占用情况、计算任务的规模以及所需的计算时间中的至少一个。

步骤s302,接收并缓存任务信息。

如图2所述,调度器的任务管理器可以包括任务缓存单元,其用于接收用户分配的计算任务并缓存相应的任务信息。在一个具体实施例中,任务信息包括计算任务的类型、所需处理器核的数目、计算任务对应程序的起始地址以及可用存储空间的起始地址和范围中的至少一者。

步骤s303,基于所述实时状态信息、所述任务信息以及进行人工神经网络计算所需的参数进行人工神经网络计算,得出当前任务的调度信息。

如图2所述,调度器的人工神经网络装置将来自处理器核状态管理器的实时状态信息及来自任务管理器的任务信息作为输入,进行计算,计算后得到任务调度信息。在一个具体实施例中,该任务调度信息包括任务选择信号及相应的目标处理器核标号,用于选出一个计算任务并分配给目标处理器核进行处理。

在一个可选的实施例中,所述方法还包括:

步骤s304,存储进行人工神经网络计算所需的参数。

如图2所述,调度器的网络配置器用于获取并存储整个人工神经网络装置中神经元的计算用参数。所述人工神经网络计算所需的参数包括:神经元单元之间连接关系、权值、每个神经元单元所需的参数。

步骤s305,保存历史任务的历史调度信息,并根据所述历史调度信息确定所述历史任务对应的调度操作的评分结果。

如图2所述,调度器的计分板用于保存历史任务的历史调度信息,并能够根据所述历史调度信息确定所述历史任务对应的调度操作的评分结果。其中,历史调度信息包括已作分配的任务编号及其任务信息,以及任务被分配到的目标处理器核标号,根据所述历史调度信息确定所述历史任务对应的调度操作的评分结果包括:从处理器核状态管理器中获取所述历史任务分配后的所述处理器核的实时状态信息;根据所述历史调度信息和所述历史任务分配后的所述处理器核的实时状态信息,确定预设周期内所述处理器核的占用数量;根据所述处理器核的占用数量确定所述评分结果,其中,所述评分结果与所述处理器核的占用数量正相关。

如上所述,基于人工神经网络的片上多核任务调度器存在两种工作模式:离线模式和在线模式。

在线模式下计分板正常工作,计分板根据所述历史调度信息对所述历史任务的调度操作进行评分,获得所述历史任务的调度操作的评分结果,具体包括:从处理器核状态管理器中获取所述历史任务分配后的所述处理器核的实时状态信息;根据所述历史调度信息和所述历史任务分配后的所述处理器核的实时状态信息,确定预设周期内所述处理器核的占用数量;根据所述处理器核的占用数量确定所述评分结果,其中,所述评分结果与所述处理器核的占用数量正相关。

计分板还用于根据所述评分结果和预设评分阈值计算损失函数;当所述损失函数的值不满足预设条件时,将所述损失函数传送至所述人工神经网络装置的输出层;所述人工神经网络装置的多层神经元模块分别对所述损失函数进行逐层求导,获得参数更新值,并根据所述参数更新值更新所述网络适配器中的参数,并根据更新的后参数重新计算历史调度信息;之后调用所述计分板根据所述历史调度信息对所述历史任务的调度操作进行评分,获得所述历史任务的调度操作的评分结果,直至所述损失函数的值满足预设条件。

调度器在完成任务调度动作的一段时间(例如,可数个周期)后根据计分板提供的评分利用和所述损失函数对人工神经网络参数进行更新,使人工神经网络装置作出的调度动作能够获得更高的评分。在线模式运行一段时间后,用户可检查网络配置的更新状况,当人工神经网络装置的参数配置稳定时,可停止网络更新并存储相应配置参数,例如,当所有参数变化的平方的平均数在连续几次检查中都小于用户设定的阈值时可以认为网络的参数配置稳定。

离线模式下计分板不工作,调度器进行人工神经网络的前向计算,完成任务调度动作而不通过计分板进行神经网络配置的更新。人工神经网络装置的参数可来源于曾经使用在线模式运行得到的参数,也可来源于软件模拟得到的参数或更新的参数。在另一个可选的实施例中,所述方法还包括:

步骤s306,将所述任务信息划分为多个子任务信息。

如上所述,调度器的任务管理器可以包括任务拆分单元,其用于将计算任务进行拆分。在一个可选实施例中,该计算任务的拆分方式包括将单个多处理器核计算任务划分为多个单处理器核的子任务。

在另一个可选的实施例中,所述方法还包括:

步骤s307,基于所述任务信息中携带的优先级信息,将优先级最高的任务确定为所述当前任务。

如图2所述,调度器的任务管理器可以包括任务仲裁单元,其用于任务信息中附带优先级信息以使得任务管理器可优先仲裁优先级高的任务。例如,任务管理器接收a、b和c三个任务,任务b的优先级最高,那么任务管理器优先处理任务b。

在另一个可选的实施例中,所述方法还包括:

步骤s308,将所述实时状态信息的数据格式转换为所述人工神经网络的输入格式。

如上所述,在实时状态信息的数据格式与人工神经网络输入的格式不匹配时,调度器处理器核状态管理器将实时状态信息的数据格式转换为人工神经网络输入的格式。

在另一个可选的实施例中,所述方法还包括:

步骤s309,将所述任务信息的数据格式转换为所述人工神经网络的输入格式。

如上所述,在任务信息的数据格式与人工神经网络输入的格式不匹配时,调度器的任务管理器将任务信息的数据格式转换为神经网络输入的格式。

根据本申请实施例提供的基于人工神经网络的片上多核任务调度方法,由于基于人工神经网络的计算来确定调度,能够不限于预先设定的调度机制,根据任务类型的不同能够自适应调整调度过程,获得最佳的调度结果。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。

进一步需要说明的是,虽然图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

参阅图5,图5提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如图4所示的方法以及细化方案。

应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。

另外,若无特别说明,在本披露各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器或芯片可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。若无特别说明,所述片上缓存、片外内存、存储器可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器rram(resistiverandomaccessmemory)、动态随机存取存储器dram(dynamicrandomaccessmemory)、静态随机存取存储器sram(staticrandom-accessmemory)、增强动态随机存取存储器edram(enhanceddynamicrandomaccessmemory)、高带宽内存hbm(high-bandwidthmemory)、混合存储立方hmc(hybridmemorycube)等等。

所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本申请实施例还提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如图4所示的方法以及细化方案。

本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如图4所示的方法以及细化方案。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1