CN112513814A - 任务调度方法及装置 - Google Patents
任务调度方法及装置 Download PDFInfo
- Publication number
- CN112513814A CN112513814A CN202080004240.2A CN202080004240A CN112513814A CN 112513814 A CN112513814 A CN 112513814A CN 202080004240 A CN202080004240 A CN 202080004240A CN 112513814 A CN112513814 A CN 112513814A
- Authority
- CN
- China
- Prior art keywords
- task
- algorithm
- software component
- tasks
- scheduling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种任务调度方法及装置,属于智能汽车领域,该方法可以应用于采用汽车开放系统架构的嵌入式设备,该嵌入式设备包括内存和处理器,该内存中存储有接口函数,该处理器中部署有第一软件组件以及第二软件组件。该方案可以通过该接口函数获取并解析待部署的算法的注册信息,并可以通过该软件组件实现对算法中的任务的调度执行。由于该算法的部署以及任务的调度过程中,无需开发人员进行复杂的配置,应用在智能汽车、网联汽车、新能源汽车上,能够有效简化算法的部署流程,提高了算法的部署效率以及任务的调度效率。
Description
技术领域
本申请涉及智能汽车领域,特别涉及一种任务调度方法及装置。
背景技术
汽车开放系统架构(automotive open system architecture,AUTOSAR)是为汽车工业开发的一个开放的且标准化的软件架构。
相关技术中,当需要在AUTOSAR中部署某种算法,使其实现该算法的功能时,需要开发人员使用AUTOSAR的系统配置工具、电子控制单元(electronic control unit,ECU)配置工具以及代码生成工具对算法进行一系列的配置,最终生成用于实现该算法的功能的可执行文件。
但是,相关技术中通过AUTOSAR实现某种算法的功能的流程较为复杂,效率较低。
发明内容
本申请实施例提供了一种任务调度方法及装置,可以解决相关技术中通过AUTOSAR实现某种算法的功能的流程较为复杂,效率较低的问题。
一方面,本申请提供了一种任务调度方法,可以应用于采用AUTOSAR的嵌入式设备,该嵌入式设备包括内存和处理器,该内存中存储有接口函数,该处理器中部署有第一软件组件以及第二软件组件;该方法可以包括:接口函数获取待部署的算法的注册信息,该算法包括多个任务,该注册信息包括:用于描述该多个任务之间的依赖关系的关系数据,以及每个任务的配置信息;接口函数根据该关系数据生成该多个任务的依赖关系图,该依赖关系图包括多个节点,每个节点用于指示一个该任务;该接口函数进而在该内存中记录该依赖关系图中的每个节点与其所指示的任务的配置信息的映射关系,得到该算法的执行流图;之后该第一软件组件可以基于该执行流图创建算法实例,并可以将该算法包括的多个任务中满足调度条件的目标任务调度至该第二软件组件,该第二软件组件进而可以执行该目标任务。
本申请提供的方法,可以通过接口函数获取并解析算法的注册信息,并可以通过处理器中部署的软件组件实现对算法中的任务的调度和执行。该算法的部署以及任务的调度和执行过程中,无需开发人员进行复杂的配置,有效简化了算法的部署流程,提高了算法的部署效率以及任务的调度和执行的效率。
可选的,该第一软件组件基于该执行流图创建算法实例的过程可以包括:若该第一软件组件确定其满足实例创建条件,则基于该执行流图创建算法实例,其中,该实例创建条件可以包括下述条件中的一种或多种:
该第一软件组件已创建的实例的总数小于数量阈值;
该嵌入式设备中具备用于执行该算法中的任务的资源。
其中,该数量阈值可以等于1或者也可以为大于1的整数。若该数量阈值为大于1的整数,则该第一软件组件可以并行创建多个算法实例,第二软件组件可以并行执行多个算法实例中的任务,从而有效降低了算法实例的调度时延,缩短了算法实例的执行周期,且提高了对嵌入式设备硬件资源的利用率。
可选的,该处理器中可以部署有多个第二软件组件;该第一软件组件基于该算法实例,将该算法包括的多个任务中满足调度条件的目标任务调度至该第二软件组件的过程可以包括:该第一软件组件基于该算法实例,从算法包括的多个任务中确定满足调度条件的目标任务的标识,并根据该目标任务的标识,从多个第二软件组件中确定用于执行该目标任务的目标第二软件组件,之后,该第一软件组件即可将该目标任务的标识发送至该目标第二软件组件。目标第二软件组件进而可以根据目标任务的标识执行该目标任务。
由于第一软件组件可以将目标任务调度至预先部署好的第二软件组件中执行,而无需再实时创建进程或线程来执行该目标任务,因此可以有效缩短任务的调度时延。
可选的,该方法还可以包括:在该第二软件组件执行完成该目标任务之后,向该第一软件组件发送通知消息,该通知消息用于指示该目标任务已执行完成;该第一软件组件进而可以响应于该通知消息,将该目标任务的状态更新为已完成状态。
其中,不同软件组件之间的通信可以基于AUTOSAR中的运行环境层实现。
可选的,在该第一软件组件将满足调度条件的目标任务调度至该第二软件组件之前,该方法还可以包括:该第一软件组件响应于该通知消息,基于该算法实例检测该算法包括的多个任务中是否存在满足调度条件的目标任务。
本申请提供的方案,第一软件组件可以按照调度周期,周期性执行任务调度;或者也可以响应于第二软件组件发送的通知消息,主动触发下一次任务调度,而无需等待下一个调度周期,由此可以有效提高任务的调度效率。
可选的,该调度条件可以包括:该嵌入式设备中具备执行该任务所需的资源,且该任务所依赖的任务的状态为已完成状态。
可选的,该配置信息可以包括:每个任务的属性信息以及每个任务的调度信息;该接口函数生成算法的执行流图的过程可以包括:
该接口函数先在该内存中记录该依赖关系图中的每个节点与其所指示的任务的属性信息的映射关系,得到该算法的任务流图;然后在该内存中记录该任务流图中的每个节点与其所指示的任务的调度信息的映射关系,从而得到该算法的执行流图。
由于接口函数可以将解析得到的执行流图直接存储在内存中,使得第一软件组件在创建算法实例时可以直接从内存中查询执行流图中的数据,而无需进行文件解析,因此有效减小了任务的调度时延。
另一方面,提供了一种嵌入式设备,该嵌入式设备采用AUTOSAR,且该嵌入式设备包括内存和处理器,该内存中存储有接口函数,该处理器中部署有第一软件组件以及第二软件组件;该接口函数、第一软件组件以及第二软件组件可以用于实现上述方面所提供的任务调度方法。
又一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该计算机可读存储介质在嵌入式设备上运行时,使得嵌入式设备执行如上述方面所提供的任务调度方法。
再一方面,提供了一种芯片,该芯片包括可编程逻辑电路和/或程序指令,当该芯片运行时用于实现如上述方面所提供的任务调度方法。
本申请提供的技术方案至少包括以下有益效果:
本申请实施例提供了一种任务调度方法及装置,该方案可以通过接口函数获取并解析算法的注册信息,并可以通过处理器中部署的软件组件实现对算法中的任务的调度执行。该算法的部署以及任务的调度过程中,无需开发人员进行复杂的配置,有效简化了算法的部署流程,提高了算法的部署效率以及任务的调度效率。
并且,由于该接口函数可以将解析得到的执行流图直接存储在内存中,使得软件组件在创建算法实例时可以直接从内存中查询执行流图中的数据,而无需进行文件解析,因此有效减小了任务的调度时延。又由于该处理器中可以预先部署用于实现任务调度和执行的软件组件,无需处理器在运行过程中实时创建进程或线程,因此也可以有效减小任务的调度时延。
附图说明
图1是本申请实施例提供的一种嵌入式设备中所采用的AUTOSAR的架构图;
图2是本申请实施例提供的一种感知调度框架的功能结构示意图;
图3是本申请实施例提供的一种采用AUTOSAR的嵌入式设备的结构示意图;
图4是本申请实施例提供的一种任务调度方法的流程图;
图5是本申请实施例提供的一种生成执行流图的示意图;
图6是本申请实施例提供的一种生成算法的执行流图的方法流程图;
图7是本申请实施例提供的一种基于一个执行流图创建多个算法实例的示意图;
图8是本申请实施例提供的一种处理器中部署的软件组件的示意图;
图9是本申请实施例提供的一种调度目标任务的方法流程图;
图10是本申请实施例提供的一种维护任务的状态的示意图;
图11是本申请实施例提供的另一种任务调度方法的流程图;
图12是本申请实施例提供的一种创建算法实例的方法流程图;
图13是本申请实施例提供的另一种采用AUTOSAR的嵌入式设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
相关技术中,若需要在AUTOSAR中部署某种算法,以实现该算法的功能,需要经过如下配置流程:首先,开发人员使用AUTOSAR的系统配置工具,完成软件组件(softwarecomponent,SWC)的设计以及SWC之间交互的端口(port)的设计,生成算法相关的SWC描述文件。然后,使用AUTOSAR的电子控制单元(electronic control unit,ECU)配置工具,将生成的SWC内的可运行实体(runnable)映射到不同的操作系统任务(OS Task)中,同时开发人员需手动配置OS Task的属性,得到多个配置文件。最后,使用代码生成工具将该多个配置文件转化为代码,并对代码进行编译和链接即可生成用于实现该算法的功能的可执行文件。上述配置过程流程复杂,需要开发人员熟练掌握整套AUTOSAR的开发工具链才可以实现,效率较低。
图1是本申请实施例提供的一种嵌入式设备中所采用的AUTOSAR的架构图,如图1所示,该AUTOSAR 01可以包括应用层(application layer)011、运行环境(runtimeenvironment,RTE)层012以及运行在微控制器02上的基础软件(basic software,BSW)层013。并且除了上述三层外,该AUTOSAR 01还可以包括位于该应用层011和RTE层012之间的感知调度框架(perceptual scheduling framework)013。
其中,该PSF 014可以统一管理上层算法(也可以称为业务)中的任务的调度执行,上层算法无需关注SWC间如何通信以及任务如何调度执行,使得的算法与AUTOSAR 01解耦,从而可以解决在AUTOSAR 01中部署算法配置流程长且效率较低的问题。
参考图1还可以看出,该BSW层013可以包括安全操作系统(safety operationsystem,safety OS)0131、服务层(services layer)0132、ECU抽象层(ECU abstractionlayer)0133、微控制器抽象层(micro-controller abstraction layer)0134以及复杂设备驱动(complex device drivers)0135。
图2是本申请实施例提供的一种PSF 014的功能结构示意图,如图2所示,该PSF014可以包括两个功能模块:任务编排(task orchestration,TO)模块0141以及任务管理(task management,TM)模块0142。
其中,该任务编排模块0141主要用于实现对待部署的算法包括的任务的静态编排。参考图2,该任务编排模块0141可以包括如下四个子模块:
算法注册子模块1a,负责实现算法的注册,即获取算法的注册信息,并将该注册信息解析后传递至其他子模块。该算法可以包括多个任务,该算法的注册信息可以包括用于描述该多个任务的依赖关系的关系数据,以及每个任务的配置信息,该配置信息可以包括任务的属性信息、任务的资源依赖信息以及任务的调度约束信息等。
由于在AUTOSAR不支持文件系统,因此常见的基于解析文件来获取注册信息的方式并不可行,故在本申请实施例中,采用了基于内存的配置表来实现算法的注册,同时提高注册信息的解析速度。
有向无环图(directed acyclic graph,DAG)管理子模块1b,负责解析算法所包括的多个任务之间的执行依赖关系,并生成用于描述多个任务之间的依赖关系的DAG。由于车载场景对实时性要求高,传统的通过读取配置文件来解析依赖关系的方式变得不现实,为此本申请实施例采用DAG在内存中存储任务之间的依赖关系。
任务属性管理子模块1c,负责解析算法包括的各个任务的属性信息,并将任务的属性信息与DAG中对应的任务节点相关联,从而生成具有任务属性信息的任务流图(taskflow graph,TFG)。其中,任务的属性信息可以包括任务名以及任务的存储地址。在本申请实施例中,每个任务可以包括用于实现特定功能的一个或多个函数,该任务名即为函数名,任务的存储地址即为函数的存储地址,该存储地址可以采用函数指针表示。
任务调度信息管理子模块1d,负责解析算法包括的任务的调度信息,并将该调度信息与TFG中的对应的节点相关联,从而生成可被任务管理模块0142调度执行的执行流图(execution flow graph,EFG)。并且,任务调度信息管理子模块1d可以提供用于获取该EFG的接口给任务管理模块0142。其中,该调度信息可以包括任务的资源依赖信息以及调度约束信息。该资源依赖信息可以包括:任务依赖的内存,以及处理器中用于执行该任务的计算单元的标识。该调度约束信息可以包括任务的启动时间以及任务启动后最大的运行时长。
任务管理模块0142主要用于实现任务的动态管理,如图2所示,该任务管理模块0142可以包括如下四个子模块:
任务状态机管理子模块2a,用于管理算法中每个任务的状态迁移。
执行流图实例管理子模块2b,用于创建以及删除执行流图实例,以及对执行流图中的任务所依赖的资源进行解析。
执行流图实例调度子模块2c,用于根据任务的状态迁移合理调度任务执行。
图3是本申请实施例提供的一种采用AUTOSAR的嵌入式设备的结构示意图。该嵌入式设备可以为车载设备,且可以应用于智能汽车、网联汽车或新能源汽车中。如图3所示,该嵌入式设备可以包括内存10以及处理器20。该内存10中存储有接口函数101,该处理器20中部署有第一SWC 201以及第二SWC 202。其中,该处理器20可以为如图1所示的微控制器,也可以称为微控制单元(micro-controller unit;MCU)。该接口函数101可以用于实现该PSF014中任务编排模块0141的功能。该第一SWC 201可以用于实现该PSF 014中任务管理模块0142的功能,即该第一SWC 201主要用于实现任务的调度,因此该第一SWC 201也可以称为调度SWC或者主(master)SWC。该第二SWC 202用于执行任务,因此该第二SWC202也可以称为运行(worker)SWC。
本申请实施例提供的嵌入式设备,由于可以通过预先部署在处理器中的第一SWC和第二SWC实现任务的调度和执行,因此无需处理器在运行过程中实时创建进程或线程来调度执行任务,从而可有效降低任务的调度时延。
图4是本申请实施例提供的一种任务调度方法的流程图,该方法可以应用于如图3所示的嵌入式设备中。参考图4,该方法可以包括:
步骤401、接口函数获取待部署的算法的注册信息。
该算法可以包括多个任务,该注册信息可以包括:用于描述该多个任务之间的依赖关系的关系数据,以及每个任务的配置信息。该配置信息可以包括任务的属性信息、任务的资源依赖信息以及任务的调度约束信息等。
其中,任务的属性信息可以包括任务名以及任务的存储地址。在本申请实施例中,每个任务可以包括用于实现特定功能的一个或多个函数,该任务名即为函数名,任务的存储地址即为函数的存储地址,该存储地址可以采用函数指针表示。并且,该算法所包括的多个任务可以存储在嵌入式设备的存储器中。
该调度信息可以包括任务的资源依赖信息以及调度约束信息。该资源依赖信息可以包括:任务依赖的内存,以及处理器中用于执行该任务的计算单元的标识。该调度约束信息可以包括任务的启动时间以及任务启动后最大的运行时长。
可选的,在本申请实施例中,该待部署的算法可以为高级驾驶辅助系统(advanceddriving assistance system,ADAS)相关的算法。例如可以为毫米波雷达算法,该毫米波雷达算法可以用于实现检测(比如距离检测、速度检测或障碍物检测等)和追踪等功能。
需要说明的是,该嵌入式设备在启动后,处理器即可开始运行该内存中的接口函数,该接口函数进而可以实现上述步骤401所示的方法。
步骤402、接口函数根据关系数据生成多个任务的依赖关系图。
接口函数获取到该注册信息后,可以对该注册信息中的关系数据进行解析,并生成能够体现该多个任务之间的依赖关系的依赖关系图,该依赖关系图可以包括多个节点,每个节点用于指示一个任务。其中,该接口函数生成的依赖关系图可以为DAG。并且,该依赖关系图可以采用邻接链表或者邻接矩阵表示,即该依赖关系图可以采用邻接链表或者邻接矩阵的形式进行存储。
示例的,参考图5,假设该算法包括任务1至任务5共5个任务,该5个任务的依赖关系为:任务1无依赖任务(即任务1为该算法中的首个任务),任务2依赖于任务1,任务3依赖于任务2,任务4依赖于任务2和任务3,任务5依赖于任务4。则接口函数通过解析该5个任务的依赖关系,可以生成如图5所示的DAG。
步骤403、接口函数在内存中记录该依赖关系图中的每个节点与其所指示的任务的配置信息的映射关系,得到该算法的执行流图。
接口函数可以通过记录每个节点与其所指示的任务的配置信息的映射关系,将每个节点与其所指示的任务的配置信息相关联,从而得到该算法的执行流图。
在本申请实施例中,该嵌入式设备一般不支持文件系统,因此该接口函数可以采用目标数据结构直接在内存中存储该执行流图。该目标数据结构可以为JSON(JavaScriptobject notation,JS对象简谱)数据结构或者可扩展标记语言(extensible markuplanguage,XML)数据结构。相比于相关技术中采用配置文件的方式在磁盘中存储各个任务的依赖关系图,以及每个任务的配置信息,直接按照目标数据结构在内存中存储该执行流图,由于无需进行文件解析,因此可以有效提高执行流图的读取效率,进而降低任务的调度时延,例如任务的调度时延可以降低至微秒(us)级。
可选的,如前文所述,每个任务的配置信息可以包括:每个任务的属性信息以及每个任务的调度信息。相应的,如图6所示,生成该算法的执行流图的过程可以包括:
步骤4031、接口函数在内存中记录依赖关系图中的每个节点与其所指示的任务的属性信息的映射关系,得到算法的任务流图。
如图5所示,接口函数可以先将该依赖关系图中的每个节点与其所指示的任务的属性信息相关联,从而得到算法的任务流图。
步骤4032、接口函数在内存中记录该任务流图中的每个节点与其所指示的任务的调度信息的映射关系,得到算法的执行流图。
继续参考图5,接口函数可以将任务流图中的每个节点与其所指示的任务的调度信息相关联,从而得到能够被处理器中部署的第一SWC调度的执行流图。
需要说明的是,在本申请实施例中,接口函数在内存中记录的映射关系可以采用映射表的方式表示,即映射关系可以通过映射表的方式存储在内存中。
步骤404、第一SWC检测其是否满足实例创建条件。
在本申请实施例中,该处理器中部署的第一SWC可以按照预设的调度周期,周期性运行,即该处理器可以按照该调度周期,周期性触发该第一SWC。该第一SWC开始运行后,可以先检测当前是否满足实例创建条件。若该第一SWC确定满足实例创建条件,则可以继续执行步骤405;若该第一SWC确定不满足实例创建条件,则可以执行步骤406。
其中,该实例创建条件可以包括下述条件中的一种或多种:
第一SWC已创建的实例的总数小于数量阈值,该数量阈值为嵌入式设备的处理器能够并行运行的实例的个数上限;
该嵌入式设备中具备用于执行该算法中的任务的资源。
作为一种可选的实现方式,该第一SWC可以串行调度算法实例,即每个调度周期仅能够执行一个算法实例中的任务。在该实现方式中,该数量阈值可以为1。相应的,该实例创建条件可以为:第一SWC已创建的实例的总数小于1。也即是,第一SWC可以在检测到已创建的实例的个数为0时,执行步骤405。
作为另一种可选的实现方式,该第一SWC可以并行调度多个算法实例,即每个调度周期可以执行多个算法实例中的任务。因此在该实现方式中,该数量阈值可以为大于1的整数,例如可以为3或者5等。相应的,该实例创建条件可以包括第一SWC已创建的实例的总数小于数量阈值。其中,该并行调度的多个算法实例可以基于一个执行流图创建,也可以基于不同的执行流图创建,本申请实施例对此不做限定。
并且,为了确保算法实例的可靠运行,该实例创建条件还可以包括:该嵌入式设备中具备用于执行该执行流图中的任务的资源。
若该并行调度的多个算法实例基于一个执行流图创建,则在该实现方式中,第一SWC若检测到某个执行流图的算法实例已经创建,且该嵌入式设备中还具备能够执行该执行流图中的任务的资源,则第一SWC可以基于该执行流图再次创建一个算法实例,并调度执行该算法实例中的任务,以提高该算法的调度效率。
示例的,如图7所示,假设某个执行流图包括任务T1至T6共6个任务。第一SWC在第一个调度周期,基于该执行流图创建了算法实例1,并依次调度执行该算法实例1中的任务。若该第一SWC在第二个调度周期检测到算法实例1中的任务T1和T2已执行完成,任务T3正在执行,且检测到用于执行任务T1和T2的第二SWC所属的计算单元处于空闲状态,则可以基于该执行流图创建算法实例2,并可以执行该任务T1和任务T2。若该第一SWC在第三个调度周期检测到算法实例2中的任务T1已执行完成,任务T2正在执行,且用于执行任务T1的第二SWC所属的计算单元处于空闲状态,则第一SWC可以继续基于该执行流图创建算法实例3,并可以执行该任务T1。
通过并行调度多个算法实例,即流水执行算法实例,由于无需等待一个算法实例执行完成后再创建新的算法实例,因此不仅可以有效提高嵌入式设备的资源利用率,还可以有效缩短算法实例的执行周期,确保算法实例能够在规定的执行周期内执行完成。在毫米波雷达算法中可以显著缩短雷达上报目标的刷新时间。
步骤405、第一SWC基于该执行流图创建算法实例。
在本申请实施例中,第一SWC检测到满足实例创建条件后,即可通过接口函数提供的接口,从内存中查询执行流图,并基于该执行流图创建算法实例。其中,创建算法实例可以是指:获取执行流图的地址并保存。后续在调度算法实例时,只需要根据该地址索引执行流图中的数据即可。并且,该第一SWC还可以在内存中创建一个新的数据结构,用于记录各个任务的执行状态以及执行时间,其中执行时间包括任务的开始时间(也称为启动时间)和结束时间。
步骤406、第一SWC基于该算法实例检测该算法包括的多个任务中是否存在满足调度条件的目标任务。
在本申请实施例中,第一SWC在创建完成算法实例后,可以基于该算法实例轮询每个任务的配置信息,进而检测该多个任务中是否存在满足调度条件的目标任务。若第一SWC确定该算法包括的多个任务中存在满足调度条件的目标任务,则可以执行步骤407;若第一SWC确定该算法包括的多个任务中不存在满足调度条件的目标任务,则可以结束操作。
其中,该调度条件至少可以包括:任务所依赖的任务的状态为已完成状态。若每个任务的配置信息中还包括调度信息,且该调度信息包括资源依赖信息,则该调度条件还可以包括:嵌入式设备中该资源依赖信息指示的资源处于空闲状态,其中资源可以包括内存资源和计算资源,计算资源也即是处理器资源。若该调度信息还包括调度约束信息,则该调度条件还可以包括:当前运行环境满足该调度约束信息,例如,当前时间为任务的规定的启动时间。
结合上述步骤404和步骤405可知,第一SWC可以在创建了新的算法实例后,基于该算法实例检测该算法包括的多个任务中是否存在满足调度条件的目标任务。或者,第一SWC可以在检测到其不满足实例创建条件时,确定处理器中已经存在算法实例,因此可以直接检测该算法实例包括的多个任务中是否存在满足调度条件的目标任务。
步骤407、第一SWC将该目标任务调度至第二SWC。
在本申请实施例中,第一SWC确定出满足调度条件的目标任务后,即可将该目标任务调度至第二SWC执行。
可选的,该处理器中可以预先部署有多个第二SWC,每个第二SWC可以用于执行算法中的部分任务。在本申请实施例中,如图8所示,该处理器可以包括多个计算单元,每个计算单元可以是指一个处理器核。则该第一SWC可以部署在一个计算单元中,例如为了确保算法部署和调度的可靠性,该第一SWC可以部署在安全等级较高的计算单元中。每个第二SWC可以部署在一个计算单元中,该第二SWC与第一SWC部署于不同的计算单元,且每个计算单元可以部署一个或多个第二SWC。
相应的,如图9所示,第一SWC将目标任务调度至该第二SWC的过程可以包括:
步骤4071、第一SWC确定目标任务的标识。
每个任务的标识可以为该标任务的任务名,或者也可以是接口函数在获取到注册信息后,为每个任务唯一分配的标识(identification,ID)。
步骤4072、第一SWC根据该目标任务的标识,从多个第二SWC中确定用于执行该目标任务的目标第二SWC。
在本申请实施例中,第一SWC可以从执行流图中查询目标任务的配置信息,该配置信息中可以记录有用于执行该目标任务的计算单元的标识。第一SWC进而可以基于该目标任务的类型,以及预先存储的任务的类型与第二SWC的标识的对应关系,确定用于执行该目标任务的第二SWC。或者,第一SWC也可以直接从该目标任务的配置信息中确定用于执行该目标任务的目标第二SWC。
步骤4073、第一SWC将该目标任务的标识发送至该目标第二SWC。
第一SWC确定出目标第二SWC后,即可将目标任务的标识发送至该目标第二SWC。
步骤408、第二SWC执行该目标任务。
第二SWC接收到第一SWC调度的目标任务的标识后,即可根据该标识,查询该目标任务的配置信息,并确定该目标任务的存储地址,例如目标任务的函数指针。之后,第二SWC即可执行该目标任务。
步骤409、第二SWC向该第一SWC发送通知消息,该通知消息用于指示该目标任务已执行完成。
在该第二SWC执行完成该目标任务之后,即可向该第一SWC发送通知消息。可选的,在本申请实施例中,第一SWC与第二SWC之间的通信可以基于AUTOSAR中的RTE实现,例如RTE可以通过共享内存和核间中断的方式实现不同SWC之间的通信。
步骤410、第一SWC响应于该通知消息,将该目标任务的状态更新为已完成状态。
该第一SWC接收到第二SWC发送的通知消息后,即可响应于该通知消息,将该目标任务的状态更新为已完成状态。
可选的,在本申请实施例中,第一SWC还可以响应于该通知消息,继续执行步骤406,以检测该算法包括的多个任务中是否存在满足调度条件的目标任务。也即是,该第二SWC无需等到下一个调度周期,即可主动触发下一次任务调度。相比于按照调度周期,周期性执行任务调度,该主动触发的方式可以有效提高任务的调度效率。
需要说明的是,在本申请实施例中,处理器中部署的第二SWC的个数可以是根据待部署的算法的功能进行确定的。例如,假设待部署的算法可以划分为N个子功能,N为大于1的整数,且每个子功能由一个或多个任务实现,即每个子功能可以包括相同类型的一个或多个任务。则处理器中可以部署有对应于该N个子功能的N个第二SWC,每个第二SWC可以执行用于实现一个子功能的各个任务。该第一SWC则可以存储每个子功能(即任务的类型)与第二SWC的标识的对应关系。
综上所述,本申请实施例提供了一种任务调度方法,该方法可以通过接口函数获取并解析算法的注册信息,并可以通过SWC实现对算法中的任务的调度执行。该算法的部署以及任务的调度过程中,无需开发人员进行复杂的配置,有效简化了算法的部署流程,提高了算法的部署效率以及任务的调度效率。并且,由于该接口函数可以将解析得到的执行流图直接存储在内存中,使得SWC在创建算法实例时可以直接从内存中查询执行流图中的数据,而无需进行文件解析,因此有效减小了任务的调度时延。又由于该处理器中可以预先部署用于实现任务调度和执行的SWC,无需处理器在运行过程中实时创建进程或线程,因此也可以有效减小任务的调度时延。
基于上述分析可知,本申请实施例提供的任务调度方法的调度时延较小,调度效率较高,能够满足车载场景高实时性的要求。
图10是本申请实施例提供的一种第一SWC维护任务的状态的示意图。参考图10可以看出,该第一SWC可以在基于某个执行流图创建算法实例后,将该算法实例中的各个任务的状态均初始化为等待(waiting)状态。第一SWC在检测到某个任务所依赖的任务执行完成时,可以将该任务的状态更新为准备完成(ready)状态。之后,第一SWC可以在检测到该任务所依赖的资源空闲,即满足调度条件并将该任务调度至第二SWC执行后,将该任务的状态更新为运行(running)状态。若第一SWC检测到该任务处于等待状态、准备完成状态或运行状态中的任一状态的时长超过规定时长,则可以将该任务的状态更新为异常(abnormal)状态。并且,第一SWC在检测到复位指令时,可以将处于异常状态的任务的状态更新为等待状态。若第一SWC检测到某个任务正常运行结束,且未超时(即任务的执行时长未超过配置信息中规定的时长),则可以将该任务的状态更新为完成(finish)状态。该第一SWC还可以在检测到算法实例中的所有任务都执行完成(即所有任务的状态均为完成状态)时,将所有任务的状态均还原为等待状态。由于第一SWC可以在内存中记录每个任务的状态,因此在算法实例中的所有任务都执行完成后,将所有任务的状态均还原为等待状态,可以实现对内存的释放。
图11是本申请实施例提供的另一种任务调度方法的流程图,该方法可以应用于第一SWC。如图11所示,该方法可以包括:
步骤1101、检测算法实例是否处理完成。
在本申请实施例中,第一SWC创建完成算法实例后,在调度执行该算法实例中的任务之前,可以先检测该算法实例是否处理完成,例如可以检测该算法实例的状态是否为完成状态。若确定该算法实例处理完成,则第一SWC可以结束操作;若确定该算法实例未处理完成,则第一SWC可以继续执行步骤1102。
步骤1102、检测状态为完成状态的任务是否超时。
第一SWC可以继续检测该算法实例中,状态为完成状态的任务是否超时,即检测已执行完成的任务的执行时长是否超过配置信息中规定的最大的运行时长。若任务超时,则可以执行步骤1103;若任务未超时,则可以执行步骤1104。
步骤1103、更新算法实例的状态为异常状态。
第一SWC若检测到状态为完成状态的任务超时,则可以将该算法实例的状态更新为异常状态。
步骤1104、检测所有任务的状态是否均为完成状态。
第一SWC若检测到状态为完成状态的任务未超时,则可以继续检测所有任务的状态是否均为完成状态,即检测算法实例中的所有任务是否均执行完成。
若所有任务的状态均为完成状态,则可以执行步骤1105;若任一任务的状态不为完成状态,则可以执行步骤1106。
步骤1105、更新算法实例的状态为完成状态。
第一SWC若检测到算法实例中的所有任务的状态均为完成状态,则可以确定该算法实例中的所有任务均已执行完成,因此可以将算法实例的状态更新为完成状态。
步骤1106、更新所有处于运行状态的任务的运行时间。
第一SWC若检测到算法实例中任一任务的状态不为完成状态,则可以更新所有处于运行状态的任务的运行时长。
步骤1107、检测是否存在所依赖的任务的状态为执行完成的任务。
第一SWC更新处于运行状态的任务的运行时间后,可以继续检测算法实例中是否存在所依赖的任务的状态为执行完成的任务。若存在,则可以执行步骤1108;若不存在,则可以结束操作。该步骤1107的实现过程可以参考上述步骤406。
步骤1108、更新该任务的状态为准备完成状态。
第一SWC若检测到某个任务所依赖的所有任务均已执行完成,则可以将该任务的状态更新为准备完成状态。
步骤1109、将该任务调度至第二SWC执行。
第一SWC进而可以将准备完成状态的任务调度至第二SWC执行。该步骤1109的实现过程可以参考上述步骤407和步骤408。
步骤1110、更新该任务的状态为运行状态。
第一SWC将任务调度至第二SWC后,可以更新该任务的状态为运行状态。
图12是本申请实施例提供的一种创建算法实例的方法流程图,该方法可以应用于第一SWC。如图12所示,该方法可以包括:
步骤1201、根据算法配置信息获取执行流图的类型。
第一SWC在检测到满足实例创建条件后,可以先根据内存中的算法配置信息确定其所能够创建实例的执行流图的类型。其中,该算法配置信息可以是开发人员预先写入内存的,或者也可以是外部配置的。
步骤1202、根据执行流图的类型创建对应类型的算法实例。
第一SWC可以根据确定出的执行流图的类型,从内存中查询相同类型的执行流图,并基于该类型的执行流图创建算法实例。
步骤1203、初始化算法实例中的任务为等待状态。
第一SWC创建完成算法实例后,即可将该算法实例中的所有任务的状态均初始化为等待状态。
步骤1204、生效系统配置参数。
第一SWC初始化任务的状态后,可以生效系统配置参数。例如,对于毫米波雷达算法,该系统配置参数可以包括雷达的安装位置,以及雷达的外部配置参数等。
综上所述,本申请实施例提供的方法在该AUTOSAR的应用层011和RTE层012之间增加了PSF 014,该PSF 014可以统一管理上层算法中的任务的调度执行,从而可以实现如下有益效果:
1、算法与AUTOSAR原有框架的解耦,即PSF统一负责算法的注册与执行,算法对AUTOSAR的框架无感知,算法的变动不需要重新配置AUTOSAR,从而有效提高了AUTOSAR的可扩展性与可演进性。
2、算法部署和更新简单,只需要更新注册表并调用PSF注册接口就可以完成算法注册。并且,PSF支持动态注册。
3、算法对任务的执行时序和状态无感知,从而可以避免不必要的任务唤醒休眠带来的性能损耗。
4、充分利用了嵌入式设备的底层硬件资源,缩短了算法执行周期。由于PSF可以通过流水调度的方式,支持多个算法实例同时执行,在前一个算法实例还没有执行完时,启动下一轮算法实例,从而可以缩短算法的执行周期。
本申请实施例还提供了一种嵌入式设备,该嵌入式设备采用AUTOSAR,且如图3所示,该嵌入式设备包括内存10和处理器20,该内存10中存储有接口函数101,该处理器20中部署有第一SWC 201以及第二SWC 202。
该接口函数101可以用于:
获取待部署的算法的注册信息,该算法包括多个任务,该注册信息包括:用于描述该多个任务之间的依赖关系的关系数据,以及每个任务的配置信息;
根据该关系数据生成该多个任务的依赖关系图,该依赖关系图包括多个节点,每个节点用于指示一个该任务;
在该内存中记录该依赖关系图中的每个节点与其所指示的任务的配置信息的映射关系,得到该算法的执行流图。
该第一SWC 201可以用于:基于该执行流图创建算法实例,以及基于该算法实例,将该算法包括的多个任务中满足调度条件的目标任务调度至该第二SWC 202;
该第二SWC 202,可以用于执行该目标任务。
其中,该接口函数101的功能实现可以参考上述方法实施例中步骤401至步骤403的相关描述;该第一SWC 201的功能实现可以参考上述方法实施例中步骤405和步骤407的相关描述;该第二SWC 202的功能实现可以参考上述方法实施例中步骤408的相关描述。
可选的,该第一SWC 201可以用于:
若确定其满足实例创建条件,则基于该执行流图创建算法实例,其中,该实例创建条件包括下述条件中的一种或多种:已创建的实例的总数小于数量阈值;该嵌入式设备中具备执行该算法中的任务所需的资源。
该第一SWC 201的功能实现还可以参考上述方法实施例中步骤404的相关描述;
可选的,该处理器中可以部署有多个第二SWC 202;该第一SWC 201可以用于:
基于该算法实例,从该算法包括的多个任务中确定满足调度条件的目标任务的标识;根据该目标任务的标识,从多个第二SWC中确定用于执行该目标任务的目标第二SWC;将该目标任务的标识发送至该目标第二SWC。
该第一SWC 201的功能实现还可以参考上述方法实施例中步骤4071至步骤4073的相关描述。
可选的,该第二SWC 202还可以用于:在执行完成该目标任务之后,向该第一SWC201发送通知消息,该通知消息用于指示该目标任务已执行完成。
相应的,该第一SWC 201,还可以用于响应于该通知消息,将该目标任务的状态更新为已完成状态。
该第二SWC 202的功能实现还可以参考上述方法实施例中步骤409的相关描述。该第一SWC 201的功能实现还可以参考上述方法实施例中步骤410的相关描述。
可选的,该第一SWC 201还可以用于:响应于该通知消息,基于该算法实例检测该算法包括的多个任务中是否存在满足调度条件的目标任务。
可选的,该调度条件可以包括:该嵌入式设备中具备执行该任务所需的资源,且该任务所依赖的任务的状态为已完成状态。
可选的,该配置信息可以包括:每个任务的属性信息以及每个任务的调度信息;该接口函数101可以用于:
在该内存中记录该依赖关系图中的每个节点与其所指示的任务的属性信息的映射关系,得到该算法的任务流图;
在该内存中记录该任务流图中的每个节点与其所指示的任务的调度信息的映射关系,得到该算法的执行流图。
该接口函数101的功能实现还可以参考上述方法实施例中步骤4031和步骤4032的相关描述。
综上所述,本申请实施例提供了一种嵌入式设备,该嵌入式设备可以通过内存中的接口函数获取并解析算法的注册信息,并可以通过处理器中部署的SWC实现对算法中的任务的调度执行。该算法的部署以及任务的调度过程中,无需开发人员进行复杂的配置,有效简化了算法的部署流程,提高了算法的部署效率以及任务的调度效率。并且,由于该接口函数可以将解析得到的执行流图直接存储在内存中,使得SWC在创建算法实例时可以直接从内存中查询执行流图中的数据,而无需进行文件解析,因此有效减小了任务的调度时延。又由于该处理器中可以预先部署用于实现任务调度和执行的SWC,无需处理器在运行过程中实时创建进程或线程,因此也可以有效减小任务的调度时延。
应理解的是,本申请实施例提供的嵌入式设备可以用专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
图13是本申请实施例提供的另一种嵌入式设备的结构示意图,参考图13,该嵌入式设备可以包括:处理器1301、内存1302、存储器1303、网络接口1304和总线1305。其中,总线1305用于连接处理器1301、内存1302、存储器1303和网络接口1304。通过网络接口1304(可以是有线或者无线)可以实现与其他器件之间的通信连接。存储器1303中存储有计算机程序13031,该计算机程序13031用于实现各种应用功能。
应理解,在本申请实施例中,处理器1301可以是CPU,该处理器1301还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、GPU或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
存储器1303可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
总线1305除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线1305。
处理器1301被配置为执行内存1302中的接口函数,以及存储器1303中存储的计算机程序,处理器1301通过执行该接口函数和计算机程序13031来实现上述方法实施例所示的方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该计算机可读存储介质在嵌入式设备上运行时,使得计算机执行如上述方法实施例所示的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在嵌入式设备上运行时,使得计算机执行上述方法实施例所示的方法。
本申请实施例还提供了一种芯片,该芯片包括可编程逻辑电路和/或程序指令,当该芯片运行时用于实现如上述方面所提供的任务调度方法。
应当理解的是,在本申请实施例中提及的“和/或”,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种任务调度方法,其特征在于,应用于采用汽车开放系统架构AUTOSAR的嵌入式设备,所述嵌入式设备包括内存和处理器,所述内存中存储有接口函数,所述处理器中部署有第一软件组件以及第二软件组件;所述方法包括:
所述接口函数获取待部署的算法的注册信息,所述算法包括多个任务,所述注册信息包括:用于描述所述多个任务之间的依赖关系的关系数据,以及每个所述任务的配置信息;
所述接口函数根据所述关系数据生成所述多个任务的依赖关系图,所述依赖关系图包括多个节点,每个所述节点用于指示一个所述任务;
所述接口函数在所述内存中记录所述依赖关系图中的每个所述节点与其所指示的任务的配置信息的映射关系,得到所述算法的执行流图;
所述第一软件组件基于所述执行流图创建算法实例;
所述第一软件组件基于所述算法实例,将所述算法包括的多个任务中满足调度条件的目标任务调度至所述第二软件组件;
所述第二软件组件执行所述目标任务。
2.根据权利要求1所述的方法,其特征在于,所述第一软件组件基于所述执行流图创建算法实例,包括:
若所述第一软件组件确定其满足实例创建条件,则基于所述执行流图创建算法实例,其中,所述实例创建条件包括下述条件中的一种或多种:
所述第一软件组件已创建的实例的总数小于数量阈值;
所述嵌入式设备中具备执行所述算法中的任务所需的资源。
3.根据权利要求1或2所述的方法,其特征在于,所述处理器中部署有多个所述第二软件组件;所述第一软件组件基于所述算法实例,将所述算法包括的多个任务中满足调度条件的目标任务调度至所述第二软件组件,包括:
所述第一软件组件基于所述算法实例,从所述算法包括的多个任务中确定满足调度条件的目标任务的标识;
所述第一软件组件根据所述目标任务的标识,从多个所述第二软件组件中确定用于执行所述目标任务的目标第二软件组件;
所述第一软件组件将所述目标任务的标识发送至所述目标第二软件组件。
4.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
在所述第二软件组件执行完成所述目标任务之后,所述第二软件组件向所述第一软件组件发送通知消息,所述通知消息用于指示所述目标任务已执行完成;
所述第一软件组件响应于所述通知消息,将所述目标任务的状态更新为已完成状态。
5.根据权利要求4所述的方法,其特征在于,在所述第一软件组件基于所述算法实例将所述算法中满足调度条件的目标任务调度至所述第二软件组件之前,所述方法还包括:
所述第一软件组件响应于所述通知消息,基于所述算法实例检测所述算法包括的多个任务中是否存在满足调度条件的目标任务。
6.根据权利要求1至5任一所述的方法,其特征在于,所述调度条件包括:
所述嵌入式设备中具备执行所述任务所需的资源,且所述任务所依赖的任务的状态为已完成状态。
7.根据权利要求1至6任一所述的方法,其特征在于,所述配置信息包括:每个所述任务的属性信息以及每个所述任务的调度信息;
所述接口函数在所述内存中记录所述依赖关系图中的每个所述节点与其所指示的任务的配置信息的映射关系,得到所述算法的执行流图,包括:
所述接口函数在所述内存中记录所述依赖关系图中的每个所述节点与其所指示的任务的属性信息的映射关系,得到所述算法的任务流图;
所述接口函数在所述内存中记录所述任务流图中的每个所述节点与其所指示的任务的调度信息的映射关系,得到所述算法的执行流图。
8.一种嵌入式设备,其特征在于,所述嵌入式设备采用汽车开放系统架构AUTOSAR,所述嵌入式设备包括内存和处理器,所述内存中存储有接口函数,所述处理器中部署有第一软件组件以及第二软件组件;
所述接口函数用于:
获取待部署的算法的注册信息,所述算法包括多个任务,所述注册信息包括:用于描述所述多个任务之间的依赖关系的关系数据,以及每个所述任务的配置信息;
根据所述关系数据生成所述多个任务的依赖关系图,所述依赖关系图包括多个节点,每个所述节点用于指示一个所述任务;
在所述内存中记录所述依赖关系图中的每个所述节点与其所指示的任务的配置信息的映射关系,得到所述算法的执行流图;
所述第一软件组件用于:基于所述执行流图创建算法实例,以及基于所述算法实例,将所述算法包括的多个任务中满足调度条件的目标任务调度至所述第二软件组件;
所述第二软件组件用于执行所述目标任务。
9.根据权利要求8所述的设备,其特征在于,所述第一软件组件用于:
若确定其满足实例创建条件,则基于所述执行流图创建算法实例,其中,所述实例创建条件包括下述条件中的一种或多种:
已创建的实例的总数小于数量阈值;
所述嵌入式设备中具备执行所述算法中的任务所需的资源。
10.根据权利要求8或9所述的设备,其特征在于,所述处理器中部署有多个所述第二软件组件;所述第一软件组件,用于:
基于所述算法实例,从所述算法包括的多个任务中确定满足调度条件的目标任务的标识;
根据所述目标任务的标识,从多个所述第二软件组件中确定用于执行所述目标任务的目标第二软件组件;
将所述目标任务的标识发送至所述目标第二软件组件。
11.根据权利要求8至10任一所述的设备,其特征在于,所述第二软件组件还用于:
在执行完成所述目标任务之后,向所述第一软件组件发送通知消息,所述通知消息用于指示所述目标任务已执行完成;
所述第一软件组件,还用于响应于所述通知消息,将所述目标任务的状态更新为已完成状态。
12.根据权利要求11所述的设备,其特征在于,所述第一软件组件还用于:
响应于所述通知消息,基于所述算法实例检测所述算法包括的多个任务中是否存在满足调度条件的目标任务。
13.根据权利要求8至12任一所述的设备,其特征在于,所述调度条件包括:
所述嵌入式设备中具备执行所述任务所需的资源,且所述任务所依赖的任务的状态为已完成状态。
14.根据权利要求8至13任一所述的设备,其特征在于,所述配置信息包括:每个所述任务的属性信息以及每个所述任务的调度信息;所述接口函数用于:
在所述内存中记录所述依赖关系图中的每个所述节点与其所指示的任务的属性信息的映射关系,得到所述算法的任务流图;
在所述内存中记录所述任务流图中的每个所述节点与其所指示的任务的调度信息的映射关系,得到所述算法的执行流图。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述计算机可读存储介质在嵌入式设备上运行时,使得嵌入式设备执行如权利要求1至8任一所述的方法。
16.一种芯片,其特征在于,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时用于实现如权利要求1至8任一所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/082729 WO2021196074A1 (zh) | 2020-04-01 | 2020-04-01 | 任务调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112513814A true CN112513814A (zh) | 2021-03-16 |
CN112513814B CN112513814B (zh) | 2021-11-30 |
Family
ID=74953142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080004240.2A Active CN112513814B (zh) | 2020-04-01 | 2020-04-01 | 任务调度方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230025917A1 (zh) |
EP (1) | EP4120076A4 (zh) |
CN (1) | CN112513814B (zh) |
WO (1) | WO2021196074A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641482A (zh) * | 2021-08-31 | 2021-11-12 | 联通(广东)产业互联网有限公司 | Ai算法离线调度方法、系统、计算机设备及存储介质 |
CN113688026A (zh) * | 2021-09-30 | 2021-11-23 | 中汽创智科技有限公司 | 一种数据模拟仿真方法、装置、设备及存储介质 |
CN115242565A (zh) * | 2021-04-22 | 2022-10-25 | 华为技术有限公司 | 一种基于autosar实现dds通信的系统架构、通信方法及设备 |
WO2023036091A1 (zh) * | 2021-09-10 | 2023-03-16 | 北京车和家信息技术有限公司 | 数据传输方法、装置、设备和存储介质 |
CN116382896A (zh) * | 2023-02-27 | 2023-07-04 | 荣耀终端有限公司 | 图像处理算法的调用方法、终端设备、介质及产品 |
CN116634208A (zh) * | 2023-07-26 | 2023-08-22 | 合肥英特灵达信息技术有限公司 | 一种业务算法调度方法、系统、装置、终端及存储介质 |
CN117311950A (zh) * | 2023-11-28 | 2023-12-29 | 宁德时代新能源科技股份有限公司 | 任务处理方法、任务处理装置、电子设备及存储介质 |
WO2024067491A1 (zh) * | 2022-09-26 | 2024-04-04 | 华为技术有限公司 | 电子装置、分布式系统以及任务调度方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200226067A1 (en) * | 2020-03-24 | 2020-07-16 | Intel Corporation | Coherent multiprocessing enabled compute in storage and memory |
CN114153608A (zh) * | 2021-11-30 | 2022-03-08 | 中汽创智科技有限公司 | 基于自动驾驶的调度方法、装置、车载终端及存储介质 |
CN115454595A (zh) * | 2022-09-01 | 2022-12-09 | 广州南方智能技术有限公司 | 一种算法程序的自动化调度系统、方法及存储介质 |
CN116501503B (zh) * | 2023-06-27 | 2023-09-15 | 上海燧原科技有限公司 | 负载任务的架构映射方法、装置、计算机设备及介质 |
CN116860421A (zh) * | 2023-09-05 | 2023-10-10 | 中信消费金融有限公司 | 任务处理方法及任务处理系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257904A (zh) * | 2013-04-24 | 2013-08-21 | 上海交通大学 | 优化众核系统修复性能的运算流图映射方法及装置 |
US9135065B1 (en) * | 2011-08-31 | 2015-09-15 | The Mathworks, Inc. | Parallel processing of multidimensional arrays |
CN106897132A (zh) * | 2017-02-27 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种服务器任务调度的方法以及装置 |
CN109445926A (zh) * | 2018-11-09 | 2019-03-08 | 杭州玳数科技有限公司 | 数据任务调度方法及数据任务调度系统 |
CN109743390A (zh) * | 2019-01-04 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
-
2020
- 2020-04-01 WO PCT/CN2020/082729 patent/WO2021196074A1/zh unknown
- 2020-04-01 EP EP20928698.8A patent/EP4120076A4/en active Pending
- 2020-04-01 CN CN202080004240.2A patent/CN112513814B/zh active Active
-
2022
- 2022-09-30 US US17/957,940 patent/US20230025917A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135065B1 (en) * | 2011-08-31 | 2015-09-15 | The Mathworks, Inc. | Parallel processing of multidimensional arrays |
CN103257904A (zh) * | 2013-04-24 | 2013-08-21 | 上海交通大学 | 优化众核系统修复性能的运算流图映射方法及装置 |
CN106897132A (zh) * | 2017-02-27 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种服务器任务调度的方法以及装置 |
CN109445926A (zh) * | 2018-11-09 | 2019-03-08 | 杭州玳数科技有限公司 | 数据任务调度方法及数据任务调度系统 |
CN109743390A (zh) * | 2019-01-04 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
谢勇,等;: "最优的FlexRay静态段配置算法", 《通信学报》 * |
谢国琪,: "面向汽车的异构网络化嵌入式系统多DAG调度研究", 《中国博士学位论文全文数据库工程科技II辑(月刊)》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242565A (zh) * | 2021-04-22 | 2022-10-25 | 华为技术有限公司 | 一种基于autosar实现dds通信的系统架构、通信方法及设备 |
CN115242565B (zh) * | 2021-04-22 | 2023-12-15 | 华为技术有限公司 | 一种基于autosar实现dds通信的系统架构、通信方法及设备 |
CN113641482B (zh) * | 2021-08-31 | 2024-03-22 | 联通(广东)产业互联网有限公司 | Ai算法离线调度方法、系统、计算机设备及存储介质 |
CN113641482A (zh) * | 2021-08-31 | 2021-11-12 | 联通(广东)产业互联网有限公司 | Ai算法离线调度方法、系统、计算机设备及存储介质 |
WO2023036091A1 (zh) * | 2021-09-10 | 2023-03-16 | 北京车和家信息技术有限公司 | 数据传输方法、装置、设备和存储介质 |
CN113688026A (zh) * | 2021-09-30 | 2021-11-23 | 中汽创智科技有限公司 | 一种数据模拟仿真方法、装置、设备及存储介质 |
CN113688026B (zh) * | 2021-09-30 | 2024-04-05 | 中汽创智科技有限公司 | 一种数据模拟仿真方法、装置、设备及存储介质 |
WO2024067491A1 (zh) * | 2022-09-26 | 2024-04-04 | 华为技术有限公司 | 电子装置、分布式系统以及任务调度方法 |
CN116382896A (zh) * | 2023-02-27 | 2023-07-04 | 荣耀终端有限公司 | 图像处理算法的调用方法、终端设备、介质及产品 |
CN116382896B (zh) * | 2023-02-27 | 2023-12-19 | 荣耀终端有限公司 | 图像处理算法的调用方法、终端设备、介质及产品 |
CN116634208A (zh) * | 2023-07-26 | 2023-08-22 | 合肥英特灵达信息技术有限公司 | 一种业务算法调度方法、系统、装置、终端及存储介质 |
CN117311950A (zh) * | 2023-11-28 | 2023-12-29 | 宁德时代新能源科技股份有限公司 | 任务处理方法、任务处理装置、电子设备及存储介质 |
CN117311950B (zh) * | 2023-11-28 | 2024-04-26 | 宁德时代新能源科技股份有限公司 | 任务处理方法、任务处理装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4120076A4 (en) | 2023-04-05 |
EP4120076A1 (en) | 2023-01-18 |
WO2021196074A1 (zh) | 2021-10-07 |
US20230025917A1 (en) | 2023-01-26 |
CN112513814B (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112513814B (zh) | 任务调度方法及装置 | |
CN111176802B (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN110704186B (zh) | 基于混合分布架构的计算资源分配方法、装置和存储介质 | |
US20190324772A1 (en) | Method and device for processing smart contracts | |
US9652314B2 (en) | Dynamic application programming interface publication for providing web services | |
US7779043B2 (en) | Extensible mechanism for object composition | |
WO2017071266A1 (zh) | 一种业务和资源编排的系统、方法及装置 | |
US11379260B2 (en) | Automated semantic tagging | |
CN110309029A (zh) | 异常数据的采集方法、装置、计算机设备和存储介质 | |
CN111596927B (zh) | 服务部署方法、装置及电子设备 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
EP3724776A1 (en) | Method, function manager and arrangement for handling function calls | |
CN111459629A (zh) | 基于Azkaban的项目运行方法、装置及终端设备 | |
CN112527459B (zh) | 一种基于Kubernetes集群的日志分析方法及装置 | |
CN110417597B (zh) | 用于监控证书的方法及装置、电子设备和可读存储介质 | |
CN114840221A (zh) | 云服务器部署方法、装置、系统、存储介质及计算机设备 | |
CN114677114A (zh) | 基于图形拖拽的审批流程生成方法及装置 | |
Padmanabhan | Test path identification for internet of things using transaction based specification | |
CN117331565A (zh) | 软件生成方法、装置、计算机设备及存储介质 | |
CN115033251A (zh) | 软件部署方法、装置、电子设备和存储介质 | |
CN116700827A (zh) | 一种枚举类数据的加载方法、装置及介质 | |
CN115562749A (zh) | 一种平台底层的异步调用方法、装置及计算机设备 | |
CN116700754A (zh) | 一种基于json动态配置的流程编排方法及系统 | |
CN118051298A (zh) | 确定应用程序是否可容器化的方法、装置、设备及介质 | |
CN118093111A (zh) | 任务调度方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |