一种面向可重构计算阵列的算子映射系统及方法与流程

文档序号:13661277阅读:171来源:国知局

本发明涉及到可重构计算阵列的计算节点映射技术领域,特别是一种利用两种编码特征的节点映射系统及方法。



背景技术:

可重构技术解决了速度和灵活两难的问题,近几年来,越来越被更多的技术机构所青睐,但是一直以来,由于可重构芯片的形式多样化和节点映射问题的复杂性,针对可重构计算阵列的计算节点映射技术都没有得到长足的发展。在以往的解决方案中,主要分为两类解决方式,一类利用启发式算法,在长时间的运算后,可以得出较为满意的解,但是消耗时间很长,并且结果并不稳定;另一类利用贪心法则,大大降低了映射时间,但却无法保证映射效果。



技术实现要素:

针对可重构计算阵列的节点映射问题,本发明的目的是提供一种面向可重构计算阵列的算子映射系统及方法,以解决计算流图的优化以及计算节点的映射的问题。

为实现上述目的,本发明采用的技术方案为:

一种面向可重构计算阵列的算子映射系统,包括计算流图优化模块、节点层次排序模块、节点编码模块、节点编码解释与评价模块、节点编码初始化模块、节点编码优化模块,其中:

所述计算流图优化模块用于对原始计算流图进行节点的组合优化;

所述节点层次排序模块用于根据经过计算流图优化模块优化后的计算流图对节点进行分层性排序;

所述节点编码初始化模块用于调用节点编码模块对经过节点层次排序模块分层性排序后的节点进行编码;

所述节点编码模块用于对经过节点层次排序模块分层性排序后的节点进行编码,所有节点按照顺序排列的编码组成一条编码组;

所述节点编码解释与评价模块用于输入一条编码组,输出该编码组对应的映射结果,该映射结果包含模块对之进行的优化调整;

所述节点编码优化模块用于对节点编码模块获得的节点的编码组进行优化,并记录历史最有价值的编码组作为最终的映射编码组。

所述计算流图优化模块的输入为以单一运算为节点的原始计算流图,输出为以复杂运算为节点的计算流图,单一运算是指两个或一个操作数一个操作符的四则运算、逻辑运算、移位运算,复杂运算是指阵列算子能够实现的多操作数多操作符运算或者单操作数单操作符运算。

所述节点层次排序模块在排序前对节点进行分层,分层按照输出节点为最高层,节点的输入节点的层数等于节点层数减1,如果某个节点同时是多个不同层次节点的输入节点,则按照层次最低的节点计算该输入节点的层次数;直到所有节点的层次数被确定,按照层次从低到高对节点进行排序,保证同层次的节点顺序无所谓但固定,不同层次的节点顺序为高层次节点排在低层次节点之后。

所述节点编码模块所得到的编码分为两类编码,一类编码代表节点映射在阵列中的绝对行数,直接用来进行映射,另一类编码代表节点映射在阵列中的行数与该节点的输入节点中映射行数最大的节点的相对距离,编码组按照所述节点层次排序模块的排序结果对节点的编码进行组合。

所述节点编码组初始化模块对节点编码模块获得的每个节点的编码进行初始化,将每个节点的绝对行数编码等于它的排序的索引;将初始化绝对行数编码组转换为相对行数编码组,作为初始化的相对行数编码组。

所述节点编码解释与评价模块的输入为编码组,输出为以该编码组表示的节点行数信息进行阵列映射的结果,该结果同时包含了模块对之做出的优化调整;

所述优化调整包括:1)如果映射之后,某些计算节点的输入节点和该节点相差不止一行,则在输入节点与该节点之间的每一行添加链接节点,如果添加链接节点的过程中超出了阵列每一行的算子限制,则将输入节点的输出变为输出到存储器,计算节点的输入变为从存储器输入;2)如果节点的多个输入不同步,在硬件限制条件内在输入节点和该节点之间添加缓存节点,使得节点的输入之间的周期间隔尽量小;

节点编码解释与评价模块对编码组的有效性进行判断,如果映射结果在阵列硬件限制范围之内,则判定为有效,否则无效,在判断硬件限制的时候,不考虑行数的限制;同时对编码组进行价值评估,映射结果的运算周期和启动周期越小,则编码组价值越高。

所述节点编码优化模块反复对节点的相对行数编码组和绝对行数编码组进行优化,优化过程中,按照节点顺序,每次只将当前一个节点的编码减1,如果新的编码组有效,则记录价值,否则将改变编码的节点恢复之前的编码;以此类推,直到不会再有新的有效编码组为止,将历史最优的编码组作为最终的映射编码组。

一种面向可重构计算阵列的算子映射方法,包括两个部分,其中:

第一部分由计算流图优化模块读入原始计算流图开始,对计算流图进行优化,并最终得到优化后的计算流图;具体为:优化过程采用递归方式,在对某个节点进行组合优化前先对该节点的两个或一个输入节点进行组合优化,得到所有输入节点各自的拟组合节点集;

第二部分是从读入优化后的计算流图开始,对计算流图中的节点进行分析和排序、编码,完成将每个计算节点都映射到计算阵列中的任务;具体为:先将节点进行层次性的排序,从出口节点开始,层次每个节点的输入节点都比自己的层次低,保证高层次的节点一定排在低层次节点的后面,由此完成所有节点的排序,在接下来的过程中,该排序会被一直使用;然后对所有节点进行编码的初始化,编码分为两类编码,一类表示节点在阵列中的绝对行数,另一类表示节点在阵列中的相对行数,初始化的时候按照节点的排列顺序,将绝对行数编码设定为节点自身的排序编号,即完成了编码初始化;将相对编码和绝对编码进行逐步优化,利用编码解释模块对编码组进行解释,尝试映射到阵列中,并对编码组进行有效性和价值进行评估,并记录历史最优的编码组,作为最终输出的编码组。

第一部分中,对节点进行组合优化时,按照以下顺序进行尝试判断:假设有两个输入,节点与两个输入节点进行组合、节点与你组合节点集中节点数较多的输入节点进行组合、节点与剩下的输入节点进行组合,对每种组合判断是否在单个算子中实现,一旦顺序靠前的组合方式判断能够实现,则不再尝试后面的组合,将能够实现的组合方式作为该节点的拟组合节点集,而不包含于该节点集的输入节点将它自己的拟组合节点集变为确定组合节点集,直到所有节点的确定组合节点集被找到,计算流图的优化方案流程结束。

本发明的有益效果是:本发明提出的技术方案,通过巧妙的初始化和一步步优化,能够在稳定可控的时间内获得满意的且稳定的映射效果。第一步的组合优化充分发挥每个计算单元的功能,减少计算单元的使用量,从而节省可用资源和阵列的运行时间;第二步的收敛优化中每一次优化都是在阵列限制范围内尝试缩短计算节点之间的距离,去掉节点之间的冗余连接,从而可以最大程度缩短映射后阵列的运行时间。

附图说明

图1为本发明的流程及模块框图。

具体实施方式

如图1所示,一种面向可重构计算阵列的算子映射系统,包括计算流图优化模块、节点层次排序模块、节点编码模块、节点编码解释与评价模块、节点编码初始化模块、节点编码优化模块,其中:

计算流图优化模块用于对原始计算流图进行节点的组合优化;计算流图优化模块的输入为以单一运算为节点的原始计算流图,输出为以复杂运算为节点的计算流图,单一运算是指两个或一个操作数一个操作符的四则运算、逻辑运算、移位运算,复杂运算是指阵列算子能够实现的多操作数多操作符运算或者单操作数单操作符运算。优化是指对每个节点进行组合优化,以达到减少算子的使用个数,提高运算性能的目的。

节点层次排序模块用于根据经过计算流图优化模块优化后的计算流图对节点进行分层性排序;节点层次排序模块在排序前对节点进行分层,分层按照输出节点为最高层,其中,输出节点为计算结果输出到外部存储器、fifo的节点;节点的输入节点的层数等于节点层数减1,如果某个节点同时是多个不同层次节点的输入节点,则按照层次最低的节点计算该输入节点的层次数;直到所有节点的层次数被确定,按照层次从低到高对节点进行排序,保证同层次的节点顺序无所谓但固定,不同层次的节点顺序为高层次节点排在低层次节点之后。

节点编码初始化模块用于调用节点编码模块对经过节点层次排序模块分层性排序后的节点进行编码;节点编码组初始化模块对节点编码模块获得的每个节点的编码进行初始化,将每个节点的绝对行数编码等于它的排序的索引,即如果某个节点排序索引为0,则该节点初始化绝对行数为0,该节点将被映射到阵列的第0行(本发明中所有的索引号都从0开始);将初始化绝对行数编码组转换为相对行数编码组,作为初始化的相对行数编码组。

节点编码模块用于对经过节点层次排序模块分层性排序后的节点进行编码,所有节点按照顺序排列的编码组成一条编码组;节点编码模块所得到的编码分为两类编码,一类编码代表节点映射在阵列中的绝对行数,直接用来进行映射,另一类编码代表节点映射在阵列中的行数与该节点的输入节点中映射行数最大的节点的相对距离,编码组按照所述节点层次排序模块的排序结果对节点的编码进行组合。

节点编码解释与评价模块用于输入一条编码组,输出该编码组对应的映射结果,该映射结果包含模块对之进行的优化调整;节点编码解释与评价模块的输入为编码组,输出为以该编码组表示的节点行数信息进行阵列映射的结果,该结果同时包含了模块对之做出的优化调整;

所述优化调整包括:1)如果映射之后,某些计算节点的输入节点和该节点相差不止一行,则在输入节点与该节点之间的每一行添加链接节点,如果添加链接节点的过程中超出了阵列每一行的算子限制,则将输入节点的输出变为输出到存储器,计算节点的输入变为从存储器输入;2)如果节点的多个输入不同步,由于这种不同步会导致启动周期的增加,致使性能下降,因此模块在硬件限制条件内在输入节点和该节点之间添加缓存节点,使得节点的输入之间的周期间隔尽量小;

节点编码解释与评价模块对编码组的有效性进行判断,如果映射结果在阵列硬件限制范围之内,则判定为有效,否则无效,在判断硬件限制的时候,不考虑行数的限制;同时对编码组进行价值评估,映射结果的运算周期和启动周期(非同步输入的间隔周期)越小,则编码组价值越高。

节点编码优化模块用于对节点编码模块获得的节点的编码组进行优化,并记录历史最有价值的编码组作为最终的映射编码组;节点编码优化模块反复对节点的相对行数编码组和绝对行数编码组进行优化,优化过程中,按照节点顺序,每次只将当前一个节点的编码减1,如果新的编码组有效,则记录价值,否则将改变编码的节点恢复之前的编码;以此类推,直到不会再有新的有效编码组为止,将历史最优的编码组作为最终的映射编码组。

一种面向可重构计算阵列的算子映射方法,包括两个部分,其中:

第一部分由计算流图优化模块读入原始计算流图开始,对计算流图进行优化,并最终得到优化后的计算流图;具体为:优化过程采用递归方式,在对某个节点进行组合优化前先对该节点的两个或一个输入节点进行组合优化,得到所有输入节点各自的拟组合节点集;对节点进行组合优化时,按照以下顺序进行尝试判断:假设有两个输入,节点与两个输入节点进行组合、节点与你组合节点集中节点数较多的输入节点进行组合、节点与剩下的输入节点进行组合,对每种组合判断是否在单个算子中实现,一旦顺序靠前的组合方式判断能够实现,则不再尝试后面的组合,将能够实现的组合方式作为该节点的拟组合节点集,而不包含于该节点集的输入节点将它自己的拟组合节点集变为确定组合节点集,直到所有节点的确定组合节点集被找到,计算流图的优化方案流程结束;

第二部分是从读入优化后的计算流图开始,对计算流图中的节点进行分析和排序、编码,完成将每个计算节点都映射到计算阵列中的任务;具体为:先将节点进行层次性的排序,从出口节点开始,层次每个节点的输入节点都比自己的层次低,保证高层次的节点一定排在低层次节点的后面,由此完成所有节点的排序,在接下来的过程中,该排序会被一直使用;然后对所有节点进行编码的初始化,编码分为两类编码,一类表示节点在阵列中的绝对行数,另一类表示节点在阵列中的相对行数,初始化的时候按照节点的排列顺序,将绝对行数编码设定为节点自身的排序编号,即完成了编码初始化;将相对编码和绝对编码进行逐步优化,利用编码解释模块对编码组进行解释,尝试映射到阵列中,并对编码组进行有效性和价值进行评估,并记录历史最优的编码组,作为最终输出的编码组。

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