【技术实现步骤摘要】
一种多模块调度方法、装置及系统
本专利技术涉及计算机科学领域,特别涉及一种多模块调度方法、装置及系统。
技术介绍
目前在深度学习领域中,在一个学习任务中会设置许多学习模块。通常采用如下的技术方案实现多模块调度:将每一个模块封装成一个进程,模块之间依靠进程之间的socket通信机制,通过发布和订阅消息来获取需要的输入数据和发送输出数据。该方案的优点在于,各进程可以实现跨机通信,每个模块所在的进程可以分布在不同机器间,无需改变系统架构。以自动驾驶技术中的深度学习任务为例,如图1所示,单机1上运行如下模块:摄像头1、车辆检测1、车辆追踪1、摄像头2、车辆检测2、车辆追踪2、融合1,单机2上运行如下模块:摄像头3、车辆检测3、车辆追踪3和分割5,这些模块均被封装为单独的进程,车辆检测1获取摄像头1输出的数据第一帧图像P11,对数据P11进行处理后,输出数据P11’,车辆跟踪1获取摄像头1输出的数据P11和车辆检测1输出的数据P11’,对数据P11和P11’进行处理,得到数据G11。同理,车辆检测2和车辆追踪2,以及车辆检测3和车辆追踪3具有与上述相类似的处理,并且分别得到 ...
【技术保护点】
1.一种多模块调度方法,其特征在于,包括:主进程读取预存的配置文件,配置文件中保存有一个有向计算图;其中,有向计算图与一个计算任务相对应,计算任务包括多个从进程,每个从进程包括按照计算方向组合的多个计算模块;有向计算图中包括多个节点,每个节点对应一个从进程中的一个计算模块,节点之间具有连接边,进入节点的连接边为输入边,离开节点的连接边为输出边;主进程在当前计算周期中,在计算开始时初始化全部节点和全部连接边的状态;根据有向计算图中的计算方向以及节点的状态确定待调用节点,其中,待调用节点包括节点的多个输入边均为完成状态的节点;向待调用节点对应的从进程中的计算模块发送远程过程调用 ...
【技术特征摘要】
1.一种多模块调度方法,其特征在于,包括:主进程读取预存的配置文件,配置文件中保存有一个有向计算图;其中,有向计算图与一个计算任务相对应,计算任务包括多个从进程,每个从进程包括按照计算方向组合的多个计算模块;有向计算图中包括多个节点,每个节点对应一个从进程中的一个计算模块,节点之间具有连接边,进入节点的连接边为输入边,离开节点的连接边为输出边;主进程在当前计算周期中,在计算开始时初始化全部节点和全部连接边的状态;根据有向计算图中的计算方向以及节点的状态确定待调用节点,其中,待调用节点包括节点的多个输入边均为完成状态的节点;向待调用节点对应的从进程中的计算模块发送远程过程调用(RPC)的调用请求以执行该计算模块;在收到针对调用请求的应答响应后,更新该节点的状态和该节点的输出边的状态;在确定全部节点的状态更新结束后,进行下一个计算周期的处理。2.根据权利要求1所述的方法,其特征在于,主进程包括主线程和线程池,线程池中包括多个从线程;节点的状态包括:未就绪(unready)、就绪(ready)、运行(run)和结束(done);连接边的状态包括:未完成(uncomplete)和完成(complete)。3.根据权利要求2所述的方法,其特征在于,主进程在当前计算周期中,在计算开始时初始化全部节点和全部连接边的状态,包括:在计算起始时,主线程判断有向计算图中所有节点的状态是否为done状态;在判断为是的情况下,将有向计算图中起始节点的状态重置为ready,其它节点的状态设置为unready,并将所有的连接边的状态设置为uncomplete;在判断为否的情况下,主线程将自身的状态设置为等待。4.根据权利要求2所述的方法,其特征在于,根据有向计算图中的计算方向以及节点的状态确定待调用节点,包括:在计算起始时,在初始化全部节点和全部连接边的状态后,主线程根据计算方向遍历有向计算图中的各个节点的状态,将状态为ready的节点确定为待调用的节点,其中,状态为ready的节点包括起始节点;将待调用节点的状态修改为run,并将待调用节点推送到计算队列中,并且主线程进行下一个计算周期的处理;或者,在计算过程中,线程池中的一个从线程根据计算方向遍历有向计算图中的各个节点的状态,将状态为ready的节点确定为待调用节点,其中,状态为ready的节点包括节点的多个输入边均为complete状态的节点,将待调用节点的状态修改为run,并将待调用节点推送到计算队列中。5.根据权利要求4所述的方法,其特征在于,向待调用的节点对应的从进程中的计算模块发送RPC的调用请求以执行该计算模块,包括:线程池中的一个从线程从计算队列中取出一个节点,向该节点对应的从进程中的计算模块发送RPC的调用请求。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:根据预存的配置文件,线程池中的一个从线程确定从计算队列中取出的节点所对应的计算模块的标识、以及计算模块的输入数据的存储地址和/或输出数据的存储地址,将该计算模块的标识、输入数据的存储地址和/或输出数据的存储地址以及携带在调用请求中。7.根据权利要求6所述的方法,其特征在于,计算模块的输出数据的存储地址是计算模块所在的从进程所对应的共享存储空间中的地址,该地址与计算模块相对应;或者,输出数据的存储地址是另一个从进程所应对的共享存储空间中的地址,该地址与计算模块相对应。8.根据权利要求6所述的方法,其特征在于,计算模块的输入数据的存储地址是计算模块所在的从进程所对应的共享存储空间中的地址。9.根据权利要求2所述的方法,其特征在于,在收到针对调用请求的应答响应后,更新该节点的状态和该节点的输出边的状态,包括:线程池中的一个从线程在收到针对一个节点所发出的调用请求的应答响应后,将该节点的状态设置为done,将该节点的输出边的状态修改为complete,并且将所有输入边均为complete的节点的状态设置为ready。10.根据权利要求2所述的方法,其特征在于,在确定全部节点的状态更新结束时,进行下一个计算周期的处理,包括:线程池中的一个从线程遍历有向计算图中的各个节点的状态,在确定有向计算图中所有节点的状态为done的情况下,通知(Notify)处于等待状态的主线程进行下一个计算周期的处理。11.一种多模块调度方法,其特征在于,包括:在当前计算周期中,从进程中的一个计算模块接收来自主进程的远程过程调用(RPC)的调用请求;其中,从进程中包括根据计算方向组合的多个计算模块;对于具有多个输入数据的计算模块,调用请求是主进程在确定计算模块的多个输入数据都已就绪的情况下发出的;该计算模块响应于调用请求执行处理;在处理执行完成后,计算模块向主进程反馈应答响应。12.根据权利要求11所述的方法,其特征在于,所述方法还包括:接收到的调用请求中包括计算模块的标识、输入数据的存储地址和/或输出数据的存储地址;则,计算模块响应于调用请求执行处理,包括:计算模块响应于调用请求,从输入数据的存储地址读取输入数据执行处理,并将输出数据写入到输出数据的存储地址中。13.根据权利要求12所述的方法,其特征在于,输出数据的存储地址是从进程所对应的共享存储空间中的地址,该地址与计算模块相对应;或者,输出数据的存储地址是另一个从进程所应对的共享存储空间中的地址,该地址与计算模块相对应。14.根据权利要求12所述的方法,其特征在于,输入数据的存储地址是从进程所对应的共享存储空间中的地址。15.根据权利要求11所述的方法,其特征在于,计算模块是一个服务(Service)函数。16.一种多模块调度装置,其特征在于,包括:读取模块,用于读取预存的配置文件,配置文件中保存有一个有向计算图;其中,有向计算图与一个计算任务相对应,计算任务包括多个从进程,每个从进程包括按照计算方向组合的多个计算模块;有向计算图中包括多个节点,每个节点对应一个从进程中的一个计算模块,节点之间具有连接边,进入节点的连接边为输入边,离开节点的连接边为输出边;执行模块,用于在当前计算周期中,在计算开始时初始化全部节点和全部连接边的状态;根据有向计算图中的计算方向以及节点的状态确定待调用节点,其中,待调用节点包括节点的多个输入边均为完成状态的节点;向待调用的节点对应的从进程中的计算模块发送远程过程调用(RPC)的调用请求以执行该计算模块;在收到针对调用请求的应答响应后,更新该节点的状态和该节点的输出边的状态;在确定全部节点的状态更新结束时,进行下一个计算周期的处理。17.根据权利要求16所述的装置,其特征在于,执行模块包括主线程模块和线程池模块,线程池模块中包括多个从线程模块;节点的状态包括:未就绪(unready)、就绪(ready)、运行(run)和结束(done);连接边的状态包括:未完成(uncomplete)和完成(complete)。18.根据权利要求16所述的装置,其特征在于,执行模块在在当前计算周期中,在计算开始时初始化全部节点和全部连接边的状态,包括:在计算起始时,主线程模块判断有向计算图中所有节点的状态是否为done状态;在判断为是的情况下,将有向计算图中起始节点的状态重置为ready,其它节点的状态设置为unready,并将所有的连接边的状态设置为uncomplete;在判断为否的情况下,主线程模块将自身的状态设置为等待。19.根据权利要求17所述的装置,其特征在于,执行模块根据有向计算图中的计算方向以及节点的状态确定待调用节点,包括:在计算起始时,在初始化全部节点和全部连接边的状态后,主线程模块根据计算方向遍历有向计算图中的各个节点的状态,将状态为ready的节点确定为待调用的节点,其中,状态为ready的节点包括起始节点;将待调用节点的状态修改为run,并待调用节点推送到计算队列中,并且主线程模块进行下一个计算周期的处理;或者,在计算过程中,线程池模块中的一个从线程模块根据计算方向遍历有向计算图中的各个节点的状态,将状态为ready的节点确定为待调用节点,其中,状态为ready的节点包括节点的多个输入边均为complete状态的节点,将待调用节点的状态修改为run,并待调用节点推送到计算队列中。20.根据权利要求19所述的装置,其特征在于,执行模块向待调用的节点对应的从进程中的计算模块发送RPC的调用请求以执行该计算模块,包括:线程池模块中的一个从线程模块从计算队列中取出一个节点,向该节点对应的从进程中的计算模块发送RPC的调用请求。21.根据权利要求20所述的装置,其特征在于,从线程模块还用于:根据预存的配置文件,确定从计算队列中取出的节点所对应的计算模块的标识、以及计算模块的输入数据的存储地址和/或输出数据的存储地址,将该计算模块的标识、输入数据的存储地址和/或输出数据的存储地址以及携带在调用请求中;其中,计算模块的输出数据的存储地址是计算模块所在的从进程所对应的共享存储空间中的地址,该地址与计算模块相对应;或者,输出数据的存储地址是另一个从进程所应对的共享存储...
【专利技术属性】
技术研发人员:龚轶凡,刘思远,李定华,靳江明,苏磊,杨宜欣,刘伟,黄泽铧,
申请(专利权)人:北京图森未来科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。