多GPU平台的多路视频数据的实时处理方法与流程

文档序号:11931401阅读:505来源:国知局
多GPU平台的多路视频数据的实时处理方法与流程

本发明涉及数据处理技术领域,尤其涉及一种多GPU平台的多路视频数据的实时处理方法。



背景技术:

随着多媒体技术的蓬勃发展,在“平安城市,智慧城市”的发展趋势下,国家智能交通的推广力度日益加强,城市交通监控涉嫌头的覆盖程度越来越广,而庞大的数据量为提取和分析监控视频带来了极大的挑战。当前阶段,针对监控视频的智能分析系统主要针对的是卡口图像,至今仍未出现广泛而又成熟的针对监控视频数据的智能分析系统,限制该系统发展的主要原因是计算能力的不足。

近年来,随着高性能GPU(Graphics Processing Unit,图形处理器)的发展,其强大的计算能力渐渐引起人们的重视,也为监控视频数据的分析与处理提供了新的突破口。若能在监控视频实时分析建立在多GPU平台上,能够大大缓解计算能力不足的尴尬。但要在多GPU平台上高效并行处理多路视频流的多个分析任务,仍要面临异构平台上的并行结构复杂且难以充分利用计算资源、多任务间计算资源难以平衡和实时处理问题限制性强等挑战。

现有技术中的用于解决多GPU平台的调度问题的方法,如:授权公告日为2014年9月10日,授权公告号为CN104035751A的发明专利:基于多图形处理器的数据并行处理方法及装置;授权公告日为2014年11月19日,授权公告号为CN104156264A的发明专利:一种基于多GPU的基带信号处理任务并行实时调度方法,都存在无法直接应用于多数据流情况下的多任务处理的问题,应用存在一定的局限性。



技术实现要素:

本发明实施例提供了一种多GPU平台的多路视频数据的实时处理方法,以实现多视频多任务在多GPU平台上的并行处理。

为了实现上述目的,本发明采取了如下技术方案。

一种多GPU平台的多路视频数据的实时处理方法,包括:

步骤1、建立基于任务处理器的层式并行结构;

步骤2、对所述层式并行结构中的各个任务处理器进行初始化,各个任务处理器接收监控视频数据,对监控视频数据进行实时处理;

步骤3、进行环境监测,根据环境监测结果计算任务队列健康度、任务缓存区健康度和各GPU健康度;

步骤4、根据所述任务队列健康度、缓存区健康度及各GPU健康度值进行任务处理器调度和作业分发;

步骤5、定时重复步骤3、4,使各GPU间保持负载均衡状态。

进一步地,所述的建立基于任务处理器的层式并行结构,包括:

将任务处理器作为并行与调度的基本单位,一个任务处理器包括一个GPU计算任务的封装、一个输入缓存、一个输出缓存和一个作业队列。一个任务处理器对应创建、就绪、暂停、运行、结束五个状态,通过任务处理器控制器进行任务处理器的状态控制;

根据监控视频路数、当前计算任务、计算节点GPU数进行基于层结构并行的任务处理器分配,分配各层间数据缓存区,将基于多GPU上的多任务处理器进行空间并行,得到多个层式并行结构,基于流水线技术对各个层式并行结构进行时间并行,建立用于流式监控数据处理的并行结构,基于内存交互对流式监控数据进行统一式管理。

进一步地,所述的建立基于任务处理器的层式并行结构还包括:

基于任务数划分任务处理器的层数,依据计算任务复杂度计算各层任务处理器的数量,使用轮转法将任务处理器尽量分配到不同GPU上,通过各层间缓存区,对同层任务处理器的输入输出的流式数据进行统一管理,并基于内存交互完成CPU到多GPU上的数据交换。

进一步地,所述的根据环境监测结果计算任务队列健康度、任务缓存区健康度和各GPU健康度,包括:

按照时间间隔统计被监测对象占用率,所述被监测对象占用率包括任务队列占用率、任务缓存区占用率、GPU利用率和GPU显存占用率;

采用滑动窗口计算若干时间片内被监测对象占用率的平均值;

根据记录的多个时间片内被监测对象占用率的平均值计算被监测对象健康度,所述被监测对象健康度包括任务队列健康度、任务缓存区健康度、GPU健康度和GPU显存健康度;

依据被监测对象健康度判断被监测对象的状态。

进一步地,根据所述任务队列健康度、缓存区健康度及各GPU健康度值进行任务处理器调度,包括:

根据各任务运行状态、任务处理器数量控制各任务占用的计算资源比例;对于某任务,通过其输入和输出缓存区的健康度判断该任务的各状态处理器的数量变化量。

进一步地,所述的对于某任务,通过其输入和输出缓存区的健康度判断该任务的各状态处理器的数量变化量,包括:

若某任务的输入缓存处于饥饿状态,输出缓存处于过饱状态,则减少任务处理器数量;

若某任务的输入缓存处于过饱状态,输出缓存处于饥饿状态,则增加任务处理器数量;

若某任务的输入缓存或输出缓存处于健康状态,则暂时不变动任务处理器数量。

进一步地,所述的方法还包括:

若GPU处理器处于过饱状态,则减少该GPU处理器上的任务处理器数量,减少时将运行状态的处理器转为暂停状态,减少时优先减少输出缓存区健康度高的任务处理器。

进一步地,根据所述任务队列健康度、缓存区健康度及各GPU健康度值进行作业分发,包括:

采用动态轮询策略依据健康度低的任务处理器优先的原则,进行作业的分发,若任务队列达到最大长度,则停止作业分发。

由上述本发明的实施例提供的技术方案可以看出,本发明实施例为在多GPU平台上的多路视频多任务实时处理设计了完整的并行、调度、数据管理方案;能够充分利用多GPU处理器强大的计算能力;使用动态负载均衡算法保证系统能够根据输入数据和硬件条件充分利用计算资源;从空间并行和时间并行多个方面进行并行设计,大大加快计算速度;且具有一定的广泛性、安全性和自适应性。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种多GPU平台的多路视频数据的实时处理方法的实现原理示意图;

图2为本发明实施例提供的一种任务处理器的工作流程示意图;

图3为本发明实施例提供的一种任务处理器的状态控制流程示意图;

图4为本发明实施例提供的一种任务处理器的调度过程示意图;

图5为实现本发明实施例方法的系统架构示意图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。

监控视频数据作为一种体量大,安全性要求高的特殊数据,在处理方法中应该在高效性和安全性上进行有针对性的优化和调整。

本发明实施例提供了一种多GPU平台的多路视频数据的实时处理方法的实现原理示意图如图1所示,主要包括如下步骤:

步骤(1):建立基于任务处理器的层式并行结构;

在本发明实施例中,任务处理器是计算任务的抽象,是并行与调度的基本单位。图2为本发明实施例提供的一种任务处理器的工作流程示意图,一个任务处理器包括一个GPU计算任务的封装、一个输入缓存、一个输出缓存和一个作业队列。

图3为本发明实施例提供的一种任务处理器的状态控制流程示意图,一个任务处理器对应创建、就绪、暂停、运行、结束五个状态,通过任务处理器的控制器进行任务处理器的状态控制。

根据监控视频路数、当前计算任务、计算节点GPU数进行基于层结构并行的任务处理器分配,分配各层间数据缓存区,以建立用于流式监控数据处理的并行结构。

将基于多GPU上的多任务处理器进行空间并行,且基于流水线技术建立层式结构进行时间并行,基于内存交互对流式数据进行统一式管理。

层式并行结构的建立方法包括:

基于任务数划分任务处理器的层数,依据任务复杂度进行各层任务处理器的数量计算,使用轮转法将任务处理器尽量分配到不同GPU上。

基于内存交互对流式数据进行统一式管理方法还包括:

通过各层间缓存区,对同层任务处理器的输入输出的流式数据进行统一管理,并基于内存交互完成CPU到多GPU上的数据交换。

所述的监控视频路数、当前计算任务、计算节点GPU数的一个实例为在一台具有2块GPU的计算节点上对3路高清监控视频进行实时分析,首先进行监控视频解码获取视频帧,对视频帧进行车辆检测,再对检测出的车辆属性(车型、颜色、特征等)提取,三个任务的计算复杂度比值为1:3.4:0.6。

使用任务处理器完成视频解码、车辆检测、车辆属性提取三个任务的封装,对应任务处理器#0、任务处理器#1、任务处理器#2。

所述的任务处理器的分配方式为设在一台具有n块GPU的服务器上处理m个任务,m个任务的复杂度权重比为d1,d2,……,dm,则将任务处理器划分为m层,对应m个任务,若输入视频路数为x,则每层初始化任务处理器数量为d为该层复杂度权重值;计算得到各层任务处理器的数量后,使用轮转法将同任务的任务处理器尽可能地分配到不同GPU上,并对各任务处理器进行初始化。针对本实例,共初始化3个任务处理器#0,11个任务处理器#1,2个任务处理器#2;GPU#0上分配任务处理器数依次为2、5、1,GPU#1上分配任务处理器数依次为1、6、1。

所述的用于流式监控数据处理的并行结构如图1所示。以层级结构将任务处理器划分成3层,形成流水线,进行时间并行;通过任务处理器在多GPU上的分配,进行多任务在多GPU上的空间并行;通过在各层间建立4个统一的缓存区,对同层任务处理器的输入输出的流式数据进行统一管理,并基于内存交互完成CPU到多GPU上的数据交换,具体数据管理方式如图3所示,其中视频缓存区使用环形缓存区作为每个视频流的存储区域。

步骤(2):对层式并行结构中的各个任务处理器进行初始化,各个任务处理器接收监控视频数据,对监控视频数据进行实时处理;

步骤(3):进行计算环境监测,预测任务队列、任务缓存区及各GPU健康度;

按照时间间隔统计被监测对象占用率,所述被监测对象占用率包括任务队列占用率、任务缓存区占用率、GPU利用率和GPU显存占用率;

采用滑动窗口计算若干时间片内被监测对象占用率的平均值;

根据记录的多个时间片内被监测对象占用率的平均值计算被监测对象健康度,所述被监测对象健康度包括任务队列健康度、任务缓存区健康度、GPU健康度和GPU显存健康度;

依据被监测对象健康度判断被监测对象的状态。

所述的任务队列及缓存区健康度计算方式使用如下方法(以缓存区为例,方法相同):以时间间隔为50ms为单位进行被监测缓存区已被占用的缓存大小。通过大小为n的滑动窗口(n为1-5之间)来统计50*n毫秒内的平均占用率,来达到平滑数据的效果,再通过平滑后的占用率作为依据进行趋势计算。通过健康缓存区间的上界和下界及趋势计算缓存区健康度。

数据统计:以50ms的时间间隔统计被监测缓存区的已被占用的大小。

数据分析:

缓存区使用百分比PBuf_occ的计算公式如下:

通过滑动窗口统计n个时间片内的平均缓存区使用百分比,其中n为滑动窗口大小,计算公式如下。

变化趋势CURbuf计算公式如下,其中α∈[0.1,2]:

通过划分缓存区的90%和10%作为健康区间的上界和下届,健康度计算公式如下:

若根据公式3.4计算得健康度Hbuf>100,则Hbuf=100;

若计算得Hbuf<0,则Hbuf=0。

对于某数据缓存区:

若Hbuf≤10,则处于饥饿状态;

若10<Hbuf<90,则处于健康状态;

若Hbuf≥90,则处于过饱状态。

所述的GPU健康度预测方式使用如下方法:以时间间隔为50ms为单位计算被监测GPU处理器的GPU利用率和已被占用的显存大小。通过大小为n的滑动窗口(n为1-5之间)来统计50*n毫秒内的平均GPU利用率和平均显存占用率,来达到平滑数据的效果,再通过平滑后的利用率和显存占用率作为依据进行趋势计算。通过利用率和显存占用率及各自健康上界和下界及趋势估算GPU健康度。

数据统计:以50ms的时间间隔统计被监测GPU的利用率和显存占用率。

数据分析:

通过滑动窗口统计n个时间片内的平均GPU利用率百分比,其中n为滑动窗口大小,计算公式如下。

通过滑动窗口统计n个时间片内的平均显存占用率百分比,其中n为滑动窗口大小,计算公式如下。

将GPU利用率低于60%的情况直接视为饥饿状态。

将显存占用率超过的80%的情况直接视为过饱状态。

若根据公式3.7计算得健康度Hgpu>100,则Hgpu=100;

若计算得Hgpu<0,则Hgpu=0。

对于某GPU处理器:

若Hgpu≤45,则处于饥饿状态;

若45<Hgpu<80,则处于健康状态;

若Hgpu≥80,则处于过饱状态。

步骤(4):根据任务队列健康度、缓存区健康度及各GPU健康度值进行任务处理器调度和作业分发;

图4为本发明实施例提供的一种任务处理器调度过程示意图,任务处理器调度方法包括:

通过各任务运行状态、任务处理器数量控制各任务占用的计算资源比例;通过各监测对象健康度值更改各任务对应任务处理器的状态。

对于某任务,通过其输入和输出缓存区的健康度判断该任务的各状态处理器的数量变化量:

若其输入缓存处于饥饿状态,输出缓存处于过饱状态,则减少任务处理器数量;

若其输入缓存处于过饱状态,输出缓存处于饥饿状态,则增加任务处理器数量;

若其输入缓存或输出缓存处于健康状态,则暂时不变动任务处理器数量。

需要增加处理器数量时,优先等待正在创建的任务处理器创建完成,次优先恢复暂停状态或准备状态的处理器为运行状态,如无以上两种情况,则创建新的任务处理器。

需要创建新的任务处理器时,优先选择健康度低的GPU进行。

若缓存区达到容量上限,开始丢弃数据。

若GPU处理器处于过饱状态,则减少该处理器上的任务处理器数量,减少时将运行状态的处理器转为暂停状态,减少时优先减少输出缓存区健康度高的任务处理器。

作业分发方式还包括:

作业分发采用动态轮询策略,依据健康度低的处理器优先的原则,进行作业的分发。若任务队列达到最大长度,则停止分发。

步骤(5):定时重复步骤3、4,使各GPU间保持负载均衡状态。

图5为实现本发明实施例方法的系统架构示意图,主要包括:计算引擎模块、集成总线模块、数据管理模块。系统以视频解码、车辆检测及属性提取为处理任务,通过集成总线模块实现本发明所述方法,使得多路高清视频处理任务实时运行在多GPU平台上。

综上所述,本发明实施例为在多GPU平台上的多路视频多任务实时处理设计了完整的并行、调度、数据管理方案;能够充分利用多GPU处理器强大的计算能力;使用动态负载均衡算法保证系统能够根据输入数据和硬件条件充分利用计算资源;从空间并行和时间并行多个方面进行并行设计,大大加快计算速度;且具有一定的广泛性、安全性和自适应性。

本发明实施例实现了多视频多任务在多GPU平台上的并行处理,并且基于健康度预测进行系统的任务和作业调度,提高了平均GPU利用率,减少了任务计算时间,且在稳定性、扩展性和自适应性上具有良好的表现。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

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