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

一种类脑计算机操作系统的神经任务片内路由方法及装置

2022-04-14 00:39:55 来源:中国专利 TAG:


1.本发明涉及类脑计算机操作系统技术领域,尤其是涉及一种类脑计算机操作系统的神经任务片内路由方法及装置。


背景技术:

2.传统的冯诺依曼体系结构的计算机难以满足目前高速发展的人工智能计算性能需求,尤其是面对低功耗高性能计算领域,如边缘计算。因此,脉冲神经网络为寻求更低功耗和更高效计算性能提供了一条可行的路径,但在冯诺依曼体系结构计算机上仿真脉冲神经网络较困难,为了解决这一难题,出现了类脑计算芯片,类脑计算芯片通过对生物大脑结构的模仿来运行脉冲神经网络;相对于现有的计算体系结构,类脑计算是借鉴了生物大脑中信息处理的基本规律,在硬件实现与软件算法等多层面做出了本质变革,从而实现在功耗和计算能力等诸多方面的大幅改进。类脑计算机是由多个类脑计算芯片采用水平扩展的方式构建而成,具有运行超大规模脉冲神经任务能力的新型计算机模型。类脑操作系统为用户提供透明的计算资源管理及神经任务输入类脑计算芯片的能力。神经任务是指神经模型在类脑计算芯片上的运行实体。
3.类脑计算芯片是由m*n的二维网格结构组成,每个网格代表一个核心,每个核心既可存储神经任务的模型数据,同时也提供了路由的功能。片内路由是指为了将数据包从芯片边缘路由到目标核心而选择的通信路径;片内路由包括边缘路由核心和中继路由核心;由于类脑计算芯片的特性,类脑操作系统只能与类脑计算芯片的边缘核心交互,由边缘核心将数据包路由到目标核心,且单次路由的步长有限;如果目标核心距离边缘核心步长超过限制,则需要找到中继路由核心,即边缘路由核心先将数据包路由到中继路由核心,然后再由中继路由核心将数据包路由到目标核心;类脑计算机支持多个神经任务并行,不同的神经任务分配了不同的核心,已经配置了神经任务的核心不能再配置给其他神经任务;对于超大规模神经任务会占用更多核心,如果神经任务的周围核心提前被配置,那么较远的核心面临着路由不可达的情况,就要面临着做任务拆分,从而增加了神经任务整体路由步长,进而影响任务的整体运行时间;因此类脑操作系统为了应对片内路由步长问题需要进行合理的路由选择。现有技术主要是面向冯诺依曼体系结构的计算机,对于类脑计算机上片内路由选择的研究依旧是空白。


技术实现要素:

4.为解决现有技术的不足,实现片内路由步长较短,降低神经任务运行时间的目的,本发明采用如下的技术方案:一种类脑计算机操作系统的神经任务片内路由方法,将类脑计算芯片中的核心构建成二维网格,每个网格代表一个核心,每个核心用于存储神经任务的模型数据和提供中继路由,包括如下步骤:步骤s1:确定目标核心形成的区域r2(x2_min,y2_min,x2_max,y2_max),确定离边
缘路由区域最远的一行核心r3(x2_min,y2_max,x2_max,y2_max);步骤s2:判断目标核心r2是否需要配置中继路由;步骤s3:采用步长最短方法,在边缘路由区域r1内,为目标核心形成的区域r2内的所有目标核心,找到最短的边缘路由核心,搜索完成后跳转至步骤s5;步骤s4:为了利用未被配置的核心作为中继路由,以由远及近的原则配置目标核心,从需要搜索中继路由的目标核心形成的区域r4(x4_min,y4_min,x4_max,y4_max)中,确定起始搜索核心坐标search_core(x_search,y_search)=search_core(x4_min,y4_max);为了配置最少的中继路由且使第一级中继路由转发的目标核心数量达到最大,每次尽量搜索类脑芯片中中继路由核心支持配置的最大目标核心数量max_relay_cores个;对于需要多级中继的核心,通过最短路径方法以及单次路由步长最大方法,找到多级中继核心和边缘路由;直到将需要搜索中继路由的目标核心形成的区域r4内的所有目标核心配置完成;步骤s5:根据类脑芯片数据包封包规则,进行封装打包并配置到芯片中。
5.进一步地,所述的一种类脑计算机操作系统的神经任务片内路由方法,包括如下情形:(1)目标核心形成的区域r2都不需要中继路由:离边缘路由区域最远的一行核心r3到边缘路由区域r1的步长,小于等于类脑芯片中中继路由核心可以路由的最大步长max_step,则通过边缘路由均路由可达,确定目标核心形成的区域r2为不需要搜索中继路由的核心区域r5(x5_min,y5_min,x5_max,y5_max)=r2,进入步骤s3找到所有目标核心的边缘路由;(2)目标核心形成的区域r2均需中继路由:确定需要搜索中继路由的目标核心形成的区域r4(x4_min,y4_min,x4_max,y4_max);跳转至步骤s4找到相应的中继路由核心;(3)部分目标核心需要配置中继路由,部分目标核心不需要配置中继路由:确定需要搜索中继路由的目标核心形成的区域r4(x4_min,y4_min,x4_max,y4_max),确定不需要搜索中继路由的核心区域r5(x5_min,y5_min,x5_max,y5_max);首先跳转至步骤s4为需要搜索中继路由的目标核心形成的区域r4找到相应的中继路由和边缘路由,将确定需要搜索中继路由的目标核心形成的区域r4全部配置完成;然后跳转至步骤s3配置不需要搜索中继路由的核心区域r5。
6.此方法是为了从离输入边缘最远的目标核心开始配置,如果较远的核心需要中继路由,则可以利用较近的核心作为中继路由,配置结束后清除中继路由,则继续配置较近的核心,可以带来的收益:在不拆分模型连接的情况下配置离输入边缘较远的核心。
7.进一步地,所述步骤s3中,最短的边缘路由核心是与目标核心的曼哈顿距离最短的作为边缘路由核心。
8.进一步地,所述步骤s4包括如下步骤:步骤s4.1:从起始搜索核心坐标search_core开始遍历,横向遍历的步长最大为类脑芯片中中继路由核心可以路由的最大步长max_step,且不超过需要搜索中继路由的目标核心形成的区域r4,纵向遍历的步长最大为类脑芯片中中继路由核心可以路由的最大步长max_step,且不超过需要搜索中继路由的目标核心形成的区域,即计算任务的核心边缘r4,记录找到的目标核心数量,当目标核心数量达到类脑芯片中中继路由核心支持配置的最大目标核心数量64时,结束搜索;将找到的目标核心记录到一维数组列表config_cores中,并
更新核心占用情况的二维数组,即表1“类脑资源使用表a”的占用情况config字段为1;将遍历到的空闲核心记录到空闲核心列表“free_cores”中作为配置一级中继路由核心范围;记录横向遍历的列x坐标和纵向遍历的行y坐标;每遍历一行,起始搜索核心坐标的行坐标y_search减1;记录横向遍历的最大步长x_steps;当纵向遍历到需要搜索中继路由的目标核心形成的区域r4外时,即y_search小于y4_min,则结束此次遍历;更新起始搜索核心坐标的行、列坐标:y_search=y4_max,x_search=x_search x_steps;当遍历到的目标核心数量等于类脑芯片中中继路由核心支持配置的最大目标核心数量max_relay_cores时,若此行没有遍历结束,则起始搜索核心坐标的行坐标y_search值不更新,将此行剩余未遍历到的核心加入空闲核心列表“free_cores”中作为中继路由核心选择;当空闲核心列表“free_cores”为空时,将更新后的起始搜索核心坐标的行坐标y_search一行的核心加入空闲核心列表“free_cores”中作为中继路由核心选择;此方案可以保证一定找到一级中继路由核心;上述方式遍历的收益是,尽可能使每次配置的目标核心数量达到最大值max_relay_cores,可节省配置中继路由核心的数量;且一次遍历的步长都可达;步骤s4.2:基于中继路由核心到所有目标核心曼哈顿距离之和最小原则,找到相应的核心作为第一级中继路由核心relay(x,y),将找到的中继路由核心relay(x,y)更新到表3“中继路由字典f”中,中继路由核心relay(x,y)的下一跳核心是此次搜索的所有目标核心“config_cores”;上述方式找到中继路由核心带来的收益:可以使中继路由核心到目标核心的步长最短;步骤s4.3:计算中继路由核心relay(x,y)到边缘路由区域r1的最短步长,当步长小于等于类脑芯片中中继路由核心可以路由的最大步长max_step时,确定中继路由核心relay(x,y)的边缘路由edge(x,y_min);当步长大于类脑芯片中中继路由核心可以路由的最大步长max_step时,则继续搜索多级中继路由核心和边缘路由;步骤s4.4:确定搜索多级中继的区域r6(x6_min,y6_min,x6_max,y6_max),r6(x_min,y_min,x_max,y_search),以中继路由核心relay(x,y)为第一级中继路由,通过最短路径方法以及单次路由步长最大方法,在多级中继的区域r6内找到多级中继核心和边缘路由,将找到的中继路由核心relay(x,y)更新到表3“中继路由字典f”中;步骤s4.5:当搜索结束后,跳到步骤5,配置中继路由字典和目标核心;当配置结束后,根据更新后的起始搜索核心坐标search_core(x_search,y_search),返回步骤s4.1继续搜索和配置其他需要中继的目标核心,直至所有需要中继的目标核心配置完成。
9.进一步地,所述步骤s4.1中,需要搜索中继路由的目标核心形成的区域外,是指起始搜索核心坐标的行坐标小于需要搜索中继路由的目标核心形成的区域的行坐标最小值;更新起始搜索核心坐标的行、列坐标,是将需要搜索中继路由的目标核心形成的区域的行坐标最大值,作为起始搜索核心坐标的行,将起始搜索核心坐标的列坐标与横向遍历的最大步长的和,作为新的起始搜索核心坐标的列坐标。
10.进一步地,所述步骤s4.2中,循环遍历空闲核心列表“free_cores”(x,y),找出到一维数组列表config_cores中,所有目标核心曼哈顿距离之和最小的核心坐标,作为中继
路由核心relay(x,y),目标核心曼哈顿距离之和如下:其中,n表示一维数组列表中待配置核心的数量,x、y表示空闲核心列表中的空闲核心坐标,dest_xi、dest_yi表示一维数组列表中待配置核心的坐标。
11.进一步地,所述步骤s4.4中,通过最短路径方法找到具体路径和边缘路由核心的搜索,包括如下步骤:步骤s4.4.1:初始化一个队列queue,队列每个元素存储当前核心坐标以及前继核心坐标;记录一个同样大小的二维数组标记位isvisited,用于记录搜索时被访问过的核心,对于核心占用情况的二维数组“类脑资源使用表a”中配置的核心位置,将二维数组标记位isvisited初始化为1;步骤s4.4.2:中继路由核心relay(x,y)第一个入队,以中继路由核心的列坐标x与更新后的起始搜索核心坐标的行坐标y_search构成的坐标(x,y_search),作为第二个核心入队,(x,y_search)的前继核心是relay(x,y);步骤s4.4.3:判断队列queue是否非空;若为非空,进入步骤步骤s4.4.4,否则继续判断;步骤s4.4.4:若为非空,则队首节点a出队,循环找到此节点核心的相邻四个方向的核心b,检查核心b是否再搜索范围内,以及是否为未被访问过的核心,若是,则进入步骤步骤s4.4.5,否则返回步骤s4.4.3;步骤s4.4.5:将核心b的前继核心设置为核心a,核心b入队,标记核心b位置的标记位isvisited为1,检查核心b是否为边缘核心,若是,则结束搜索,返回队列queue,否则步骤s4.4.3;步骤s4.4.6:搜索结束后返回的非队列queue的最后一个元素是最短路径的边缘路由核心edge_core;从队列queue的最后一个元素edge_core开始,找到元素里记录的前继核心并记录到路径列表“path_list”中,直到搜索到起点中继路由核心relay(x,y),则路径列表“path_list”就是最短路径经过的所有核心。
12.进一步地,所述步骤s4.4中,单次路由步长最大方法是根据中继步长最大化且路由可达原则,从路径列表“path_list”中找到相应的多级中继,保证在路由可达的情况下,配置最少中继核心,减少因配置中继带来的开销;以中继路由核心relay(x,y)为第一级中继,从路径列表“path_list”中找到二级中继,且二级中继离一级中继的步长最长且不超过类脑芯片中中继路由核心可以路由的最大步长max_step;再继续以二级中继为起点,找到第三级中继,直到中继核心离边缘路由不超过类脑芯片中中继路由核心可以路由的最大步长max_step,将找到的每级中继记录到“中继路由字典f”中。
13.进一步地,所述步骤s3中,将遍历到的目标核心以及找到的边缘路由记录到如表2所示的“片内路由字典e”中;所述步骤s5中,根据类脑芯片数据包封包规则,将“中继路由字典f”和“片内路由字典e”封装打包成芯片可识别的数据包并配置到芯片中。
14.一种类脑计算机操作系统的神经任务片内路由装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用
于所述的类脑计算机操作系统的神经任务片内路由方法。
15.本发明的优势和有益效果在于:本发明通过中继路由和边缘路由的选择策略,解决了现有技术中离输入边缘较远的核心路由不可达的技术问题,同时使片内路由步长较短,避免了片内路由步长过长,导致路由不可达而拆分模型,引起神经任务运行时间长的情况,从而降低神经任务运行时间。
附图说明
16.图1是本发明的实施例中数据包经过边缘路由路由到目标核心的示意图。
17.图2是本发明的实施例中数据资源的情况示意图。
18.图3是本发明实施例中的方法流程图。
19.图4是本发明实施例中最短路径方法找到具体路径和边缘路由核心的搜索流程图。
20.图5是本发明实施例中的装置结构图。
具体实施方式
21.以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
22.类脑操作系统维护一个全局变量max_step,即类脑芯片中中继路由核心可以路由的最大步长;本发明以最大步长15介绍;类脑操作系统维护一个全局变量max_relay_cores,即类脑芯片中中继路由核心支持配置的最大目标核心数量;本发明以64介绍;类脑操作系统维护一个全局变量max_relay_ids,即类脑芯片中中继路由核心支持的最大中继路由级数;本发明以最大中继级数为7介绍;把计算任务的配置数据从用户空间写入到芯片的目标核心中,类脑操作系统只能把数据包输入到芯片的边缘路由,由边缘路由再路由到目标核心;如果边缘路由节点距离目标核心的步长超过max_step,则需要在中间位置找到中继路由核心,由中继路由核心将数据包转发到目标核心;若一个中继路由到达不了,则需要多级中继;如图1所示,数据包需经过边缘路由(1,0)(17)路由到目标核心(7,18)(18),从边缘路由核心(1,0)(17)先横向走6步(20),再纵向走18步(21)到目标核心(7,18)(18),由于纵向走的步长18(21)超过了芯片支持的最大步长max_step,则数据包是不能被送到目标核心(7,18)(18)位置的;因此需要找到一个合适的中继路由核心(3,15)(19),先从边缘路由(1,0)(17)横向走2步(22)、纵向走15步(23)到达中继路由核心(3,15)(19),再由中继路由核心(3,15)(19)横向走4步(24)、纵向走3步(25)到目标核心(7,18)(18);类脑操作系统以核心坐标为下标维护一个二维数组如表1所述,记录核心占用情况和被占用的任务id,“占用情况”字段中未被使用的核心为0,已被使用的核心为1,有脉冲神经任务需要配置的核心为2;需要配置的任务被分配成功后,将占用情况更新为1;对应的资源如图2所示,已经被分配了任务1(1)和任务2(2);表1 类脑资源使用表a核心占用情况config任务id
(0,0)0-1
……ꢀꢀ
(5,2)11(5,3)11
……ꢀꢀ
(15,1)12(15,2)12
……ꢀꢀ
(17,7)2-1
……ꢀꢀ
(23,27)
ꢀꢀ
类脑操作系统维护一个全局变量r(x_min,y_min,x_max,y_max),即计算资源形成的长方形区域,(x_min,y_min)表示左上角坐标,(x_max,y_max)表示右下角坐标;如图2所示,r(0,0,23,27);类脑操作系统维护一个边缘路由区域r1(x1_min,y1_min,x1_max,y1_min);如图2所示的r(0,0,23,0);类脑操作系统接收到一个新的计算任务3(3),已知任务的目标核心坐标、基于片内路由走的步长最短原则搜索片内路由,具体方法如下:如图3所示,一种类脑计算机操作系统的神经任务片内路由方法,将类脑计算芯片中的核心构建成二维网格,每个网格代表一个核心,每个核心用于存储神经任务的模型数据和提供中继路由,包括如下步骤:步骤s1:确定目标核心形成的区域r2(x2_min,y2_min,x2_max,y2_max),确定离边缘路由区域最远的一行核心r3(x2_min,y2_max,x2_max,y2_max)。
23.如图2所示,遍历核心占用情况的二维数组,即“类脑资源使用表a”,确定目标核心形成的区域r2(3,7,22,24),确定离边缘最远的一行核心r3(3,24,22,24)。
24.步骤s2:判断目标核心形成的区域r2是否需要配置中继路由;包括如下情形:(1)目标核心形成的区域r2都不需要中继路由:离边缘路由区域最远的一行核心r3到边缘路由区域r1的步长,小于等于类脑芯片中中继路由核心可以路由的最大步长max_step,则通过边缘路由均路由可达,确定目标核心形成的区域r2为不需要搜索中继路由的核心区域r5(x5_min,y5_min,x5_max,y5_max)=r2,进入步骤s3找到所有目标核心的边缘路由;(2)目标核心形成的区域r2均需中继路由:确定需要搜索中继路由的目标核心形成的区域r4(x4_min,y4_min,x4_max,y4_max);跳转至步骤s4找到相应的中继路由核心;(3)部分目标核心需要配置中继路由,部分目标核心不需要配置中继路由:确定需要搜索中继路由的目标核心形成的区域r4(x4_min,y4_min,x4_max,y4_max),确定不需要搜索中继路由的核心区域r5(x5_min,y5_min,x5_max,y5_max);首先跳转至步骤s4为需要搜索中继路由的目标核心形成的区域r4找到相应的中继路由和边缘路由,将确定需要搜索中继路由的目标核心形成的区域r4全部配置完成;然后跳转至步骤s3配置不需要搜索中继路由的核心区域r5。
25.至此计算任务中的所有目标核心均配置完成,如图2所示,确定r4(3,16,22,24),r5(3,7,22,15)。
26.此方法是为了从离输入边缘最远的目标核心开始配置,如果较远的核心需要中继路由,则可以利用较近的核心作为中继路由,配置结束后清除中继路由,则继续配置较近的核心,可以带来的收益:在不拆分模型连接的情况下配置离输入边缘较远的核心。
27.步骤s3:采用步长最短方法,在边缘路由区域r1内,为目标核心形成的区域r2内的所有目标核心,找到最短的边缘路由核心,将遍历到的目标核心以及找到的边缘路由记录到如表2所示的“片内路由字典e”中,搜索完成后跳转至步骤s5。
28.表2 片内路由字典e所述最短的边缘路由核心,是与目标核心的曼哈顿距离最短的作为边缘路由核心。
29.如图2所示,目标核心(3,7)的边缘路由为(3,0),目标核心(21,9)的边缘路由为(21,0)。
30.步骤s4:为了利用未被配置的核心作为中继路由,以由远及近的原则配置目标核心,从需要搜索中继路由的目标核心形成的区域r4(x4_min,y4_min,x4_max,y4_max)中,确定起始搜索核心坐标search_core(x_search,y_search)=search_core(x4_min,y4_max);为了配置最少的中继路由且使第一级中继路由转发的目标核心数量达到最大,每次尽量搜索类脑芯片中中继路由核心支持配置的最大目标核心数量64个;对于需要多级中继的核心,通过最短路径方法以及单次路由步长最大方法,找到多级中继核心和边缘路由;直到将需要搜索中继路由的目标核心形成的区域r4内的所有目标核心配置完成;中继路由的搜索,包括如下步骤:步骤s4.1:从起始搜索核心坐标search_core开始遍历,横向遍历的步长最大为类脑芯片中中继路由核心可以路由的最大步长max_step,且不超过需要搜索中继路由的目标核心形成的区域r4,纵向遍历的步长最大为类脑芯片中中继路由核心可以路由的最大步长max_step,且不超过需要搜索中继路由的目标核心形成的区域,即计算任务的核心边缘r4,
记录找到的目标核心数量,当目标核心数量达到类脑芯片中中继路由核心支持配置的最大目标核心数量64时,结束搜索;将找到的目标核心记录到一维数组列表config_cores中,并更新核心占用情况的二维数组,即表1“类脑资源使用表a”的占用情况config字段为1;将遍历到的空闲核心记录到空闲核心列表“free_cores”中作为配置一级中继路由核心范围;记录横向遍历的列x坐标和纵向遍历的行y坐标;每遍历一行,起始搜索核心坐标的行坐标y_search减1;记录横向遍历的最大步长x_steps;当纵向遍历到需要搜索中继路由的目标核心形成的区域r4外时,即y_search小于y4_min,则结束此次遍历;更新起始搜索核心坐标的行、列坐标:y_search=y4_max,x_search=x_search x_steps;当遍历到的目标核心数量等于类脑芯片中中继路由核心支持配置的最大目标核心数量64时,若此行没有遍历结束,则起始搜索核心坐标的行坐标y_search值不更新,将此行剩余未遍历到的核心加入空闲核心列表“free_cores”中作为中继路由核心选择;当空闲核心列表“free_cores”为空时,将更新后的起始搜索核心坐标的行坐标y_search一行的核心加入空闲核心列表“free_cores”中作为中继路由核心选择;此方案可以保证一定找到一级中继路由核心。
31.上述方式遍历的收益是,尽可能使每次配置的目标核心数量达到最大值64,可节省配置中继路由核心的数量;且一次遍历的步长都可达。
32.如图2所示,从search_core(3,24)开始遍历,坐标(16,20)是遍历到的第64个目标核心,遍历结束后更新x_search=3,y_search=20,遍历到的空闲核心free_cores={(3,23)(4,23)(6,23)(9,23)(3,22)(5,22)(7,21)(8,21)(10,21)(5,20)(17,20)}。
33.步骤s4.2:基于中继路由核心到所有目标核心曼哈顿距离之和最小原则,找到相应的核心作为第一级中继路由核心relay(x,y),将找到的中继路由核心relay(x,y)更新到表3“中继路由字典f”中,中继路由核心relay(x,y)的下一跳核心是此次搜索的所有目标核心“config_cores”。
34.表3 中继路由字典f
循环遍历空闲核心列表“free_cores”(x,y)找出到一维数组列表config_cores中所有目标核心曼哈顿距离之和:最小的核心坐标,作为中继路由核心relay(x,y),其中n表示待配置核心“config_cores”的数量,x和y表示搜索到的空闲核心“free_cores”列表中某一个核心core(free_cores[y])的x坐标和y坐标,dest_xi和dest_yi表示config_cores[i]的x坐标和y坐标。
[0035]
上述方式找到中继路由核心带来的收益:可以使中继路由核心到目标核心的步长最短;如图2所示,在free_cores列表中搜索到的中继路由核心relay(10,21),步长总和最小为326;步骤s4.3:计算中继路由核心relay(x,y)到边缘路由区域r1的最短步长,当步长小于等于类脑芯片中中继路由核心可以路由的最大步长max_step时,确定中继路由核心relay(x,y)的边缘路由edge(x,y_min);当步长大于类脑芯片中中继路由核心可以路由的最大步长max_step时,则继续搜索多级中继路由核心和边缘路由;如图2所示,一级中继路由核心relay(10,21)距离边缘路由r1的最短步长是21,即核心(10,21)到核心(10,0)的步长,超过了max_step,需要继续找到合适的中继路由核心;步骤s4.4:确定搜索多级中继的区域r6(x6_min,y6_min,x6_max,y6_max),r6(x_min,y_min,x_max,y_search),以中继路由核心relay(x,y)为第一级中继路由,通过最短路径方法以及单次路由步长最大方法,在多级中继的区域r6内找到多级中继核心和边缘路由。
[0036]
所述最短路径方法找到具体路径和边缘路由核心,搜索步骤如图4所示,包括如下步骤:步骤s4.4.1:初始化一个队列queue,队列每个元素存储当前核心坐标以及前继核心坐标;记录一个同样大小的二维数组标记位isvisited,用于记录搜索时被访问过的核心,对于核心占用情况的二维数组“类脑资源使用表a”中配置的核心位置,将二维数组标记位isvisited初始化为1;步骤s4.4.2:中继路由核心relay(x,y)第一个入队,以中继路由核心的列坐标x与更新后的起始搜索核心坐标的行坐标y_search构成的坐标(x,y_search),作为第二个核心入队,(x,y_search)的前继核心是relay(x,y);步骤s4.4.3:判断队列queue是否非空;若为非空,进入步骤步骤s4.4.4,否则继续判断;步骤s4.4.4:若为非空,则队首节点a出队,循环找到此节点核心的相邻四个方向的核心b,检查核心b是否再搜索范围内,以及是否为未被访问过的核心,若是,则进入步骤步骤s4.4.5,否则返回步骤s4.4.3;步骤s4.4.5:将核心b的前继核心设置为核心a,核心b入队,标记核心b位置的标记位isvisited为1,检查核心b是否为边缘核心,若是,则结束搜索,返回队列queue,否则步骤s4.4.3;步骤s4.4.6:搜索结束后返回的非队列queue的最后一个元素是最短路径的边缘路由核心edge_core;从队列queue的最后一个元素edge_core开始,找到元素里记录的前继核心并记录到路径列表“path_list”中,直到搜索到起点中继路由核心relay(x,y),则路径
列表“path_list”就是最短路径经过的所有核心。
[0037]
所述单次路由步长最大方法,是根据中继步长最大化且路由可达原则,从路径列表“path_list”中找到相应的多级中继,保证在路由可达的情况下,配置最少中继核心,减少因配置中继带来的开销;以中继路由核心relay(x,y)为第一级中继,从路径列表“path_list”中找到二级中继,且二级中继离一级中继的步长最长且不超过类脑芯片中中继路由核心可以路由的最大步长max_step;再继续以二级中继为起点,找到第三级中继,直到中继核心离边缘路由不超过类脑芯片中中继路由核心可以路由的最大步长max_step,以此类推,将找到的每级中继记录到“中继路由字典f”中。
[0038]
如图2所述,找到的最短路径的path_list={(10,21) (10,20) (10,19) (11,19) (11,18) (11,17) (11,16) (11,15) (11,14) (11,13) (11,12) (11,11) (11,10) (11,9) (11,8) (11,7) (11,6) (11,5) (11,4) (11,3) (11,2) (11,1) (11,0)},其中,(10,21)为第一级中继核心,核心(11,0)为边缘路由;根据中继步长最大化原则,离第一级中继(10,21)步长可达的最远核心是(11,6),因为(11,5)距离(10,21)的步长为16,(11,6)距离(10,21)的步长为15,因此选择(11,6)作为第二级中继;第二级中继(11,6)到边缘路由核心(11,0)的步长为6,小于max_step,因此多级中继核心只有一级中继和二级中继。
[0039]
步骤s4.5:当搜索结束后,跳到步骤5,配置中继路由字典和目标核心;当配置结束后,根据更新后的起始搜索核心坐标search_core(x_search,y_search),返回步骤s4.1继续搜索和配置其他需要中继的目标核心,直至所有需要中继的目标核心配置完成。
[0040]
步骤s5:根据类脑芯片数据包封包规则,进行封装打包并配置到芯片中。
[0041]
根据类脑芯片数据包封包规则,将“中继路由字典f”和“片内路由字典e”封装打包成芯片可识别的数据包并配置到芯片中。
[0042]
与前述类脑计算机操作系统的神经任务片内路由方法的实施例相对应,本发明还提供了类脑计算机操作系统的神经任务片内路由装置的实施例。
[0043]
参见图5,本发明实施例提供的一种类脑计算机操作系统的神经任务片内路由装置,包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的类脑计算机操作系统的神经任务片内路由方法。
[0044]
本发明类脑计算机操作系统的神经任务片内路由装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本发明类脑计算机操作系统的神经任务片内路由装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
[0045]
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0046]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实
施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0047]
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的类脑计算机操作系统的神经任务片内路由方法。
[0048]
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(smart media card,smc)、sd卡、闪存卡(flash card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
[0049]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。
再多了解一些

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

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

相关文献