掌桥专利:专业的专利平台
掌桥专利
首页

控制运算装置进行计算的方法及设备

文献发布时间:2023-06-19 11:16:08


控制运算装置进行计算的方法及设备

技术领域

本申请涉及计算机设备技术领域,特别是涉及一种控制运算装置进行计算的方法及设备。

背景技术

在使用传统运算装置的实现算法时,处理流程一般为:加载指令、加载数据、完成计算、输出结果、存储数据。

然而,现实中的算法通常具有数据量大、数据结构不规则、计算量大的特性;而且,在实际运算时,受限于运算装置的面积、功耗、封装技术等,运算装置的内部存储单元、内部运算单元以及外部存储单元都无法完全与相应算法一一匹配。这使得传统运算装置存在处理算法时动态平衡算法效果差,数据访存量大,运算力不足的问题。

发明内容

基于此,有必要针对上述技术问题,提供一种能够高性能的一种算法自适应装置、算法自适应方法、运算引擎、数据运算方法、自适应算法运算装置以及自适应算法运算方法。

一种运算引擎,包括依次连接的解析装置、控制装置和运算装置,其中,

所述解析装置用于解析接收的算法执行子,得到当前执行状态信息以及当前执行操作信息;

所述控制装置用于根据当前执行状态信息控制所述运算装置进入开始状态、循环状态或者结束状态,之后,根据所述当前执行操作信息控制所述运算装置执行相关的运算;

所述运算装置,用于在所述运算状态下,执行所述相关的运算。

在其中一个可选地实施例中,所述控制装置还用于在完成当前状态需执行的操作后更新所述算法执行子的执行状态信息,并确定所述运算装置进入的下一状态,其中,所述下一状态为开始状态、循环状态或者结束状态中的一种。

在其中一个可选地实施例中,所述控制装置还用于若所述算法执行子的执行状态信息更新完毕,则控制所述运算装置输出运算结果。

在其中一个可选地实施例中,所述控制装置用于若根据所述当前执行状态信息控制所述运算装置进入开始状态,则控制所述运算装置执行开始状态的操作,其中,所述开始状态的操作包括初始化计算或并行计算。

在其中一个可选地实施例中,所述控制装置用于若根据所述当前执行状态信息控制所述运算装置进入循环状态,则控制所述运算装置执行循环状态的操作,其中,所述循环状态的操作包括并行计算。

在其中一个可选地实施例中,所述控制装置用于若根据所述当前执行状态信息控制所述运算装置进入结束状态,则控制所述运算装置执行结束状态的操作,其中,所述结束状态的操作包括并行计算。

一种自适应算法运算装置,包括相互连接的算法自适应装置和运算引擎,其中,

所述算法自适应装置用于根据算法得到算法执行子;

所述运算引擎用于根据所述算法执行子执行相关运算。

在其中一个可选地实施例中,自适应算法运算装置还包括结果分析器,所述结果分析器连接所述运算引擎和自适应装置,

所述结果分析器用于分析所述运算结果是否为所述算法调度子的最终结果,若所述运算结果不是所述算法调度子的最终结果,则控制运算引擎执行根据所述算法调度子中的调度状态信息和功能信息,得到算法执行子的数量、各个所述算法执行子的执行状态信息和执行操作信息;根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子的步骤。

在其中一个可选地实施例中,所述结果分析器还用于若所述运算结果是所述算法调度子的最终结果,则分析所述运算结果是否为算法描述子的最终结果,若所述运算结果为所述算法描述子的最终结果,则终止运算。

在其中一个可选地实施例中,所述结果分析器还用于若所述运算结果不是所述算法描述子的最终结果,则控制所述算法自适应装置执行根据所述算法描述子得到算法调度子的步骤。

一种算法自适应方法,包括,

根据算法得到至少一个算法描述子,其中,所述算法描述子包含所述算法的拓扑结构信息、控制流结构信息、数据流结构信息以及计算流结构信息;

根据所述算法描述子得到算法执行子,并将所述算法执行子发送至运算引擎,以使所述运算引擎根据所述算法执行子执行相关运算,其中,所述算法执行子包含执行类型信息、执行状态信息以及执行操作信息。

在其中一个可选地实施例中,根据所述算法描述子得到算法执行子,包括:

根据所述算法描述子的拓扑结构信息,确定所述算法执行子的数量;

根据所述算法描述子中的数据流结构信息确定各个所述算法执行子的执行状态信息;

根据所述算法描述子中的计算流结构信息确定各个所述算法执行子的执行操作信息;

根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子。

在其中一个可选地实施例中,所述算法自适应方法还包括:

为所述算法执行子分配执行类型信息,其中,所述执行类型信息用于确定对应的算法执行子相关运算的硬件资源。

在其中一个可选地实施例中,根据所述算法描述子得到算法执行子,包括:

根据所述算法描述子得到算法调度子;

根据所述算法调度子中的调度状态信息和功能信息,得到算法执行子的数量、各个所述算法执行子的执行状态信息和执行操作信息;

根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子。

在其中一个可选地实施例中,所述算法描述子还包括控制流结构信息,所述根据所述算法描述子得到算法调度子,包括:

根据算法描述子的拓扑结构信息确定所述算法调度子的数量;

根据所述算法描述子的数据流信息确定各个所述算法调度子的调度状态信息;

根据所述算法描述子的控制流结构信息和计算流结构信息确定各个所述算法调度子的功能信息;

根据所述算法调度子的数量、各个所述算法调度子的调度状态信息和功能信息得到至少一个算法调度子。

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

为所述算法调度子分配调度类型信息,并根据所述算法调度子分配调度类型信息确定算法执行子的执行类型信息,其中,所述执行类型信息用于确定对应的算法执行子相关运算的硬件资源。

在其中一个可选地实施例中,所述算法描述子还包括控制流结构信息,所述根据所述算法描述子得到算法调度子,包括:

对算法描述子进行解析;

提取算法的拓扑结构信息,根据所述算法的拓扑结构信息将算法的数据空间分布映射到空间状态表;

提取算法的数据流信息,根据所述数据流信息将算法的数据时间分布映射到时间状态表;

提取算法的控制流信息,根据所述控制流信息将算法的控制过程映射到控制状态表;

提取算法的运算流信息,根据所述运算流信息将算法的运算过程映射到运算状态表;

所述算法调度子生成部件,用于根据所述空间状态表确定生成的算法调度子的数量;

根据所述时间状态表,得到所述算法调度子的调度状态信息;

根据所述控制状态表和所述运算状态表,得到所述算法调度子的功能信息。

在其中一个可选地实施例中,根据所述算法调度子中的调度状态信息和功能信息,得到算法执行子的数量、各个所述算法执行子的执行状态信息和执行操作信息,包括:

根据所述算法调度子的调度状态和功能信息进行数据依赖判断,并根据所述数据依赖判断的结果在对应的所述算法调度子增加依赖映射信息;

解析增加了依赖映射信息的算法调度子,得到功能信息和依赖关系映射信息,根据所述功能信息和依赖映射信息生成至少一个算法执行子。

在其中一个可选地实施例中,所述解析增加了依赖映射信息的算法调度子,得到功能信息和依赖关系映射信息,根据所述功能信息和依赖映射信息生成至少一个算法执行子,包括:

根据得到数据依赖判断的结果,并行解析增加了依赖映射信息的算法调度子,得到功能信息和依赖关系映射信息,根据所述功能信息和依赖映射信息生成至少一个算法执行子。

在其中一个可选地实施例中,所述根据所述数据依赖判断的结果在对应的所述算法调度子增加依赖映射信息,包括:

根据所述数据依赖判断的结果更新算法调度子的依赖关系查找表,之后根据所述依赖关系查找表为各个算法调度子增加依赖映射信息。

在其中一个可选地实施例中,在对所述算法调度子进行解析,之后,所述算法自适应方法还包括:

根据所述算法调度子的解析结果,得到所述算法调度子的调度类型;

根据所述调度类型将所述算法调度子缓存到不同的队列。

在其中一个可选地实施例中,所述算法自适应方法还包括:

根据所述算法调度子的功能信息中特定标志位将所述算法调度子发送至对应的所述算法调度子解析部件。

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

在每次算法调度子被调度之后,更新所述空间状态表、所述时间状态表、所述控制状态表以及所述运算状态表中的信息。

在其中一个可选地实施例中,所述调度状态信息包括等待调度、调度循环或者调度结束。

在其中一个可选地实施例中,所述时间状态表包含各个所述算法调度子的调度次数;所述方法还包括:

根据所述时间状态表中的各个所述算法调度子的调度次数对应更新各个所述算法调度子的调度状态信息。

在其中一个可选地实施例中,所述根据所述时间状态表中的各个所述算法调度子的调度次数对应更新各个所述算法调度子的调度状态信息,包括:

若某一所述算法调度子在等待更新功能信息,则所述某一算法调度子的调度状态信息为等待调度;

若某一所述算法调度子处于被调度状态且调度状态信息中的调度次数未达到预设阈值,则所述某一算法调度子的调度状态信息设为调度循环;

若某一所述算法调度子的调度状态信息中的调度次数达到所述预设阈值,在所述某一算法调度子的调度状态信息设为调度结束。

上述算法自适应装置、算法自适应方法、运算引擎、数据运算方法、自适应算法运算装置以及自适应算法运算方法,可以通过其算法分析装置对算法的拓扑结构,时间流,控制流以及数据流信息进行提取,之后基于提取的这些信息得到算法执行子,该算法执行子被发送到运算引擎后可以执行,实现算法的相关操作。该算法自适应装置可以为待处理的算法匹配合理的资源,避免出现算法运行过程中因动态平衡差影响算法执行的问题。

附图说明

图1为一个实施例中算法自适应装置结构示意图;

图2为另一个实施例中算法自适应装置结构示意图;

图3为另一个实施例中运算引擎结构示意图;

图4为另一个实施例中自适应算法运算装置结构示意图;

图5为一个实施例中算法自适应方法的流程示意图;

图6为一个实施例中步骤S520细化步骤的流程示意图;

图7为一个实施例中数据运算方法的流程示意图;

图8为一个实施例中自适应算法运算方法的流程示意图;

图9为一个实施例中自适应算法运算方法的流程示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

如图1所示,为本申请在其中一个实施例中提出的算法自适应装置100的结构示意图。该算法自适应装置100包括:相互连接的算法分析装置110、调度装置120,其中,

算法分析装置110,用于根据算法得到至少一个算法描述子,其中,所述算法描述子包含所述算法的拓扑结构信息、数据流结构信息以及计算流结构信息。其中,拓扑结构信息描述算法的宏观组成,该宏观组成可以为算法的数据和运算的空间分布。数据流结构信息描述参与算法计算的数据的时间分布。可选地,该数据流结构信息包括但不限于输入数据流和输出数据流。可选地,该计算流结构信息描述算法的数据参与的具体运算过程,其包括但不限于加、减、乘、除等。

调度装置120,用于根据所述算法描述子得到算法执行子,并将所述算法执行子发送至运算引擎,以使所述运算引擎根据所述算法执行子执行相关运算,其中,所述算法执行子包含执行状态信息以及执行操作信息。执行状态信息用于描述该算法执行子所处的状态。算法执行子所述的状态可以表征该算法执行子的操作是否被执行,以及这些操作被执行的进度。执行操作信息用于描述该算法执行子的具体操作,

本申请实施例中的算法自适应装置,可以通过其算法分析装置对算法的拓扑结构,时间流,控制流以及数据流信息进行提取,之后基于提取的这些信息得到算法执行子,该算法执行子被发送到运算引擎后可以执行,实现算法的相关操作。该算法自适应装置可以为待处理的算法匹配合理的资源,避免出现算法运行过程中因动态平衡差影响算法执行的问题。

具体地,调度装置120,用于根据所述算法描述子的拓扑结构信息,确定所述算法执行子的数量;根据所述算法描述子中的数据流结构信息确定各个所述算法执行子的执行状态信息;根据所述算法描述子中的计算流结构信息确定各个所述算法执行子的执行操作信息;根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子。

进一步地,调度装置120,还用于为所述算法执行子分配执行类型信息。其中,该算法执行子的执行类型可以为cluster(集群),union(联合)或者core(核),该执行类型信息用于确定该算法执行子的操作所需资源的信息。

在其中一个可选地实施例中,调度装置120,也可以用于根据所述算法描述子得到算法调度子;根据所述算法调度子中的调度状态信息和功能信息,得到算法执行子的数量、各个所述算法执行子的执行状态信息和执行操作信息,根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子。可选地,调度状态信息为算法调度子处于的状态以及相关的信息,该状态可以包括等待调度状态、调度循环状态、调度结束状态。其中,算法调度子处于等待调度状态,表明该算法调度子等待更新功能信息等。算法调度子处于调度循环状态,表明该算法调度子处于被反复调度过程中。算法调度子处于调度结束状态,表明该算法调度子处于被反复调度的次数已达到预设阈值。进一步地,该调度状态信息还可以包括该算法调度子处于调度循环状态时,被反复调度的调度次数。可选地,在算法调度子进入调度结束状态时,会将该进入调度结束的状态的算法调度子的调度次数更新(时间状态表信息)。

进一步地,在将调度次数来作为更新算法调度子的状态参数时,对于一个算法调度子而言,每一次调度,算法调度子的调度类型不会改变,但是算法调度子的功能信息可能会发生改变。一个调度子的生命周期可能会如下:

等待调度状态--->调度循环状态(更新调度次数,更新功能信息)--->调度结束状态--->...若干后续处理...--->更新该调度子(在退出的前一步骤)--->等待调度状态--->调度循环状态(更新调度次数,更新功能信息)--->调度结束状态--->.......--->等待调度状态--->调度循环状态(调度次数达到阈值,其功能信息会被重置)--->调度结束。

在其中一个可选地实施例中,所述算法描述子还可以包括控制流结构信息。此时,所述调度装置120,可以用于根据算法描述子的拓扑结构信息确定所述算法调度子的数量,根据所述算法描述子的数据流信息确定各个所述算法调度子的调度状态信息,根据所述算法描述子的控制流结构信息和计算流结构信息确定各个所述算法调度子的功能信息,根据所述算法调度子的数量、各个所述算法调度子的调度状态信息和功能信息得到至少一个算法调度子。其中,控制流结构信息描述算法的控制过程,其包括但不限于算法的循环、跳转、暂停等过程。算法调度子的功能信息包括算法中数据的数据地址(输入/输出)、数据shape、I/O信息(比如:数据在存储空间里的转移)、运算信息(比如:加、减或者多种运算的组合)、控制信息(比如:描述这些I/O和运算信息的关系,即相关操作的顺序)。

进一步地,调度装置120,还用于为所述算法调度子分配调度类型信息,并根据所述算法调度子分配调度类型信息确定算法执行子的执行类型信息,其中,所述执行类型信息用于确定对应的算法执行子相关运算的硬件资源。

如图2所示,该调度装置120可以包括算法描述子解析部件121和算法调度子生成部件122。其中,

所述算法描述子解析部件121,用于对算法描述子进行解析,提取算法的拓扑结构信息,根据所述算法的拓扑结构信息将算法的数据空间分布映射到空间状态表。该空间状态表包含算法的空间分布信息。提取算法的数据流信息,根据所述数据流信息将算法的数据时间分布映射到时间状态表。该时间状态表包含算法的时间信息。提取算法的控制流信息,根据所述控制流信息将算法的控制过程映射到控制状态表。该控制状态表包含算法的控制信息。提取算法的运算流信息,根据所述运算流信息将算法的运算过程映射到运算状态表。该运算状态表包含算法的运算信息。

所述算法调度子生成部件122,用于根据所述空间状态表确定生成的算法调度子的数量;根据所述时间状态表,得到所述算法调度子的调度状态信息;根据所述控制状态表和所述运算状态表,得到所述算法调度子的功能信息。

本实施例中的调度装置,将算法描述子中的不同类别的信息映射到对应的状态表的表项中,这样可以精细的处理描述算法的信息,得到优异的调度结果,进而提高算法的处理效率。

进一步地,继续参见图2,调度装置120还包括算法调度子分析部件123和算法执行子生成部件124,所述算法调度子分析部件123分别连接所述算法执行子生成部件124和所述算法调度子生成部件122。其中,算法调度子分析部件123用于根据所述算法调度子的调度状态和功能信息进行数据依赖判断,并根据所述数据依赖判断的结果在对应的所述算法调度子增加依赖映射信息。具体地,调度子分析部件123根据所述算法调度子的调度状态和功能信息进行数据依赖判断,根据数据依赖判断的结果更新算法调度子的依赖关系查找表,之后根据依赖关系查找表为各个算法调度子增加依赖映射信息。可选地,依赖关系查找表可以记录数据依赖判断的结果。

算法调度子生成部件124用于解析增加了依赖映射信息的算法调度子,得到功能信息和依赖关系映射信息,根据所述功能信息和依赖映射信息生成至少一个算法执行子。

可选地,算法调度子分析部件123还用于根据得到数据依赖判断的结果,将不存在依赖的算法调度子发送至不同的算法执行子生成部件。这样可以使算法执行子生成部件在生成算法执行子时,处理具有较为简单的数据依赖关系的信息,减少了为保证算法逻辑正确所需的数据处理量,提高了处理效率。

在其中一个实施例中,为了更加合理的利用资源,为各个算法调度子分配调度类型时,算法调度子分析部件123还用于对所述算法调度子进行解析,得到所述算法调度子的调度类型,根据所述调度类型将所述算法调度子缓存到不同的队列。

在其中一个可选地实施例中,算法调度子生成部件122,还用于根据所述算法调度子的功能信息中特定标志位将所述算法调度子发送至对应的所述算法调度子解析部件。

在其中一个可选地实施例中,由于使用本申请的算法自适应装置处理算法时,算法的信息具有时序特性,需依序处理,在得到算法调度子后,尤其是包含调度循环状态的算法调度子会被反复调度。在不同的时刻,调度子中的信息会随时间变化而变化,因此,本申请的算法调度子生成部件122,还用于在每次算法调度子被调度之后,更新所述空间状态表、所述时间状态表、所述控制状态表以及所述运算状态表中的信息。本实施例根据算法处理进度动态处理各个信息,有效的利用资源空间。

可选地,在时间状态表包含各个所述算法调度子的调度次数时,算法调度子生成部件122,可以根据所述时间状态表中的各个所述算法调度子的调度次数对应更新各个所述算法调度子的调度状态信息。具体地,算法调度子生成部件122用于,若某一所述算法调度子在等待更新功能信息,将所述某一算法调度子的调度状态信息设为等待调度;若某一所述算法调度子处于被调度状态且调度状态信息中的调度次数未达到预设阈值,将所述某一算法调度子的调度状态信息设为调度循环;若某一所述算法调度子的调度状态信息中的调度次数达到所述预设阈值,将所述某一算法调度子的调度状态信息设为调度结束。

基于同样的发明构思,如图3所示,本申请还提出了一种运算引擎200,该运算引擎200,包括依次连接的解析装置210、控制装置220和运算装置230。其中,

解析装置210用于解析接收的算法执行子,得到当前执行状态信息以及当前执行操作信息。

控制装置220用于根据当前执行状态信息控制所述运算装置进入开始状态、循环状态或者结束状态,之后,根据所述当前执行操作信息控制所述运算装置执行相关的运算。具体地,若根据所述当前执行状态信息控制所述运算装置进入开始状态,则控制所述运算装置执行开始状态的操作,其中,所述开始状态的操作包括初始化计算或并行计算。若根据所述当前执行状态信息控制所述运算装置进入循环状态,则控制所述运算装置执行循环状态的操作,其中,所述循环状态的操作包括并行计算。若根据所述当前执行状态信息控制所述运算装置进入结束状态,则控制所述运算装置执行结束状态的操作,其中,所述结束状态的操作包括并行计算。

运算装置230,用于在所述运算状态下,执行所述相关的运算。

可选地,控制装置220还用于在完成当前状态需执行的操作后更新所述算法执行子的执行状态信息,并确定所述运算装置进入的下一状态,其中,所述下一状态为开始状态、循环状态或者结束状态中的一种。

进一步地,控制装置还用于若所述算法执行子的执行状态信息更新完毕,则控制所述运算装置输出运算结果。

本实施例中的运算引擎,根据算法执行子选择进入的状态,例如在需要迭代执行算法中的操作时,进入循环状态,反复调用资源执行相应操作,直至完成循环状态下全部操作。这可以减少算法处理过程中的片间数据交换,既节省带宽资源又提高数据处理效率。

基于同样的发明构思,如图4所示,本申请还提出了一种自适应算法运算装置10,其特征在于,包括相互连接的算法自适应装置100和运算引擎200。其中,算法自适应装置100用于根据算法得到算法执行子。运算引擎200用于根据所述算法执行子执行相关运算。

在上文中的实施例中已经详述了算法自适应装置100以及运算引擎200的结构以及用途,具体请参见算法运算引擎200以及算法自适应装置100的相关实施例,在此不再做赘述。

可选地,继续参见图4,自适应算法运算装置10还包括结果分析器300,所述结果分析器连接所述运算引擎200和自适应装置100。该结果分析器300用于分析所述运算结果是否为所述算法调度子的最终结果,若所述运算结果不是所述算法调度子的最终结果,则控制运算引擎200执行根据所述算法调度子中的调度状态信息和功能信息,得到算法执行子的数量、各个所述算法执行子的执行状态信息和执行操作信息;根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子的步骤。可选地,结果分析器300可以根据预设条件或预设阈值分析所述运算结果是否为所述算法调度子的最终结果。

进一步地,结果分析器300还用于若所述运算结果是所述算法调度子的最终结果,则分析所述运算结果是否为算法描述子的最终结果,若所述运算结果为所述算法描述子的最终结果,则终止运算。

更进一步地,结果分析器300还用于若所述运算结果不是所述算法描述子的最终结果,则控制所述算法自适应装置执行根据所述算法描述子得到算法调度子的步骤。可选地,结果分析器300可以根据预设条件或预设阈值分析所述运算结果是否为所述算法描述子的最终结果。

本实施例中的自适应算法运算装置,可以精细的对算法进行自适应处理,高效准确的得到算法的运算结果。

基于同样的发明构思,在其中一个实施例中,如图5所示,还提出了一种算法自适应方法,该方法被上述算法自适应装置100执行,以对算法进行自适应处理,该方法包括,

步骤S510,根据算法得到至少一个算法描述子,其中,所述算法描述子包含所述算法的拓扑结构信息、控制流结构信息、数据流结构信息以及计算流结构信息。

步骤S520,根据所述算法描述子得到算法执行子,并将所述算法执行子发送至运算引擎,以使所述运算引擎根据所述算法执行子执行相关运算,其中,所述算法执行子包含执行类型信息、执行状态信息以及执行操作信息。

本实施例中的算法自适应方法,可以通过其算法分析装置对算法的拓扑结构,时间流,控制流以及数据流信息进行提取,之后基于提取的这些信息得到算法执行子,该算法执行子被发送到运算引擎后可以执行,实现算法的相关操作。该算法自适应装置可以为待处理的算法匹配合理的资源,避免出现算法运行过程中因动态平衡差影响算法执行的问题。

在其中一个可选地实施例中,上述步骤S520,可以包括:根据所述算法描述子的拓扑结构信息,确定所述算法执行子的数量;根据所述算法描述子中的数据流结构信息确定各个所述算法执行子的执行状态信息;根据所述算法描述子中的计算流结构信息确定各个所述算法执行子的执行操作信息;根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子。具体地,根据所述算法调度子的调度状态和功能信息进行数据依赖判断,并根据所述数据依赖判断的结果在对应的所述算法调度子增加依赖映射信息;解析增加了依赖映射信息的算法调度子,得到功能信息和依赖关系映射信息,根据所述功能信息和依赖映射信息生成至少一个算法执行子。进一步地,可以首先根据所述数据依赖判断的结果更新算法调度子的依赖关系查找表,之后根据所述依赖关系查找表为各个算法调度子增加依赖映射信息。

进一步地,上述算法自适应方法还可以包括:为所述算法执行子分配执行类型信息,其中,所述执行类型信息用于确定对应的算法执行子相关运算的硬件资源。

在另一个可选地实施例中,如图6所示,上述步骤S520,可以包括:步骤S521,根据所述算法描述子得到算法调度子;步骤S522,根据所述算法调度子中的调度状态信息和功能信息,得到算法执行子的数量、各个所述算法执行子的执行状态信息和执行操作信息;步骤S523,根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子。

可选地,算法描述子还包括控制流结构信息,此时步骤S520可以包括:根据算法描述子的拓扑结构信息确定所述算法调度子的数量;根据所述算法描述子的数据流信息确定各个所述算法调度子的调度状态信息;根据所述算法描述子的控制流结构信息和计算流结构信息确定各个所述算法调度子的功能信息;根据所述算法调度子的数量、各个所述算法调度子的调度状态信息和功能信息得到至少一个算法调度子。

在其中一个可选地实施例中,上述算法自适应方法还可以包括:为所述算法调度子分配调度类型信息,并根据所述算法调度子分配调度类型信息确定算法执行子的执行类型信息,其中,所述执行类型信息用于确定对应的算法执行子相关运算的硬件资源。

在其中一个可选地实施例中,所述算法描述子还包括控制流结构信息,此时步骤S520可以包括:对算法描述子进行解析;提取算法的拓扑结构信息,根据所述算法的拓扑结构信息将算法的数据空间分布映射到空间状态表;提取算法的数据流信息,根据所述数据流信息将算法的数据时间分布映射到时间状态表;提取算法的控制流信息,根据所述控制流信息将算法的控制过程映射到控制状态表;提取算法的运算流信息,根据所述运算流信息将算法的运算过程映射到运算状态表;所述算法调度子生成部件,用于根据所述空间状态表确定生成的算法调度子的数量;根据所述时间状态表,得到所述算法调度子的调度状态信息;根据所述控制状态表和所述运算状态表,得到所述算法调度子的功能信息。

在其中一个实施例中,在对所述算法调度子进行解析,之后,上述算法自适应方法还可以包括:根据所述算法调度子的解析结果,得到所述算法调度子的调度类型;根据所述调度类型将所述算法调度子缓存到不同的队列。由于不同的调度类型对应不同的资源需求,将不同调度类型的算法调度子分队列缓存,利于资源的合理分配。

在其中一个实施例中,上述算法自适应方法还可以包括:根据所述算法调度子的功能信息中特定标志位将所述算法调度子发送至对应的所述算法调度子解析部件。

在其中一个实施例中,上述算法自适应方法还可以包括:在每次算法调度子被调度之后,更新所述空间状态表、所述时间状态表、所述控制状态表以及所述运算状态表中的信息。

在其中一个实施例中,在时间状态表包含各个所述算法调度子的调度次数时,上述算法自适应方法还可以包括:根据所述时间状态表中的各个所述算法调度子的调度次数对应更新各个所述算法调度子的调度状态信息。

具体地,若某一所述算法调度子在等待更新功能信息,则所述某一算法调度子的调度状态信息为等待调度;若某一所述算法调度子处于被调度状态且调度状态信息中的调度次数未达到预设阈值,则所述某一算法调度子的调度状态信息设为调度循环;若某一所述算法调度子的调度状态信息中的调度次数达到所述预设阈值,在所述某一算法调度子的调度状态信息设为调度结束。

关于算法自适应方法的各个步骤具体执行部件可以参见上文中对于算法自适应装置100的限定,在此不再赘述。

基于同样的发明构思,如图7所示,本申请在一实施例中还提出了一种数据运算方法,该数据运算方法被运算引擎200执行,包括:

步骤S610,解析接收的算法执行子,得到当前执行状态信息以及当前执行操作信息。其中,算法执行子包含执行状态信息以及执行操作信息。可选地,该算法执行子还可以包括执行类型信息。该算法执行子可以通过上述任一实施例中的算法自适应方法得到。其具体获取过程可参见上文中对算法自适应装置100以及算法自适应方法的具体描述,在此不做赘述。

步骤S620,根据当前执行状态信息确定进入开始状态、循环状态或者结束状态;之后,根据所述当前执行操作信息执行相关的运算。

本实施例中的数据运算方法,根据算法执行子选择进入的状态,例如在需要迭代执行算法中的操作时,进入循环状态,反复调用资源执行相应操作,直至完成循环状态下全部操作。这可以减少算法处理过程中的片间数据交换,既节省带宽资源又提高数据处理效率。

可选地,上述数据运算方法,还可以包括:在完成当前状态需执行的操作后更新所述算法执行子的执行状态信息,并确定所述运算装置进入的下一状态,其中,所述下一状态为开始状态、循环状态或者结束状态中的一种。

可选地,上述数据运算方法,还可以包括:若所述算法执行子的执行状态信息更新完毕,则控制所述运算装置输出运算结果。

在其中一个可选地实施例中,步骤S620,包括:若根据所述当前执行状态信息确定进入开始状态,则控制所述运算装置执行开始状态的操作,其中,所述开始状态的操作包括初始化计算或并行计算。若根据所述当前执行状态信息确定进入循环状态,则控制所述运算装置执行循环状态的操作,其中,所述循环状态的操作包括并行计算。若根据所述当前执行状态信息确定进入结束状态,则控制所述运算装置执行结束状态的操作,其中,所述结束状态的操作包括并行计算。

关于数据运算方法的各个步骤具体执行部件可以参见上文中对于运算引擎200的限定,在此不再赘述。

基于同样的发明构思,如图8所示,本申请在一实施例中还提出了一种自适应算法运算方法,该方法可以被自适应算法运算装置10执行,包括:

步骤S500,获取算法执行子。

具体地,算法自适应装置100对待处理的算法进行处理,得到算法执行子。更具体地,根据算法得到至少一个算法描述子,其中,所述算法描述子包含所述算法的拓扑结构信息、数据流结构信息以及计算流结构信息;根据所述算法描述子得到算法执行子。具体地,算法自适应装置100根据所述算法描述子得到算法调度子;根据所述算法调度子中的调度状态信息和功能信息,得到算法执行子的数量、各个所述算法执行子的执行状态信息和执行操作信息;根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子。进一步地,算法自适应装置100可以执行下述步骤得到算法调度子:对算法描述子进行解析;提取算法的拓扑结构信息,根据所述算法的拓扑结构信息将算法的数据空间分布映射到空间状态表;提取算法的数据流信息,根据所述数据流信息将算法的数据时间分布映射到时间状态表;提取算法的控制流信息,根据所述控制流信息将算法的控制过程映射到控制状态表;提取算法的运算流信息,根据所述运算流信息将算法的运算过程映射到运算状态表;所述算法调度子生成部件,用于根据所述空间状态表确定生成的算法调度子的数量;根据所述时间状态表,得到所述算法调度子的调度状态信息;根据所述控制状态表和所述运算状态表,得到所述算法调度子的功能信息。

在上文中的实施例中已经详述了算法执行子的获取装置,以及获取过程,具体请参见算法自适应装置100以及算法自适应方法的相关实施例,在此不再做赘述。

步骤S600,处理所述算法执行子,得到运算结果。

具体地,运算引擎处理所述算法执行子,得到运算结果。更具体地,解析接收的算法执行子,得到当前执行状态信息以及当前执行操作信息;根据当前执行状态信息控制所述运算装置进入开始状态、循环状态或者结束状态,之后,根据所述当前执行操作信息控制所述运算装置执行相关的运算,得到运算结果。进一步地,运算引擎在完成当前状态需执行的操作后会更新所述算法执行子的执行状态信息,并确定进入的下一状态,其中,所述下一状态为开始状态、循环状态或者结束状态中的一种。更进一步地,运算引擎会在算法执行子的执行状态信息更新完毕(即所有状态均执行完毕)后,输出运算结果。

在上文中的实施例中已经详述了基于算法执行子的进行数据运算的过程,具体请参见算法运算引擎200以及数据运算方法的相关实施例,在此不再做赘述。

关于自适应算法运算方法的各个步骤具体执行部件可以参见上文中对于自适应算法运算装置10的限定,在此不再赘述。

本实施例中的自适应算法运算方法,可以精细的对算法进行自适应处理,高效准确的得到算法的运算结果。

在其中一个实施例中,如图9所示,上述自适应算法运算方法还可以包括:

步骤S710,分析所述运算结果是否为所述算法调度子的最终结果。

若所述运算结果不是所述算法调度子的最终结果,则返回执行步骤S522,根据所述算法调度子中的调度状态信息和功能信息,得到算法执行子的数量、各个所述算法执行子的执行状态信息和执行操作信息;根据所述算法执行子的数量、各个所述算法执行子的执行状态信息以及执行操作信息得到至少一个算法执行子的。

请继续参见图8,在其中一个实施例中,上述自适应算法运算方法还可以包括:若所述运算结果是所述算法调度子的最终结果,则执行步骤S720,分析所述运算结果是否为算法描述子的最终结果。若所述运算结果为所述算法描述子的最终结果,则执行步骤S730,终止运算。

请继续参见图7,在其中一个实施例中,上述自适应算法运算方法还可以包括:若所述运算结果不是所述算法描述子的最终结果,则控制所述算法自适应装置执行步骤S521,根据所述算法描述子得到算法调度子的步骤。应该理解的是,虽然图5-9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图5-9中的至少一部分步骤可以包括至少一个子步骤或者至少一个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

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

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 控制运算装置进行计算的方法及设备
  • 运算控制装置、运算控制方法、存储有程序的非瞬时计算机可读介质以及OpenCL设备
技术分类

06120112859785