CN114489867A - 算法模块调度方法、算法模块调度装置以及可读存储介质 - Google Patents

算法模块调度方法、算法模块调度装置以及可读存储介质 Download PDF

Info

Publication number
CN114489867A
CN114489867A CN202210412394.6A CN202210412394A CN114489867A CN 114489867 A CN114489867 A CN 114489867A CN 202210412394 A CN202210412394 A CN 202210412394A CN 114489867 A CN114489867 A CN 114489867A
Authority
CN
China
Prior art keywords
algorithm
module
algorithm module
task queue
queue
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
Application number
CN202210412394.6A
Other languages
English (en)
Other versions
CN114489867B (zh
Inventor
殷俊
黄鹏
岑鑫
虞响
吴立
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN202210412394.6A priority Critical patent/CN114489867B/zh
Publication of CN114489867A publication Critical patent/CN114489867A/zh
Priority to PCT/CN2022/114395 priority patent/WO2023201947A1/en
Application granted granted Critical
Publication of CN114489867B publication Critical patent/CN114489867B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Processing (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请提供一种算法模块调度方法、算法模块调度装置以及计算机可读存储介质。该算法模块调度方法包括:获取配置文件,其中,所述配置文件包括若干具有前后结果顺序依赖关系的算法模块;利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级;按照所述若干算法模块的优先级创建任务队列;基于任务队列中的队列位置前后关系调度算法模块处理数据。通过上述方式,算法模块调度方法实现自适应的任务优先级标记和队列排序,提高了算法方案的整体处理效率以及防止算法方案卡死。

Description

算法模块调度方法、算法模块调度装置以及可读存储介质
技术领域
本申请涉及算法模型处理技术领域,特别是涉及一种算法模块调度方法、算法模块调度装置以及计算机可读存储介质。
背景技术
在图像处理算法方案程序的执行中,大多都是通过任务队列与线程池的方式对图像处理算法的任务调度执行进行管理。
任务队列主要通过先进先出的方式进行管理,当有任务准备就绪时***任务队列尾部等待,当有空闲执行线程时从任务队列头部获取任务进行执行。
当前的算法方案中不同算法模块间具有相互的依赖与顺序关系,先进先出的任务队列方式会导致算法方案整体效率不高且在线程数不够的情况下导致整体流程卡死。
发明内容
本申请提供了一种算法模块调度方法、算法模块调度装置以及计算机可读存储介质。
本申请提供了一种算法模块调度方法,所述算法模块调度方法包括:
获取配置文件,其中,所述配置文件包括若干具有前后结果顺序依赖关系的算法模块;
利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级;
按照所述若干算法模块的优先级创建任务队列;
基于任务队列中的队列位置前后关系调度算法模块处理数据。
其中,所述利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级,包括:
利用所述配置文件中的前后结果顺序依赖关系生成所述若干算法模块的数据流向图;
按照所述数据流向图的输入输出方向从小到大配置所述数据流向图中若干算法模块的优先级。
其中,所述按照所述若干算法模块的优先级创建任务队列,包括:
将当前算法模块加入任务队列的队列尾部,其中,任务队列中包括若干算法模块;
将所述当前算法模块与所述任务队列中的前一个算法模块进行优先级比较;
在所述当前算法模块的优先级低于所述前一个算法模块的优先级时,对所述当前算法模块在所述任务队列中的位置不调整。
其中,所述将所述当前算法模块与所述任务队列中的前一个算法模块进行优先级比较之后,所述算法模块调度方法还包括:
在所述当前算法模块的优先级高于所述前一个算法模块的优先级时,交换所述当前算法模块与所述前一个算法模块在所述任务队列中的队列位置,更新所述任务队列;
继续将所述当前算法模块与更新后的任务队列中的前一个算法模块进行优先级比较,直至更新后的任务队列中的当前算法模块的优先级低于前一个算法模块的优先级,或者所述当前算法模块位于更新后的任务队列的队列头部。
其中,所述按照所述若干算法模块的优先级创建任务队列,包括:
获取当前算法模块的优先级,以及任务队列中所有队列算法模块的优先级;
比较所述当前算法模块的优先级以及所述所有队列算法模块的优先级;
在所述当前算法模块的优先级高于所述所有队列算法模块的优先级时,将所述当前算法模块加入所述任务队列的头部,更新所述任务队列;
在所述当前算法模块的优先级低于一个或多个队列算法模块的优先级时,将所述当前算法模块在所述一个或多个队列算法模块中优先级最低的队列算法模块的后一位加入所述任务队列。
其中,所述基于任务队列中的队列位置前后关系调度算法模块处理数据,包括:
获取所述任务队列的资源锁,开始调度所述任务队列中的算法模块处理数据;
获取新算法模块,并将所述新算法模块按照优先级加入所述任务队列中;
更新完所述任务队列后,释放所述任务队列的资源锁。
其中,所述基于任务队列中的队列位置前后关系调度算法模块处理数据,包括:
获取设备信息,其中,所述设备信息包括处理器核数;
判断所述设备信息中的处理器核数是否大于第一预设阈值;
若是,基于所述处理器核数创建对应数量的线程池,通过所述对应数量的线程池中的执行线程执行所述任务队列中的任务;
若否,创建若干执行线程,并将所述若干执行线程放入一个线程池内,通过一个线程池内的若干执行线程执行所述任务队列中的任务。
其中,所述基于所述处理器核数创建对应数量的线程池,包括:
设置所述线程池与所述处理器的一一对应关系;
在每一个线程池内设置若干执行线程,并设置每条执行线程与所述线程池对应的处理器的亲和性。
其中,所述获取设备信息之后,所述算法模块调度方法还包括:
判断所述设备信息中的处理器核数是否大于第一预设阈值,且所述配置文件中的算法模块节点是否大于第二预设阈值;
若是,基于所述处理器核数创建对应数量的线程池,通过所述对应数量的线程池中的执行线程执行所述任务队列中的任务;
若否,创建若干执行线程,并将所述若干执行线程放入一个线程池内,通过一个线程池内的若干执行线程执行所述任务队列中的任务。
其中,所述算法模块调度方法,还包括:
解析所述配置文件,获取所述配置文件中的若干算法节点,其中,每个算法节点对应至少一个算法模块;
获取所述每个算法节点的节点输入流和节点输出流;
按照所述若干算法节点的节点输入流和节点输出流,确定所述若干算法节点的流水线顺序;
利用所述若干算法节点的流水线顺序,确定对应的若干算法模块的前后结果顺序依赖关系。
本申请还提供了一种算法模块调度装置,所述算法模块调度装置包括获取模块、配置模块、创建模块以及调度模块;其中,
所述获取模块,用于获取配置文件,其中,所述配置文件包括若干具有前后结果顺序依赖关系的算法模块;
所述配置模块,用于利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级;
所述创建模块,用于按照所述若干算法模块的优先级创建任务队列;
所述调度模块,用于基于任务队列中的队列位置前后关系调度算法模块处理数据。
本申请还提供了另一种算法模块调度装置,所述算法模块调度装置包括处理器和存储器,所述存储器中存储有程序数据,所述处理器用于执行所述程序数据以实现如上述的算法模块调度方法。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序数据,所述程序数据在被处理器执行时,用以实现上述的算法模块调度方法。
本申请的有益效果是:算法模块调度装置获取配置文件,其中,所述配置文件包括若干具有前后结果顺序依赖关系的算法模块;利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级;按照所述若干算法模块的优先级创建任务队列;基于任务队列中的队列位置前后关系调度算法模块处理数据。通过上述方式,算法模块调度方法实现自适应的任务优先级标记和队列排序,提高了算法方案的整体处理效率以及防止算法方案卡死。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的算法模块调度方法一实施例的流程示意图;
图2是图1所示算法模块调度方法的具体流程图;
图3是本申请提供的配置文件格式一实施例的示意图;
图4是本申请提供的算法模块调度方法另一实施例的流程示意图;
图5是图4所示算法模块调度方法的具体流程图;
图6是本申请提供的算法模块调度方法又一实施例的流程示意图;
图7是图6所示算法模块调度方法的具体流程图;
图8是本申请提供的算法模块调度装置一实施例的结构示意图;
图9是本申请提供的算法模块调度装置另一实施例的结构示意图;
图10是本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为解决现有技术的问题,本申请对图像处理算法方案中算法任务队列的实现进行了优化,实现自适应的任务优先级标记和队列排序,提高了算法方案的整体处理效率以及防止算法方案卡死,并且,根据算法方案的复杂程度以及部署运行的设备差异实现对自适应的线程池创建调度,提高对设备资源的利用以及整体方案处理效率。
具体请参阅图1和图2,图1是本申请提供的算法模块调度方法一实施例的流程示意图,图2是图1所示算法模块调度方法的具体流程图。
其中,本申请的算法模块调度方法应用于一种算法模块调度装置,其中,本申请的算法模块调度装置可以为服务器,也可以为由服务器和终端设备相互配合的***。相应地,算法模块调度装置包括的各个部分,例如各个单元、子单元、模块、子模块可以全部设置于服务器中,也可以分别设置于服务器和终端设备中。
进一步地,上述服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块,例如用来提供分布式服务器的软件或软件模块,也可以实现成单个软件或软件模块,在此不做具体限定。在一些可能的实现方式中,本申请实施例的算法模块调度方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
具体而言,如图1所示,本申请实施例的算法模块调度方法具体包括以下步骤:
步骤S11:获取配置文件,其中,配置文件包括若干具有前后结果顺序依赖关系的算法模块。
在本申请实施例中,图像处理算法方案运行框架中,将每个算法模块作为一个任务进行调度执行。本申请供了一种用于表示算法方案处理流水线的配置文件,不同算法方案会对应生成不同的配置文件,算法模块调度装置通过解析该配置文件将所有算法模块进行优先级的标记,当所有算法模块作为任务加入任务队列后自动根据标记的优先级高低进行排序,优先级越高的算法模块任务则会优先于其他任务被执行线程从队列中获取并执行。
下面介绍本申请提供的一种可能的配置文件格式,具体请参阅图3,图3是本申请提供的配置文件格式一实施例的示意图。
如图3所示,配置文件中内容可理解为一条完整的图像处理算法方案的流水线,用Pipeline(数据管道),即算法方案流水线进行表示。
本申请的图像处理方案可以由不同的算法功能模块组成,算法功能模块在配置文件中用算法节点进行表示,即算法方案流水线由不同的算法节点,即算法节点组成。
算法功能模块之间存在前后结果的顺序依赖关系,即图像处理结果需要按照顺序在不同算法功能模块间进行传输和处理,配置文件中每个算法节点都含有一个Input输入流和一个Output输出流,通过一个算法节点的输入流连接到下一个算法节点的输入流的连线,即算法方案流水线来表示算法功能模块之间的前后顺序依赖关系。
配置文件的算法方案流水线整体信息中会有整个流水线的最初的输入流以及最尾端的输出流,其中,最初的输入流用于输入给第一个算法节点的输入流,最尾端的输出流用于接收最后一个算法节点的输出流。
步骤S12:利用配置文件中的前后结果顺序依赖关系配置若干算法模块的优先级。
在本申请实施例中,算法模块调度装置获取并解析配置文件的内容,根据配置文件中每个算法节点配置的Input输入流信息与Output输出流信息将整个算法流水线转换成一个有向无环图(DAG,Directed acyclic graph)。其中,有向无环图的起点为配置文件中算法方案流水线整体信息给定的最初的输入流,有向无环图的终点为给定的最尾端的输出流。
具体地,一帧图像数据需经过算法方案流水线中所有算法功能模块处理后得到最终输出的结果才算是完成该帧图像数据的分析,所以需将整个算法方案流水线看作一个整体。为提高图像处理算法方案的效率,需保证最终输出结果的算法节点能够得到足够资源进行数据处理,即将结果处理节点的优先级设置为最高。
同理地,算法模块调度装置可明确整个算法方案流水线中下游算法节点的优先级需高于上游节点的优先级。因此,本申请的算法模块调度装置可以根据解析生成的有向无环图将最初的算法节点优先级设置为0,后续的下游节点根据顺序优先级别依次进行递增处理,优先值数组越大代表优先级越高。
步骤S13:按照若干算法模块的优先级创建任务队列。
在本申请实施例中,算法模块调度装置在进行任务调度时,将每个算法节点作为一个任务进行处理,当算法节点执行所需的条件准备完毕后,该算法节点任务就会被调度加入任务队列中。加入任务队列后,算法模块调度装置会根据任务进入队列的先后顺序,任务的优先级对任务所处的队列位置进行调整。
具体请继续参阅图4和图5,图4是本申请提供的算法模块调度方法另一实施例的流程示意图,图5是图4所示算法模块调度方法的具体流程图。
具体而言,如图4所示,图1所示的算法模块调度方法中步骤S13具体包括以下子步骤:
步骤S131:将当前算法模块加入任务队列的队列尾部,其中,任务队列中包括若干算法模块。
在本申请实施例中,结合图5所示的具体流程图,算法模块调度装置在算法节点任务执行条件准备完毕后,开始调度任务队列中的算法模块。
算法模块调度装置将当前算法模块,作为新任务加入任务队列,置于任务队列的队列尾部。
步骤S132:将当前算法模块与任务队列中的前一个算法模块进行优先级比较。
在本申请实施例中,算法模块调度装置将新任务与任务队列中的前一个任务进行优先级的比较。其中,优先级由步骤S12的方案确定,在此不再赘述。
步骤S133:在当前算法模块的优先级低于前一个算法模块的优先级时,对当前算法模块在任务队列中的位置不调整。
在本申请实施例中,若新任务的优先级低于前一个任务的优先级时,则算法模块调度装置将两个任务保持在任务队列中的位置保持不变,且退出此次任务队列的排序操作。
步骤S134:在当前算法模块的优先级高于前一个算法模块的优先级时,交换当前算法模块与前一个算法模块在任务队列中的队列位置,更新任务队列。
在本申请实施例中,若新任务的优先级高于前一个任务的优先级时,则算法模块调度装置将两个任务保持在任务队列中的位置进行互换会后继续执行步骤S135。
步骤S135:继续将当前算法模块与更新后的任务队列中的前一个算法模块进行优先级比较,直至更新后的任务队列中的当前算法模块的优先级低于前一个算法模块的优先级,或者当前算法模块位于更新后的任务队列的队列头部。
在本申请实施例中,算法模块调度装置完成当前算法模块加入任务队列,以及完成此次排序操作后,算法模块调度装置释放任务队列的资源锁,使得下次调度时可以正常进行任务的***排序。
在其他实施例中,算法模块调度装置也可以采用另一种新任务加入任务队列的方式,具体如下:
算法模块调度装置获取当前算法模块的优先级,以及任务队列中所有队列算法模块的优先级,然后,比较当前算法模块的优先级以及所述所有队列算法模块的优先级。
在当前算法模块的优先级高于所述所有队列算法模块的优先级时,算法模块调度装置将所述当前算法模块加入所述任务队列的头部,更新所述任务队列。
在所述当前算法模块的优先级低于一个或多个队列算法模块的优先级时,当前算法模块调度装置将所述当前算法模块在所述一个或多个队列算法模块中优先级最低的队列算法模块的后一位加入所述任务队列。例如,当前算法模块的优先级为0.90,任务队列中存在若干队列算法模块的优先级高于当前算法模块的优先级,具体优先级分别为0.95、0.98以及0.92,此时,算法模块调度装置当前算法模块加入任务队列,并将当前算法模块置于0.92优先级对应的队列算法模块的后一位。
步骤S14:基于任务队列中的队列位置前后关系调度算法模块处理数据。
在本申请实施例中,算法模块调度装置获取配置文件,其中,所述配置文件包括若干具有前后结果顺序依赖关系的算法模块;利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级;按照所述若干算法模块的优先级创建任务队列;基于任务队列中的队列位置前后关系调度算法模块处理数据。通过上述方式,算法模块调度方法实现自适应的任务优先级标记和队列排序,提高了算法方案的整体处理效率以及防止算法方案卡死。
请继续参阅图6和图7,图6是本申请提供的算法模块调度方法又一实施例的流程示意图,图7是图6所示算法模块调度方法的具体流程图。
本申请的算法模块调度方法将自动获取程序运行设备的设备信息,综合设备信息中处理器,如CPU核数的情况以及运行的算法方案复杂程度自适应地选择合适的线程池策略进行创建和调度。
具体而言,如图6所示,本申请实施例的算法模块调度方法具体包括以下步骤:
步骤S21:获取设备信息,其中,设备信息包括处理器核数。
在本申请实施例中,算法模块调度装置获取程序运行设备的设备信息,设备信息可以包括CPU核数、GPU核数等。另外,算法模块调度装置还可以获取配置文件中的算法节点数等。
步骤S22:判断设备信息中的处理器核数是否大于第一预设阈值。
在本申请实施例中,算法模块调度装置可以将第一预设阈值设置为32,或者其他具体数值,用于评价程序运行设备的处理资源。当程序运行设备的处理器核数大于32时,进入步骤S23;当程序运行设备的处理器核数小于等于32时,进入步骤S24。
步骤S23:基于处理器核数创建对应数量的线程池,通过对应数量的线程池中的执行线程执行任务队列中的任务。
在本申请实施例中,当程序运行设备的处理器核数大于预设阈值时,算法模块调度装置执行多线程池策略。
具体地,整个算法方案运行过程中初始化阶段根据程序运行设备的CPU核数创建对应数量的线程池,且设置每个线程池与每个CPU核的一一对应关系。
算法模块调度装置在每个线程池中创建若干执行线程,这些执行线程均设置与所在线程池对应的CPU核的亲和性,保证每条执行线程都能独占一个CPU核资源,避免线程切换造成的资源消耗。
例如,线程调度策略上采用工作窃取算法,即每个执行线程都有对应的线程执行队列,实际运行过程中任务优先级队列会将队列中的所有任务平均分配至各执行线程对应的线程执行队列中,当执行线程完成自身对应队列中的任务后会随机去另外的执行线程窃取任务,直至完成任务。
需要说明的是,在执行线程随机去另外的执行线程窃取任务时,不受线程池的限制。
当算法方案运行于CPU核数较多的程序运行设备时,即获取的设备信息中CPU核数大于32的程序运行设备,主要适用于服务器设备,且算法方案流水线中算法节点数量较多,如大于32个时,算法模块调度装置将会选择此多线程池策略进行线程池的创建和调度。此种条件下多线程池策略将最大化利用设备的硬件资源,加快算法方案的分析处理效率。
步骤S24:创建若干执行线程,并将若干执行线程放入一个线程池内,通过一个线程池内的若干执行线程执行任务队列中的任务。
在本申请实施例中,当程序运行设备的处理器核数小于等于预设阈值时,算法模块调度装置执行单线程池策略。
具体地,整个算法方案运行过程中初始化阶段一次性创建多条执行线程放到一个线程池中,等有任务来时,从线程池中唤醒一个执行线程用于任务的执行处理。当执行线程执行完成当前任务时对优先级任务队列进行查询,若还有任务则进行获取后继续执行,不再进入休眠。这样把每个线程的创建,调度执行和销毁等过程进行统一管理,节省***时间,提高了程序整体的稳定性。
当算法方案运行于CPU核数较少的程序运行设备时,即获取的设备信息中CPU核数少于32的程序运行设备中,主要适用于嵌入式设备,算法模块调度装置将会选择单线程池策略进行线程池的创建和调度。此种条件下单线程池策略是在设备条件允许的情况下尽可能地使用设备资源满足算法方案的处理需求,多线程池策略下会导致执行线程数较少无法满足方案处理的需求。
在其他实施例中,如图7所示,算法模块调度装置还可以考虑配置文件中的算法节点数作为选择单线程池策略还是多线程池策略的参考因素。
具体地,算法模块调度装置判断设备信息中的处理器核数是否大于第一预设阈值,且配置文件中的算法节点是否大于第二预设阈值。例如,算法模块调度装置判断程序运行设备的CPU核数是否大于32,且配置文件中的算法节点是否大于32。
若程序运行设备的CPU核数大于32,同时,配置文件中的算法节点大于32,算法模块调度装置执行多线程策略。若程序运行设备的CPU核数小于等于32,和/或,配置文件中的算法节点小于等于32,算法模块调度装置执行单线程策略。
在本申请实施例中,算法模块调度装置将自适应的优先级任务队列与自适应的线程池创建调度相结合,使得图像处理算法方案在设备上运行时减少了不必要的线程切换销毁,能够有效提高算法方案的整体执行效率。在设备的资源使用上,极大地利用了设备硬件资源来加快图像处理算法的分析处理,提高设备资源的整体利用率。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
为实现上述实施例的算法模块调度方法,本申请还提出了一种算法模块调度装置,具体请参阅图8,图8是本申请提供的算法模块调度装置一实施例的结构示意图。
本申请实施例的算法模块调度装置300包括获取模块31、配置模块32、创建模块33以及调度模块34。
其中,所述获取模块31,用于获取配置文件,其中,所述配置文件包括若干具有前后结果顺序依赖关系的算法模块。
所述配置模块32,用于利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级。
所述创建模块33,用于按照所述若干算法模块的优先级创建任务队列。
所述调度模块34,用于基于任务队列中的队列位置前后关系调度算法模块处理数据。
为实现上述实施例的算法模块调度方法,本申请还提出了另一种算法模块调度装置,具体请参阅图9,图9是本申请提供的算法模块调度装置另一实施例的结构示意图。
本申请实施例的算法模块调度装置400包括存储器41和处理器42,其中,存储器41和处理器42耦接。
存储器41用于存储程序数据,处理器42用于执行程序数据以实现上述实施例所述的算法模块调度方法。
在本实施例中,处理器42还可以称为CPU(Central Processing Unit,中央处理单元)。处理器42可能是一种集成电路芯片,具有信号的处理能力。处理器42还可以是通用处理器、数字信号处理器(DSP,Digital Signal Process)、专用集成电路(ASIC,ApplicationSpecific Integrated Circuit)、现场可编程门阵列(FPGA,Field Programmable GateArray)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器42也可以是任何常规的处理器等。
为实现上述实施例的算法模块调度方法,本申请还提供了一种计算机可读存储介质,如图10所示,计算机可读存储介质500用于存储程序数据51,程序数据51在被处理器执行时,用以实现如上述实施例所述的算法模块调度方法。
本申请还提供一种计算机程序产品,其中,上述计算机程序产品包括计算机程序,上述计算机程序可操作来使计算机执行如本申请实施例所述的算法模块调度方法。该计算机程序产品可以为一个软件安装包。
本申请上述实施例所述的算法模块调度方法,在实现时以软件功能单元的形式存在并作为独立的产品销售或使用时,可以存储在装置中,例如一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (13)

1.一种算法模块调度方法,其特征在于,所述算法模块调度方法包括:
获取配置文件,其中,所述配置文件包括若干具有前后结果顺序依赖关系的算法模块;
利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级;
按照所述若干算法模块的优先级创建任务队列;
基于任务队列中的队列位置前后关系调度算法模块处理数据。
2.根据权利要求1所述的算法模块调度方法,其特征在于,
所述利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级,包括:
利用所述配置文件中的前后结果顺序依赖关系生成所述若干算法模块的数据流向图;
按照所述数据流向图的输入输出方向从小到大配置所述数据流向图中若干算法模块的优先级。
3.根据权利要求2所述的算法模块调度方法,其特征在于,
所述按照所述若干算法模块的优先级创建任务队列,包括:
将当前算法模块加入任务队列的队列尾部,其中,任务队列中包括若干算法模块;
将所述当前算法模块与所述任务队列中的前一个算法模块进行优先级比较;
在所述当前算法模块的优先级低于所述前一个算法模块的优先级时,对所述当前算法模块在所述任务队列中的位置不调整。
4.根据权利要求3所述的算法模块调度方法,其特征在于,
所述将所述当前算法模块与所述任务队列中的前一个算法模块进行优先级比较之后,所述算法模块调度方法还包括:
在所述当前算法模块的优先级高于所述前一个算法模块的优先级时,交换所述当前算法模块与所述前一个算法模块在所述任务队列中的队列位置,更新所述任务队列;
继续将所述当前算法模块与更新后的任务队列中的前一个算法模块进行优先级比较,直至更新后的任务队列中的当前算法模块的优先级低于前一个算法模块的优先级,或者所述当前算法模块位于更新后的任务队列的队列头部。
5.根据权利要求2所述的算法模块调度方法,其特征在于,
所述按照所述若干算法模块的优先级创建任务队列,包括:
获取当前算法模块的优先级,以及任务队列中所有队列算法模块的优先级;
比较所述当前算法模块的优先级以及所述所有队列算法模块的优先级;
在所述当前算法模块的优先级高于所述所有队列算法模块的优先级时,将所述当前算法模块加入所述任务队列的头部,更新所述任务队列;
在所述当前算法模块的优先级低于一个或多个队列算法模块的优先级时,将所述当前算法模块在所述一个或多个队列算法模块中优先级最低的队列算法模块的后一位加入所述任务队列。
6.根据权利要求1所述的算法模块调度方法,其特征在于,
所述基于任务队列中的队列位置前后关系调度算法模块处理数据,包括:
获取所述任务队列的资源锁,开始调度所述任务队列中的算法模块处理数据;
获取新算法模块,并将所述新算法模块按照优先级加入所述任务队列中;
更新完所述任务队列后,释放所述任务队列的资源锁。
7.根据权利要求1所述的算法模块调度方法,其特征在于,
所述基于任务队列中的队列位置前后关系调度算法模块处理数据,包括:
获取设备信息,其中,所述设备信息包括处理器核数;
判断所述设备信息中的处理器核数是否大于第一预设阈值;
若是,基于所述处理器核数创建对应数量的线程池,通过所述对应数量的线程池中的执行线程执行所述任务队列中的任务;
若否,创建若干执行线程,并将所述若干执行线程放入一个线程池内,通过一个线程池内的若干执行线程执行所述任务队列中的任务。
8.根据权利要求7所述的算法模块调度方法,其特征在于,
所述基于所述处理器核数创建对应数量的线程池,包括:
设置所述线程池与所述处理器的一一对应关系;
在每一个线程池内设置若干执行线程,并设置每条执行线程与所述线程池对应的处理器的亲和性。
9.根据权利要求7所述的算法模块调度方法,其特征在于,
所述获取设备信息之后,所述算法模块调度方法还包括:
判断所述设备信息中的处理器核数是否大于第一预设阈值,且所述配置文件中的算法模块节点是否大于第二预设阈值;
若是,基于所述处理器核数创建对应数量的线程池,通过所述对应数量的线程池中的执行线程执行所述任务队列中的任务;
若否,创建若干执行线程,并将所述若干执行线程放入一个线程池内,通过一个线程池内的若干执行线程执行所述任务队列中的任务。
10.根据权利要求1所述的算法模块调度方法,其特征在于,
所述算法模块调度方法,还包括:
解析所述配置文件,获取所述配置文件中的若干算法节点,其中,每个算法节点对应至少一个算法模块;
获取所述每个算法节点的节点输入流和节点输出流;
按照所述若干算法节点的节点输入流和节点输出流,确定所述若干算法节点的流水线顺序;
利用所述若干算法节点的流水线顺序,确定对应的若干算法模块的前后结果顺序依赖关系。
11.一种算法模块调度装置,其特征在于,所述算法模块调度装置包括获取模块、配置模块、创建模块以及调度模块;其中,
所述获取模块,用于获取配置文件,其中,所述配置文件包括若干具有前后结果顺序依赖关系的算法模块;
所述配置模块,用于利用所述配置文件中的前后结果顺序依赖关系配置所述若干算法模块的优先级;
所述创建模块,用于按照所述若干算法模块的优先级创建任务队列;
所述调度模块,用于基于任务队列中的队列位置前后关系调度算法模块处理数据。
12.一种算法模块调度装置,其特征在于,所述算法模块调度装置包括处理器和存储器,所述存储器中存储有程序数据,所述处理器用于执行所述程序数据以实现如权利要求1-10任一项所述的算法模块调度方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序数据,所述程序数据在被处理器执行时,用以实现权利要求1-10任一项所述的算法模块调度方法。
CN202210412394.6A 2022-04-19 2022-04-19 算法模块调度方法、算法模块调度装置以及可读存储介质 Active CN114489867B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210412394.6A CN114489867B (zh) 2022-04-19 2022-04-19 算法模块调度方法、算法模块调度装置以及可读存储介质
PCT/CN2022/114395 WO2023201947A1 (en) 2022-04-19 2022-08-24 Methods, systems, and storage media for task dispatch

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210412394.6A CN114489867B (zh) 2022-04-19 2022-04-19 算法模块调度方法、算法模块调度装置以及可读存储介质

Publications (2)

Publication Number Publication Date
CN114489867A true CN114489867A (zh) 2022-05-13
CN114489867B CN114489867B (zh) 2022-09-06

Family

ID=81489501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210412394.6A Active CN114489867B (zh) 2022-04-19 2022-04-19 算法模块调度方法、算法模块调度装置以及可读存储介质

Country Status (2)

Country Link
CN (1) CN114489867B (zh)
WO (1) WO2023201947A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114675863A (zh) * 2022-05-27 2022-06-28 浙江大华技术股份有限公司 算法配置文件更新方法及相关方法、装置、设备、介质
CN114880395A (zh) * 2022-07-05 2022-08-09 浙江大华技术股份有限公司 算法方案运行方法、可视化***、终端设备以及存储介质
CN116149830A (zh) * 2023-04-20 2023-05-23 北京邮电大学 一种基于双尺度节点调度策略的海量数据处理方法及装置
WO2023201947A1 (en) * 2022-04-19 2023-10-26 Zhejiang Dahua Technology Co., Ltd. Methods, systems, and storage media for task dispatch

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101692208A (zh) * 2009-10-15 2010-04-07 北京交通大学 实时交通信息处理的任务调度方法与***
US20150339168A1 (en) * 2014-05-23 2015-11-26 Osr Open Systems Resources, Inc. Work queue thread balancing
CN105511956A (zh) * 2014-09-24 2016-04-20 中国电信股份有限公司 一种基于共享调度信息的任务调度方法和***
CN105791254A (zh) * 2014-12-26 2016-07-20 阿里巴巴集团控股有限公司 网络请求处理方法、装置及终端
CN105992008A (zh) * 2016-03-30 2016-10-05 南京邮电大学 一种在多核处理器平台上的多层次多任务并行解码算法
CN106681840A (zh) * 2016-12-30 2017-05-17 郑州云海信息技术有限公司 一种云操作***的任务调度方法及装置
CN107092962A (zh) * 2016-02-17 2017-08-25 阿里巴巴集团控股有限公司 一种分布式机器学***台
CN107168781A (zh) * 2017-04-07 2017-09-15 广东银禧科技股份有限公司 一种3d打印子任务调度方法和装置
CN108268319A (zh) * 2016-12-31 2018-07-10 ***通信集团河北有限公司 任务调度方法、装置及***
CN110837410A (zh) * 2019-10-30 2020-02-25 北京奇艺世纪科技有限公司 任务调度方法、装置、电子设备及计算机可读存储介质
CN111209099A (zh) * 2019-12-31 2020-05-29 苏州浪潮智能科技有限公司 基于ganesha服务的多线程池调度方法及调度终端
CN111290842A (zh) * 2018-12-10 2020-06-16 北京京东尚科信息技术有限公司 一种任务执行方法和装置
CN111367785A (zh) * 2018-12-26 2020-07-03 中兴通讯股份有限公司 基于sdn的故障检测方法、装置和服务器
CN111382177A (zh) * 2020-03-09 2020-07-07 中国邮政储蓄银行股份有限公司 一种业务数据任务处理方法、装置及***
CN111737075A (zh) * 2020-06-19 2020-10-02 浙江大华技术股份有限公司 执行顺序的确定方法及装置、存储介质、电子装置
CN111949386A (zh) * 2020-07-09 2020-11-17 北京齐尔布莱特科技有限公司 一种任务调度方法、***、计算装置及可读存储介质
US20200380011A1 (en) * 2019-05-29 2020-12-03 International Business Machines Corporation Work Assignment in Parallelized Database Synchronization
CN112988340A (zh) * 2019-12-18 2021-06-18 湖南亚信软件有限公司 一种任务调度方法、装置及***
CN113179304A (zh) * 2021-04-22 2021-07-27 平安消费金融有限公司 消息下发方法、***、设备及存储介质
CN113535367A (zh) * 2021-09-07 2021-10-22 北京达佳互联信息技术有限公司 任务调度方法及相关装置
CN113722103A (zh) * 2021-09-10 2021-11-30 奇安信科技集团股份有限公司 加密卡的调用控制方法及通信设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6871011B1 (en) * 2000-09-28 2005-03-22 Matsushita Electric Industrial Co., Ltd. Providing quality of service for disks I/O sub-system with simultaneous deadlines and priority
CN111104211A (zh) * 2019-12-05 2020-05-05 山东师范大学 基于任务依赖的计算卸载方法、***、设备及介质
CN111813554A (zh) * 2020-07-17 2020-10-23 济南浪潮数据技术有限公司 一种任务调度处理方法、装置及电子设备和存储介质
CN114489867B (zh) * 2022-04-19 2022-09-06 浙江大华技术股份有限公司 算法模块调度方法、算法模块调度装置以及可读存储介质

Patent Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101692208A (zh) * 2009-10-15 2010-04-07 北京交通大学 实时交通信息处理的任务调度方法与***
US20150339168A1 (en) * 2014-05-23 2015-11-26 Osr Open Systems Resources, Inc. Work queue thread balancing
CN105511956A (zh) * 2014-09-24 2016-04-20 中国电信股份有限公司 一种基于共享调度信息的任务调度方法和***
CN105791254A (zh) * 2014-12-26 2016-07-20 阿里巴巴集团控股有限公司 网络请求处理方法、装置及终端
CN107092962A (zh) * 2016-02-17 2017-08-25 阿里巴巴集团控股有限公司 一种分布式机器学***台
CN105992008A (zh) * 2016-03-30 2016-10-05 南京邮电大学 一种在多核处理器平台上的多层次多任务并行解码算法
CN106681840A (zh) * 2016-12-30 2017-05-17 郑州云海信息技术有限公司 一种云操作***的任务调度方法及装置
CN108268319A (zh) * 2016-12-31 2018-07-10 ***通信集团河北有限公司 任务调度方法、装置及***
CN107168781A (zh) * 2017-04-07 2017-09-15 广东银禧科技股份有限公司 一种3d打印子任务调度方法和装置
CN111290842A (zh) * 2018-12-10 2020-06-16 北京京东尚科信息技术有限公司 一种任务执行方法和装置
CN111367785A (zh) * 2018-12-26 2020-07-03 中兴通讯股份有限公司 基于sdn的故障检测方法、装置和服务器
US20200380011A1 (en) * 2019-05-29 2020-12-03 International Business Machines Corporation Work Assignment in Parallelized Database Synchronization
CN110837410A (zh) * 2019-10-30 2020-02-25 北京奇艺世纪科技有限公司 任务调度方法、装置、电子设备及计算机可读存储介质
CN112988340A (zh) * 2019-12-18 2021-06-18 湖南亚信软件有限公司 一种任务调度方法、装置及***
CN111209099A (zh) * 2019-12-31 2020-05-29 苏州浪潮智能科技有限公司 基于ganesha服务的多线程池调度方法及调度终端
CN111382177A (zh) * 2020-03-09 2020-07-07 中国邮政储蓄银行股份有限公司 一种业务数据任务处理方法、装置及***
CN111737075A (zh) * 2020-06-19 2020-10-02 浙江大华技术股份有限公司 执行顺序的确定方法及装置、存储介质、电子装置
CN111949386A (zh) * 2020-07-09 2020-11-17 北京齐尔布莱特科技有限公司 一种任务调度方法、***、计算装置及可读存储介质
CN113179304A (zh) * 2021-04-22 2021-07-27 平安消费金融有限公司 消息下发方法、***、设备及存储介质
CN113535367A (zh) * 2021-09-07 2021-10-22 北京达佳互联信息技术有限公司 任务调度方法及相关装置
CN113722103A (zh) * 2021-09-10 2021-11-30 奇安信科技集团股份有限公司 加密卡的调用控制方法及通信设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AKRAM, N ET AL.: "《Efficient Task Allocation for Real-Time Partitioned Scheduling on Multi-Core Systems》", 《PROCEEDINGS OF 2019 16TH INTERNATIONAL BHURBAN CONFERENCE ON APPLIED SCIENCES AND TECHNOLOGY (IBCAST)》 *
南洋等: "基于网格平台的实时任务调度算法", 《科技通报》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023201947A1 (en) * 2022-04-19 2023-10-26 Zhejiang Dahua Technology Co., Ltd. Methods, systems, and storage media for task dispatch
CN114675863A (zh) * 2022-05-27 2022-06-28 浙江大华技术股份有限公司 算法配置文件更新方法及相关方法、装置、设备、介质
CN114675863B (zh) * 2022-05-27 2022-10-04 浙江大华技术股份有限公司 算法配置文件更新方法及相关方法、装置、设备、介质
CN114880395A (zh) * 2022-07-05 2022-08-09 浙江大华技术股份有限公司 算法方案运行方法、可视化***、终端设备以及存储介质
CN116149830A (zh) * 2023-04-20 2023-05-23 北京邮电大学 一种基于双尺度节点调度策略的海量数据处理方法及装置

Also Published As

Publication number Publication date
WO2023201947A1 (en) 2023-10-26
CN114489867B (zh) 2022-09-06

Similar Documents

Publication Publication Date Title
CN114489867B (zh) 算法模块调度方法、算法模块调度装置以及可读存储介质
CN110769278B (zh) 一种分布式视频转码方法及***
CN107391243B (zh) 线程任务处理设备、装置及方法
CN110489217A (zh) 一种任务调度方法及***
CN109992403B (zh) 多租户资源调度的优化方法、装置、终端设备及存储介质
CN111949386A (zh) 一种任务调度方法、***、计算装置及可读存储介质
CN109710416B (zh) 资源调度方法及装置
CN111026541B (zh) 渲染资源调度方法、装置、设备及存储介质
US7310803B2 (en) Method and system for executing multiple tasks in a task set
US20070008983A1 (en) Threshold on unblocking a processing node that is blocked due to data packet passing
CN115658153A (zh) 睡眠锁优化方法、装置、电子设备及存储介质
CN113608852B (zh) 任务调度方法、调度模块、推理节点和协同作业***
CN112965798A (zh) 一种基于分布式多线程的大数据处理方法及***
CN111767125A (zh) 任务执行方法、装置、电子设备、存储介质
CN114518917B (zh) 算法模块调度方法、算法模块调度装置以及可读存储介质
CN110750362A (zh) 生物信息的分析方法、装置和存储介质
CN115767188A (zh) 消息请求处理方法、***、设备和可读存储介质
CN113760494B (zh) 任务调度方法和装置
CN112988422A (zh) 一种异步消息处理方法、装置、电子设备及存储介质
CN111382983B (zh) 工作流控制方法、工作流节点和***
CN114546631A (zh) 任务调度方法、控制方法、核心、电子设备、可读介质
CN115712507B (zh) 一种计算船舶网关任务优先级的方法
CN114035928A (zh) 分布式任务分配处理方法
CN115858120A (zh) 任务调度方法、装置、介质及电子设备
CN116719625A (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