一种类脑计算机操作系统的任务迁移方法

文档序号:1963588 发布日期:2021-12-14 浏览:22次 >En<

阅读说明:本技术 一种类脑计算机操作系统的任务迁移方法 (Task migration method of brain-like computer operating system ) 是由 吕攀 黄金戈 康敏 李红 杨国青 邓水光 潘纲 于 2021-11-16 设计创作,主要内容包括:为了解决类脑计算机的芯片故障、局部负载过重和资源碎片化问题,本发明提出了一种类脑计算机操作系统的任务迁移方法,通过在计算节点间、计算节点内和芯片内进行任务迁移,以实现对运行中的任务进行合理的分配和调度。(In order to solve the problems of chip failure, excessive local load and resource fragmentation of the computer-like computer, the invention provides a task migration method of an operating system of the computer-like computer, which realizes reasonable distribution and scheduling of running tasks by performing task migration among computing nodes, in the computing nodes and in a chip.)

一种类脑计算机操作系统的任务迁移方法

技术领域

本发明属于类脑计算机操作系统技术领域,具体涉及一种类脑计算机操作系统的任务迁移方法。

背景技术

传统的冯诺依曼体系结构的计算机难以满足高速增长的人工智能算法计算性能需求,特别在面向边缘计算等低功耗高性能计算领域。因此,脉冲神经网络为寻求更高效的计算性能和更低的功耗提供了一条可行的路径,但是在传统架构的计算机上仿真脉冲神经网络的计算代价较大。为了加速脉冲神经网络的运行,通过对生物大脑结构的模仿,出现了面向脉冲神经网络运行的定制化类脑计算芯片。

类脑计算是指借鉴生物大脑中进行信息处理的基本规律,在硬件实现与软件算法等多个层面,对于现有的计算体系结构做出本质的变革,从而实现在计算能耗、计算能力与计算效率等诸多方面的大幅改进。类脑计算机是由多个类脑计算芯片采用水平扩展的方式构建而成,通过模拟大脑神经网络连接方式,具有运行超大规模脉冲神经网络能力的新型计算机模型。类脑操作系统为用户提供透明的类脑计算机计算资源管理和任务调度的能力。类脑计算机支持多个计算任务并行运行,因此也面临着计算资源碎片化、负载不均匀以及部分硬件故障等。但目前对于类脑计算机上实现计算任务迁移的研究还是空白,现有任务迁移方法主要面向传统冯诺依曼体系结构的计算机。

如公开号为CN106502779A的中国专利提出一种基于NoC多核同构系统的负载判断方法的任务迁移方法,它涉及一种基于NoC多核同构系统的负载判断方法的任务迁移方法。解决在NoC多核同构系统中任务迁移过程中任务迁移颠簸、系统运行时间开销大和迁移通信距离开销大的问题。该发明根据基于NoC多核同构系统的负载判断方法获取重载节点列表、轻载节点列表;对节点列表中节点个数分析和获得权重矩阵;计算重载节点列表中每个节点的n步长区域,满足终止条件,得到候选轻载节点矩阵和步长矩阵;获取加权后的步长矩阵;计算得到迁移通信距离最小化的配对组合;进行任务迁移。

公开号为CN105354084A的中国专利提出了一种基于带宽调度的CPU任务迁移方法及系统,该方法包括:从计算机的所有CPU中选取N个CPU;按照预设的迁移周期,定期对上述N个CPU进行一次整体的CPU任务迁移。本申请是按照排序后的对应位置,将N个排序后的CPU任务一对一地迁移至N个排序后的CPU,实现了将较忙的CPU任务迁移至较闲的CPU上,以及将较闲的CPU任务迁移至较忙的CPU上的过程,从而保证了对操作系统调度过程的整体优化,并且,本申请是按照预设的迁移周期,定期进行整体的CPU任务迁移,从而避免了频繁切换CPU任务的现象,也即降低了CPU任务切换的频率,减少了系统开销。

根据以上所调研的专利显示,目前现有的任务迁移方法主要是在多CPU同构系统上的设计和实现。但是类脑操作系统为了应对局部负载过重、资源碎片化管理及应对类脑芯片的突发硬件问题也需要对运行中的任务进行合理的分配和调度,需要相应的任务迁移算法。

发明内容

鉴于上述,本发明提出了一种类脑计算机操作系统的任务迁移方法,任务迁移主要分为计算节点间、类脑芯片间以及芯片内的任务迁移等三种。本发明通过不同的迁移策略解决类脑计算机的芯片故障、局部负载过重和资源碎片化的问题。

本发明第一目的在于提出一种类脑计算机操作系统的任务迁移方法,其采取以下至少一种方法进行任务迁移:

1)计算节点间迁移

1.1)计算节点提出迁移任务请求,主控节点接收到迁移任务请求后,查询任务迁移表获取迁移任务所需要的神经元数量,从计算节点排序表中选择一个合适的计算节点;

1.2)在该计算节点内,根据类脑芯片排序表选择合适的类脑芯片;

2)计算节点内迁移

2.1)计算节点提出迁移迁移任务请求,主控节点接收到迁移任务请求后,查询任务迁移表获取迁移任务所需要的神经元数量,通知当前计算节点在节点内做任务迁移;

2.2)当前计算节点根据任务占有的神经元数量和类脑芯片排序表选择合适的类脑芯片;如果当前计算节点内没有合适的类脑芯片,则跳到步骤2.3);

2.3)主控节点从计算节点排序表中选择新的计算节点,再回到步骤2.2),直到选择到合适的类脑芯片。

3)芯片内迁移

计算节点对计算节点内的类脑芯片片内进行神经元部署检查,检查相邻任务之间是否有空闲的神经元,如有空闲的神经元,将后一个任务向前迁移,使相邻任务之间没有空闲的神经元。

作为优选,主控节点初始化一个任务迁移阈值,主控节点做出迁移决策之前执行如下判断流程:

主控节点根据迁移任务请求查询任务迁移表,判断该迁移任务迁移次数是否小于任务迁移阈值:

如果迁移任务的迁移次数小于阈值,将迁移次数加1,从迁移任务双向链表表尾往表头方向开始查找,查找第一个优先级高于或等于该迁移任务的一个等待任务,将迁移任务插入到等待任务之后;

如果迁移任务的迁移次数大于或等于阈值,将迁移次数加1,优先级降低一级,并从迁移任务双向链表表尾往表头方向开始查找,查找第一个优先级高于或等于该迁移任务的一个等待任务,将迁移任务插入到等待任务之后。

作为优选,还包括采用如下步骤:迁移任务双向链表非空时,主控节点从链表头取迁移任务ID号,查询任务迁移表获取该任务信息后再做出迁移决策。

作为优选,每次完成计算节点间或计算节点内的任务迁移,更新一次计算节点排序表或类脑芯片排序表。

作为优选,计算节点排序表按以下策略维护:空闲类脑芯片越多的计算节点,排序越靠前;空闲类脑芯片一样多时,空闲神经元数量越多的计算节点排序越靠前。

作为优选,类脑芯片排序表按以下策略维护:空闲神经元数量越多的类脑芯片,排序越靠前。

作为优选,所述任务迁移表记录着已完成的迁移次数及优先级,主控节点维护一个任务迁移阈值;所述迁移次数及优先级按如下方法记录:当任务的迁移次数小于任务迁移阈值时,所述任务的优先级不变;当任务的迁移次数大于或等于任务迁移阈值时且还需要迁移时,所述任务的优先级下降一级,且后面每多一次迁移,该任务迁移的优先级都下降一级;任务每迁移一次,任务迁移表中的迁移次数增加一次。

作为优选,计算节点按如下方法进行选择:根据计算节点排序表,按照倒序选择第一个可以容纳迁移任务的计算节点。

作为优选,计算节点按照如下方法选择:主控节点初始化任务所需的神经元数量的最大界限值和任务所需的神经元数量的最小界限值;当所需神经元数量超过最大界限值,计算节点根据负载由轻到重排序,按一定规则从排前面的计算节点中进行选择;当所需神经元数量小于最小界限值,计算节点根据负载由轻到重排序,按一定规则从排末尾的计算节点中进行选择;当所需神经元数量在最大界限和最小界限之间的,计算节点根据负载由轻到重排序,按一定规则从排中间的计算节点中选择;最后,从上述待选择的计算节点中按照倒序选择第一个可以容纳迁移任务的计算节点。

作为优选,类脑芯片按如下方法进行选择:根据类脑芯片排序表,选择可以容纳迁移任务的、且空闲神经元数量最少的类脑芯片。本发明的有益效果如下:

本发明提出的任务迁移方法解决了类脑计算机操作系统处理任务时遇到的芯片故障、局部负载过重或资源碎片化问题。

通过计算节点间的迁移解决单个计算节点负载过重问题,以此优化任务在各个计算节点的分布;计算节点内类脑芯片间的迁移可以及时应对芯片故障问题,可以快速重新运行任务。片内迁移优化多个任务在芯片内的部署,使芯片内的神经元得到充分利用。

进一步的,本发明还可以通过设置迁移次数阈值和优先级限制频繁迁移的任务,以此提高系统运行的效率。

进一步的,本发明还可以设定一个规则来选择迁移任务的计算节点和类脑芯片,提高任务迁移效率。

附图说明

图1为本发明实施例类脑计算机架构总体设计图。

图2为本发明实施例任务迁移方法流程图。

图3为本发明实施例任务迁移前判断流程图。

图4为本发明实施例类脑芯片片内任务部署示意图。

具体实施方式

为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。

图1所示为本发明实施例类脑计算机架构总体设计图,主控节点Master维护全局的任务信息。

主控节点Master根据各计算节点Slave的当前负载状态,按以下策略着维护计算节点排序表:计算节点上空闲类脑芯片越多,排序越靠前;空闲类脑芯片一样多时,空闲神经元数量越多的排序越靠前,实时维护计算节点排序表。Slave是运行任务的计算节点。

每个计算节点Slave根据类脑芯片的空闲神经元数量,维护着节点内类脑芯片排序表:类脑芯片空闲神经元越多的排序靠前,实时维护类脑芯片排序表。

主控节点Master维护一张任务迁移表,记录记录任务当前所处的计算节点和类脑芯片位置,并记录任务所占有的神经元数量NeuronsCount、已完成的迁移次数以及优先级,如表1。

表1任务迁移表

任务ID 计算节点序号 类脑芯片ID 占有的神经元数量 迁移次数 优先级
1 3 2 50 2 1
…… …… …… …… …… ……

主控节点Master维护一个迁移任务双向链表,链表存储要迁移的任务ID,链表非空时,Master从链表头取任务ID,查询任务迁移表获取该任务信息后做出迁移决策。有新的迁移任务请求到来时根据优先级插入到链表中。

主控节点Master需要初始化计算节点排序表,在初始阶段没有运行任务的时候,按照计算节点Slave的节点序号排序,有任务部署时就开始更新。每个计算节点Slave需要初始化类脑芯片的排序表,在初始阶段没有运行任务的时候,按照类脑芯片的序号排序,有任务部署时就开始更新。

主控节点Master维护一个全局变量即任务迁移阈值MigrationMaxValue,以防止一个任务迁移的次数过多导致整个系统的运行效率偏低。每个任务的参数MigrationCount代表累计迁移次数,在MigrationCount小于MigrationMaxValue时,迁移的任务优先级不变,当MigrationCount大于或等于MigrationMaxValue情况下还需要迁移时,迁移的任务优先级下降一级,且后面每多一次迁移,该任务迁移的优先级都下降一级。

以下是本发明一种实施方式的任务迁移总体流程:

步骤1:首先,由计算节点Slave向主控节点Master报告当前任务需要迁移,且通知Master当前任务的问题,主控节点Master接收计算节点Slave的任务迁移请求,确认要迁移的原因是负载过重还是因芯片故障;

步骤2:迁移任务双向链表非空时,主控节点从链表头取迁移任务ID号,查询任务迁移表获取该任务信息后再做出迁移决策。

如图3所示,主控节点Master采用以下方法之至少一种进行任务迁移:

1.计算节点间迁移

当前计算节点由于负载过重问题需要做任务迁移时,主控节点Master可以优先选择计算节点间的迁移,即Master选择新的计算节点Slave,再由新的计算节点Slave选择合适的类脑芯片进行迁移。这种迁移方式叫计算节点间转移。该种任务迁移方式的具体流程是:

1.1主控节点查询任务迁移表获取迁移任务所需要的神经元数量,从计算节点排序表中选择一个合适的计算节点;

1.2确定计算节点后,在该计算节点内部,根据类脑芯片排序表选择合适的类脑芯片。

2.计算节点内迁移

计算节点因为运行任务的类脑芯片故障,主控节点Master可以优先选择任务当前所在的计算节点Slave,再选择合适的类脑芯片进行迁移;如果当前的计算节点Slave没有合适的类脑芯片进行迁移,再由Master从计算节点排序表里选择新的计算节点迁移。该任务迁移为计算节点内的迁移。该种任务迁移方式的具体流程如下:

2.1主控节点查询任务迁移表获取迁移任务所需要的神经元数量,并通知当前计算节点在节点内做任务迁移;

2.2当前计算节点根据任务占有的神经元数量和类脑芯片排序表选择合适的类脑芯片;如果当前计算节点内没有合适的类脑芯片,则跳到步骤2.3);

2.3主控节点从计算节点排序表中选择新的计算节点,再回到步骤2.2),直到选择到合适的类脑芯片。

可以理解的是,在本实施例中,主控节点Master在做出迁移决策前,还可以执行如下操作:根据任务ID查询任务迁移表中对应的任务,把该任务ID存储到迁移任务的双向链表中。

具体操作流程如下:

本实施例中,主控节点初始化以下参数:任务迁移计数阈值MigrationMaxValue。

首先,主控节点根据任务ID查询任务迁移表判断已经迁移的次数MigrationCount是否小于任务迁移阈值MigrationMaxValue;

如果大于或等于阈值将任务优先级降低一级,小于阈值时不需要降低优先级,但不管是大于或等于阈值,还是小于阈值,都需要将任务迁移表中的迁移次数加1,从迁移任务双向链表的表尾往表头方向查找第一个优先级高于或等于该迁移任务的一个等待任务A,插入到任务A之后。判断流程如图2所示。

以下实施例是本发明另一种任务迁移实施方式,该种任务迁移方式是芯片内任务迁移。

在类脑芯片内部,计算节点周期性地检查每个芯片资源碎片化程度,对神经元部署进行检查,检查在芯片上部署的相邻两个任务之间是否有空闲的神经元,如有空闲的神经元,将后一个任务片内重新迁移,使得任务与任务之间没有空闲的神经元,整体变得紧凑。如图4所示,在芯片内部部署了任务1和任务2,两个任务之间有三个空闲神经元A、B、C,这种情况就需要调整,将任务2向前迁移,任务2迁移到空闲神经元A的位置开始部署。

可以理解的是,在前述计算节点间的任务迁移或计算节点内的任务迁移完成后,也可以对芯片资源碎片化进行整理,在芯片内进行任务迁移。

上述在计算节点间迁移时选择合适的计算节点和在计算节点内迁移选择合适的类脑芯片,可以有不同选择方法。一种选择计算节点的选择方法可以是:主控节点根据计算节点排序表,按照倒序选择第一个可以容纳迁移任务的计算节点。一种选择类脑芯片的选择方法可以是:根据类脑芯片排序表,选择可以容纳迁移任务的、且空闲神经元数量最少的类脑芯片。如图2所示,是计算节点选择和类脑芯片选择的具体实例,具体说明如下:

1)计算节点间进行任务迁移时计算节点的选择

本实施例中,主控节点初始化以下两个参数:任务所需要的神经元数量的最大界限值MaxMargin和最小界限值MinMargin。

当要迁移的任务是因为计算节点Slave的负载过重问题时,主控节点Master查询任务迁移表获取该任务所需要的神经元数量。若当前主控节点Master维护的计算节点排序表里Slave排序是(4,2,1,5,6,3),如果所需神经元数量是小于MinMargin,从计算节点排序表中排在末尾1/3的计算节点中选择,倒序选择第一个可以容纳任务的计算节点Slave,即在(6,3)内从3号节点往6号节点方向查找第一个可以容纳任务的计算节点Slave;如果所需神经元数量在[MinMargin,MaxMargin]范围内,选择计算节点排序表中排在中间1/3的节点,同样的方式从中选择最适应的计算节点Slave,即在(1,5)内从5号节点往1号节点方向查找第一个可以容纳任务的计算节点Slave;如果所需神经元数量大于MaxMargin,从计算节点排序表中排在前1/3的节点中选择,倒序选择其中第一个可以容纳任务的计算节点Slave,即在(4,2)内从2号节点往4号节点方向查找第一个可以容纳任务的计算节点Slave。

若当前主控节点Master维护的计算节点排序表里Slave排序是(4,2,1,5,6,3,7),则(4,2)、(1,5)属于排序表里前1/3和中间1/3,(6,3,7)属于排序表后1/3。

若当前主控节点Master维护的计算节点排序表里Slave排序是(4,2,1,5,6,3,7,8),则(4,2)属于排序表前1/3,(1,5,6)、(3,7,8)属于排序表中间1/3和后1/3。

如上所述确定目标计算节点后,在计算节点内部,根据类脑芯片排序表的倒序选择第一个可以容纳任务的类脑芯片。如当前类脑芯片排序是(2,4,5,6,3,7,1),从表尾1号芯片开始往表头方向查找,如果1号芯片的空闲神经元数量不能容纳要迁移的任务,就查看7号芯片能否容纳迁移任务,7号如果可以容纳就把任务部署在7号芯片,如果还是不可以就继续往前查找,直到找到能容纳迁移任务的芯片为止。

以上实施例,通过初始化任务所需要的神经元数量的最大界限值MaxMargin和最小界限值MinMargin,并根据所需神经元数量在大于最大界限值MaxMargin、小于最小界限值MinMargin以及[MinMargin,MaxMargin]三种情形之一时,再分别从计算节点排序表中的排在最前面的计算节点、排在最后面的计算节点以及排在中间的计算节点三个范围中,按倒序法查找选择第一个可以容纳任务的计算节点。采用本办法来选择计算节点,可有利于类脑计算机的负载均衡。

2)计算节点内进行任务迁移时类脑芯片的选择

当要迁移的任务是因为类脑芯片硬件问题,主控节点Master通知当前计算节点Slave在节点内做任务迁移,即片间迁移。Slave根据任务占有的神经元数量NeuronsCount选择合适的类脑芯片,选择方法和前述迁移任务是因为计算节点Slave的负载过重问题引起时在计算节点内选择合适类脑芯片的步骤一样。如果这时计算节点内没有可以容纳任务的类脑芯片,主控节点Master再从计算节点排序表中选择新的计算节点,从该新的计算节点内选择合适的类脑芯片。

前述类脑芯片选择时,本实施例提出的一个选择机制是:按照类脑芯片排序表的倒序查找,选择第一个空闲神经元数量可以容纳迁移任务的类脑芯片。

每次完成计算节点间的任务迁移,需要更新一次计算节点排序表,计算节点内空闲类脑芯片越多,排序越靠前。每次完成类脑芯片间的任务迁移,需要更新一次类脑芯片排序表,类脑芯片空闲神经元越多,排序越靠前。

迁移任务请求迁移任务请求迁移任务请求迁移任务请求迁移任务请求迁移任务请求

上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:对象处理方法、装置、计算机设备、存储介质及产品

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!