首页 / 专利库 / 电脑零配件 / 中央处理器 / 用于全景视频转码的资源分配方法、装置和设备

用于全景视频转码的资源分配方法、装置和设备

阅读:2发布:2021-08-15

专利汇可以提供用于全景视频转码的资源分配方法、装置和设备专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种用于全景视频转码的资源分配方法、装置和设备,其中方法包括:确定视频转码任务对各资源的占用量,所述各资源包括图形处理器)(GPU) 硬件 解码器 、GPU计算资源和GPU硬件 编码器 中的至少一种以及 中央处理器 (CPU),或者所述各资源包括GPU硬件解码器、GPU计算资源和GPU硬件编码器;从 高性能计算 (HPC)集群中分配一个 节点 用以执行所述任务,其中被分配节点的剩余资源满足所述任务对各资源的占用量。通过本发明能够更加合理和充分地利用HPC丰富的资源,提高灵活性。,下面是用于全景视频转码的资源分配方法、装置和设备专利的具体信息内容。

1.一种用于视频转码的资源分配方法,其特征在于,该方法包括:
确定视频转码任务对资源的占用量,其中:
所述资源包括:图形处理器GPU硬件解码器、GPU计算资源和GPU硬件编码器中的至少一种以及中央处理器CPU,或者
所述资源包括:GPU硬件解码器、GPU计算资源和GPU硬件编码器;
节点集群中分配一个节点用以执行所述任务,其中被分配节点的剩余资源满足所述任务对各资源的占用量。
2.根据权利要求1所述的方法,其特征在于,所述确定视频转码任务对资源的占用量包括:
确定所述任务所包含各阶段的关键因子;
利用所述任务所包含各阶段的关键因子以及各阶段占用的资源类型,分别确定所述任务所包含各阶段的资源占用状况;
根据所述任务所包含各阶段的资源占用状况,得到所述任务对各资源的占用量。
3.根据权利要求2所述的方法,其特征在于,所述各阶段占用的资源类型依据所述视频转码任务的类型和/或节点集群中节点的剩余资源状况确定。
4.根据权利要求2所述的方法,其特征在于,确定所述任务所包含各阶段的关键因子包括:
确定视频编码阶段的关键因子包括视频输出分辨率、输出流数量和编码格式;或者,确定视频解码阶段的关键因子包括视频输出分辨率和视频格式;或者,
确定视频预处理阶段的关键因子包括视频输出分辨率和预处理类型。
5.根据权利要求2所述的方法,其特征在于,在利用所述任务所包含各阶段的关键因子以及各阶段占用的资源类型,分别确定所述任务所包含各阶段的资源占用状况时,针对所述任务包含的各阶段分别执行以下步骤:
确定所述任务对应的基准任务以及该阶段占用的资源类型;
依据该阶段的关键因子以及预先得到的所述基准任务的关键因子和对所述资源类型的资源占用量,确定该阶段对所述资源类型的资源占用量。
6.根据权利要求5所述的方法,其特征在于,依据该阶段的关键因子以及预先得到的所述基准任务的关键因子和对所述资源类型的资源占用量,确定该阶段对所述资源类型的资源占用量包括:
确定该阶段的关键因子的乘积与所述基准任务的关键因子的乘积之间的比值,将该比值与所述基准任务对所述资源类型的资源占用量的乘积确定为该阶段对所述资源类型的资源占用量。
7.根据权利要求2所述的方法,其特征在于,所述任务所包含各阶段包括:
视频解码阶段、视频预处理阶段和视频编码阶段。
8.根据权利要求7所述的方法,其特征在于,视频解码阶段占用的资源类型包括:
GPU硬件解码器,或者,
CPU。
9.根据权利要求7所述的方法,其特征在于,所述视频预处理阶段中的视频印处理阶段占用的资源类型包括:CPU。
10.根据权利要求7所述的方法,其特征在于,所述视频预处理阶段中的视频缩放、映射或滤波处理阶段占用的资源类型包括:
GPU计算资源;或者,
CPU。
11.根据权利要求7所述的方法,其特征在于,视频编码阶段占用的资源类型包括:
GPU硬件编码器;或者,
CPU。
12.根据权利要求1所述的方法,其特征在于,所述任务为单任务或任务组。
13.根据权利要求12所述的方法,其特征在于,所述任务组包括针对同一视频源的不同转码任务。
14.根据权利要求12所述的方法,其特征在于,若所述任务为任务组,则所述从节点集群中分配一个节点用以执行所述任务包括:
判断所述节点集群中是否存在剩余资源满足所述任务组对资源的占用量的节点,如果是,则分配其中一个剩余资源满足所述任务组对资源的占用量的节点用以执行所述任务组;
否则,从所述任务组中删除部分任务后,针对该任务组继续执行确定该任务组对资源的占用量的步骤,直至从HPC集群中分配一个节点用以执行该任务组;
将从所述任务组中删除的任务组建成一个新的任务组,针对该新的任务组转至执行确定该任务组对资源的占用量的步骤。
15.一种用于视频转码的资源分配装置,其特征在于,该装置包括:
资源计算单元,用于确定视频转码任务对资源的占用量,所述资源包括:
图形处理器GPU硬件解码器、GPU计算资源和GPU硬件编码器中的至少一种以及中央处理器CPU,或者
所述资源包括GPU硬件解码器、GPU计算资源和GPU硬件编码器;
资源分配单元,用于从节点集群中分配一个节点用以执行所述任务,其中被分配节点的剩余资源满足所述任务对各资源的占用量。
16.根据权利要求15所述的装置,其特征在于,所述资源计算单元包括:
定子单元,用于确定所述任务所包含各阶段的关键因子;
计算子单元,用于利用所述任务所包含各阶段的关键因子以及各阶段占用的资源类型,分别确定所述任务所包含各阶段的资源占用状况;
整合子单元,用于根据所述任务所包含各阶段的资源占用状况,得到所述任务对各资源的占用量。
17.根据权利要求16所述的装置,其特征在于,所述各阶段占用的资源类型依据所述视频转码任务的类型和/或节点集群中节点的剩余资源状况确定。
18.根据权利要求16所述的装置,其特征在于,所述确定子单元具体用于:
确定视频编码阶段的关键因子包括视频输出分辨率、输出流数量和编码格式;或者,确定视频解码阶段的关键因子包括视频输出分辨率和视频格式;或者,
确定视频预处理阶段的关键因子包括视频输出分辨率和预处理类型。
19.根据权利要求16所述的装置,其特征在于,所述计算子单元具体用于:
确定所述任务对应的基准任务以及该阶段占用的资源类型;
依据该阶段的关键因子以及预先得到的所述基准任务的关键因子和对所述资源类型的资源占用量,确定该阶段对所述资源类型的资源占用量。
20.根据权利要求19所述的装置,其特征在于,所述计算子单元在依据该阶段的关键因子以及预先得到的所述基准任务的关键因子和对所述资源类型的资源占用量,确定该阶段对所述资源类型的资源占用量时,具体执行:
确定该阶段的关键因子的乘积与所述基准任务的关键因子的乘积之间的比值,将该比值与所述基准任务对所述资源类型的资源占用量的乘积确定为该阶段对所述资源类型的资源占用量。
21.根据权利要求16所述的装置,其特征在于,所述任务所包含各阶段包括:
视频解码阶段、视频预处理阶段和视频编码阶段。
22.根据权利要求21所述的装置,其特征在于,视频解码阶段占用的资源类型包括:
GPU硬件解码器,或者,
CPU。
23.根据权利要求21所述的装置,其特征在于,所述视频预处理阶段中的视频水印处理阶段占用的资源类型包括:CPU。
24.根据权利要求21所述的装置,其特征在于,所述视频预处理阶段中的视频缩放、映射或滤波处理阶段占用的资源类型包括:
GPU计算资源;或者,
CPU。
25.根据权利要求21所述的装置,其特征在于,视频编码阶段占用的资源类型包括:
GPU硬件编码器;或者,
CPU。
26.根据权利要求15所述的装置,其特征在于,所述任务为单任务或任务组。
27.根据权利要求26所述的装置,其特征在于,所述任务组包括针对同一视频源的不同转码任务。
28.根据权利要求26所述的装置,其特征在于,若所述任务为任务组,则所述资源分配单元包括:
判断子单元,用于判断所述节点集群中是否存在剩余资源满足所述任务组对资源的占用量的节点;
分配子单元,用于在所述判断子单元的判断结果为是时,分配其中一个剩余资源满足所述任务组对资源的占用量的节点用以执行所述任务组;
调整子单元,用于在所述判断子单元的判断结果为否时,从所述任务组中删除部分任务后,触发所述资源计算单元针对该任务组继续执行确定该任务组对资源的占用量的操作,直至所述分配子单元从HPC集群中分配一个节点用以执行该任务组,触发组建子单元;
组建子单元,用于受到所述调整子单元的触发后,将从所述任务组中删除的任务组建成一个新的任务组,触发所述资源计算单元针对该新的任务组执行确定该任务组对资源的占用量的操作。
29.一种设备,包括
存储器,包括一个或者多个程序;
一个或者多个处理器,耦合到所述存储器,执行所述一个或者多个程序,以实现如权利要求1至14任一权项所述方法中执行的操作。
30.一种计算机存储介质,所述计算机存储介质被编码有计算机程序,所述程序在被一个或多个计算机执行时,使得所述一个或多个计算机执行如权利要求1至14任一权项所述方法中执行的操作。

说明书全文

用于全景视频转码的资源分配方法、装置和设备

【技术领域】

[0001] 本发明涉及计算机应用该技术领域,特别涉及一种全景视频转码的资源分配方法、装置和设备。【背景技术】
[0002] 全景视频的压缩技术已经成为虚拟现实(VR,Virtual Reality)技术领域的研究重点,目前全景视频的转码系统通常采用的是CPU(Central Processing Unit,中央处理器)转码,其优点是:灵活性高、码率控制好、易于实现等,但同时也有转码速度慢、需要机器数量多、维护成本高等缺点。因此,仅几年来,随着GPU(Graphics Processing Unit,图形处理器)硬件编码器技术的发展,一些公司已经开始尝试使用GPU和CPU混合架构来实现全景视频的转码系统,将转码的部分或全部任务放在GPU上执行。
[0003] 然而,现有的全景视频的转码系统通常是将解码任务和编码任务固定地分配在CPU或GPU中的其中一种资源上,例如将解码任务分配在CPU上执行,将编码任务分配在GPU上执行。这种资源分配方式过于粗放,并未合理地利用资源,灵活性差。【发明内容】
[0004] 有鉴于此,本发明提供了一种用于全景视频转码的资源分配方法、装置和设备,以便于更加合理地利用HPC丰富的资源,提高灵活性。
[0005] 具体技术方案如下:
[0006] 本发明提供了一种用于视频转码的资源分配方法,该方法包括:
[0007] 确定视频转码任务对资源的占用量,所述资源包括:
[0008] 图形处理器GPU硬件解码器、GPU计算资源和GPU硬件编码器中的至少一种以及中央处理器CPU,或者
[0009] 所述资源包括GPU硬件解码器、GPU计算资源和GPU硬件编码器;
[0010] 从节点集群中分配一个节点用以执行所述任务,其中被分配节点的剩余资源满足所述任务对各资源的占用量。
[0011] 本发明还提供了一种用于视频转码的资源分配装置,该装置包括:
[0012] 资源计算单元,用于确定视频转码任务对资源的占用量,所述资源包括:
[0013] 图形处理器GPU硬件解码器、GPU计算资源和GPU硬件编码器中的至少一种以及中央处理器CPU,或者
[0014] 所述各资源包括GPU硬件解码器、GPU计算资源和GPU硬件编码器;
[0015] 资源分配单元,用于从节点集群中分配一个节点用以执行所述任务,其中被分配节点的剩余资源满足所述任务对各资源的占用量。
[0016] 本发明还提供了一种设备,包括
[0017] 存储器,包括一个或者多个程序;
[0018] 一个或者多个处理器,耦合到所述存储器,执行所述一个或者多个程序,以实现上述方法中执行的操作。
[0019] 本发明还提供了一种计算机存储介质,所述计算机存储介质被编码有计算机程序,所述程序在被一个或多个计算机执行时,使得所述一个或多个计算机执行上述方法中执行的操作。
[0020] 由以上技术方案可以看出,本发明采用更加细致的资源分配粒度,除了将资源分为CPU和GPU之外,将GPU资源分为GPU硬件解码器、GPU计算资源和GPU硬件编码器,确定视频转码任务对各资源的占用量后,从节点集群中分配一个节点用以执行该任务,从而更加合理和充分地利用节点集群的资源,同时又保证了转码速度和质量。相比较现有技术中将解码任务和编码任务固定地分配在CPU或GPU中的其中一种资源上,实现更加灵活。【附图说明】
[0021] 图1为本发明实施例提供的主要方法流程图
[0022] 图2为本发明实施例提供的一种资源占用策略的示意图;
[0023] 图3为本发明实施例提供的确定任务对各资源占用量的方法流程图;
[0024] 图4a为本发明实施例提供的任务组的资源分配方法流程图;
[0025] 图4b为本发明实施例提供的任务组的资源分配实例图;
[0026] 图5为本发明实施例提供的转码任务的整体流程图;
[0027] 图6为本发明实施例提供的用于视频转码的资源分配装置结构图;
[0028] 图7为本发明实施例提供的设备结构图。【具体实施方式】
[0029] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0030] 在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
[0031] 应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0032] 取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
[0033] HPC集群有着非常丰富的计算资源,在本发明实施例中,该集群中的每个节点都具有“CPU+GPU”架构,即每个节点都具有CPU和GPU,其中GPU包括GPU硬件解码器、GPU计算资源和GPU硬件编码器资源。本发明实施例并非简单且固定的将视频转码中的编码和解码处理分配在CPU或GPU上,而是更加充分地利用HPC集群中的各种资源,对资源分配进行更细粒度的划分。需要说明的是,本发明实施例中以HPC集群为例,但本发明提供的资源分配方法也可以用于其他类型的节点集群。
[0034] 本发明提供的方法用于视频转码任务的资源分配,优选适用于全景视频转码,但对于其他类型视频转码同样适用,本发明实施例中以全景视频转码任务为例进行描述,后续简称“任务”。一个全景视频转码任务指的是将一个全景视频源进行转码处理,得到指定要求的输出码流。若对于同一个全景视频源进行不同的转码处理,得到不同指定要求的输出码流,则为不同的任务。
[0035] 图1为本发明实施例提供的主要方法流程图,如图1中所示,该方法可以包括以下步骤:
[0036] 在101中,确定任务对资源的占用量,资源包括GPU硬件解码器、GPU计算资源和GPU硬件编码器中的至少一种以及CPU,或者所述资源包括GPU硬件解码器、GPU计算资源和GPU硬件编码器。
[0037] 为了最大限度的利用资源,本发明实施例将GPU资源细分为GPU硬件解码器、GPU计算资源和GPU硬件编码器。任务所使用的资源除了节点的CPU资源之外,还可以使用上述三种GPU资源中的至少一种,或者任务仅由上述三种GPU资源来执行。
[0038] 一个典型的全景视频转码任务可以分为多个阶段,包括解码、预处理和编码三个阶段,其中预处理阶段又可以根据不同的处理进行更细粒度的划分,例如划分为印处理、缩放、映射和滤波等。每个阶段可以放在不同类型的资源上执行。例如解码阶段可以放在GPU硬件解码器,也可以放在CPU上。预处理阶段中的水印处理阶段放在CPU上。视频预处理阶段中的视频缩放、映射或滤波处理等可以放在GPU计算资源上,也可以放在CPU上。视频编码阶段可以放在GPU硬件编码器上,也可以放在CPU上。
[0039] 一个任务占用什么类型的资源可以预先确定,例如,优选解码阶段占用GPU硬件解码器,预处理阶段中的水印处理占用CPU资源,预处理阶段中的视频缩放、映射或滤波处理占用GPU计算资源,编码阶段占用GPU硬件编码器,如图2中所示。
[0040] 在预先确定任务占用的资源类型时,一方面可以依据任务属性来确定,例如对于H.265格式的全景视频转码,为了保证输出质量,限制编码阶段占用CPU资源。另一方面可以依据当前所使用高性能计算集群的硬件能确定,例如高性能计算集群中GPU硬件编码器的能力较强,则编码阶段可以占用GPU硬件编码器,否则可以占用CPU。
[0041] 预先确定了任务各阶段占用的资源类型后,任务对各资源的占用量的确定方式可以采用先验值的方式,例如预先通过试验的方式确定出各种任务对各种资源的占用量,但这种方式需要穷举各种任务,且依据各阶段占用的资源类型进行组合的穷举,一方面需要进行数量巨大的试验,另一方面扩展性很差,一旦有新的类型的任务出现,则很难实时应用。在此,本发明实施例提供了一种优选的实现方式来确定任务对各资源的占用量。如图3所示,可以包括以下步骤:
[0042] 在301中,确定任务所包含各阶段的关键因子。
[0043] 对于每个阶段可以预先设计一些关键因子,这些关键因子能够反映全景视频在该阶段的处理对资源的占用量,优选地,这些关键因子与资源占用量之间呈正比关系,这样资源占用量就可以用这些关键因子的乘积来体现。
[0044] 例如,对于视频编码阶段,可以将视频输出分辨率(w,h),输出流数量(n)以及编码格式(f)作为关键因子。依据关键因子对资源的影响状况给各因子赋予一定数值,例如对于输出流数量是1的,关键因子n取值为1;对于Pyramid映射方式等输出流数量是N的,关键因子n取值为N。再例如,对于H.265格式对硬件资源的占用大约是H.264格式的2倍,因此可以将H.264格式编码的关键因子f取1,H.265格式的f取2。
[0045] 再例如,对于视频解码阶段,可以将视频输出分辨率、视频格式作为关键因子。对于视频预处理阶段,可以将视频输出分辨率、预处理类型等作为关键因子。
[0046] 一个具体的任务,各阶段的关键因子可以根据经验或者经过多种试验等方式来确定。
[0047] 在302中,利用该任务所包含各阶段的关键因子以及各阶段占用的资源类型,分别确定该任务所包含各阶段的资源占用状况。
[0048] 各阶段的资源占用状况一方面包括各阶段占用的资源类型,另一方面包括各阶段对对应资源类型的资源占用量。上面已经提及各阶段占用的资源类型可以预先确定,而各阶段对对应资源类型的资源占用量则可以采用各阶段的关键因子与基准任务进行比对后,依照基准任务的资源占用量来确定。
[0049] 具体地,可以针对各阶段分别执行:确定该任务对应的基准任务以及该阶段占用的资源类型;然后依据该阶段的关键因子以及预先得到的基准任务的关键因子和对该资源类型的资源占用量,确定该阶段对该资源类型的资源占用量。
[0050] 以视频编码阶段为例,假设选择输出为2880×1920分辨率的Cubemap映射转码为基准任务。该基准任务在视频编码阶段的关键因子分别为:wbase、hbase、nbase和fbase,预先对基准任务进行实测(例如多次测量后取均值),得到基准任务的视频编码阶段对GPU硬件编码器的占用量GEbase。
[0051] 那么该视频编码阶段对GPU硬件编码器的资源占用量GE可以为:
[0052]
[0053] 其中,w、h、n和f分别为该视频编码阶段的关键因子。当然公式(1)给出的是一种线性关系,但本发明并不限于该种线性关系,也可以采用其他非线性的方式以基准任务对资源的占用量来确定实际任务对资源的占用量。
[0054] 采用类似的方式,可以确定出其他各阶段对对应资源类型的资源占用量,例如,确定视频解码阶段对GPU硬件解码器的资源占用量GD,预处理阶段中的水印处理对CPU的资源占用量C,以及预处理阶段中的缩放、映射、滤波处理阶段对GPU计算资源的资源占用量GP。
[0055] 在303中,整合该任务所包含各阶段的资源占用状况,得到该任务对各资源的占用量。
[0056] 若一个任务包含的各阶段占用的资源类型有相同的,例如若视频解码阶段占用CPU,水印处理也占用CPU,那么在进行整合时,将这两个阶段对CPU的资源占用量进行求和。这样,就得到了一个任务对各类型资源的占用量。
[0057] 继续参见图1,在确定出一个任务对各资源的占用量后,开始对该任务进行具体的资源调度。
[0058] 在102中,从HPC集群中分配一个节点用以执行该任务,其中被分配节点的剩余资源满足任务对各资源的占用量。
[0059] 在HPC集群中,每个节点都采用“GPU+CPU”架构,即都具有GPU和CPU资源,本步骤就是在HPC集群中确定一个节点,该节点的剩余资源需要满足上述任务对各资源的占用量。所谓剩余资源满足任务对各资源的占用量指的是,该节点中各类型资源的剩余量均需要大于或等于任务对各类型资源的占用量。例如,若节点中CPU资源、GPU硬件解码器资源、GPU计算资源、GPU硬件编码器资源的剩余量分别为Crmn、GDrmn、GPrmn和GErmn,那么至少需要满足如下条件:
[0060]
[0061] 确定出该节点后,由该节点开始执行上述任务。
[0062] 本步骤可以对HPC集群中的各节点进行遍历,一旦遍历到一个节点满足上述条件,则分配该节点用以执行上述任务。也可以在HPC集群中确定满足上述条件的节点,若存在多个节点都满足上述条件,则可以从中选择一个节点用以执行上述任务。其中可以任意选择一个节点,也可以选择资源占用率最低的节点,或者也可以选择剩余资源量最多的节点,或者,也可以选择其中某一种资源的剩余量最多的节点,例如选择GPU硬件编码器的剩余量最多的节点。还可以采用其他选择策略,在此不再穷举。
[0063] 上述资源分配的方式适用于单任务,也同样适用于任务组。也就是说,上述任务包括单任务和任务组。所谓任务组就是由多个相关的单任务构成的集合。在全景视频转码中最典型的任务组就是,针对同一视频源的不同转码任务。例如,对于同一个全景视频,使用不同的映射模型进行转码,那么各个转码任务分别为单任务,这些单任务可以构成一个任务组。再例如,对于同一个全景视频,使用相同的映射模型,但需要转码成不同的分辨率进行输出,则各个转码任务分别为单任务,这些单任务可以构成一个任务组。
[0064] 对于此类任务组而言,尽量将任务组分配在一个节点上,因为如果将视频源相同的转码任务分配在不同的节点上,需要每个节点都从网上下载或者从其他节点上拷贝全景视频,对于时间和资源而言,都会造成浪费。但往往并不是任何时候都能够找到一个节点可以容纳整个任务组,在这种情况下,就需要考虑找到尽可能少的节点来执行该任务组,从而起到节省时间和资源的效果。
[0065] 下面结合实施例对任务组的资源分配方式进行描述。图4a为本发明实施例提供的任务组的资源分配方法流程图,如图4a所示,该方法可以包括以下步骤:
[0066] 步骤401:确定任务组对各资源的占用量。
[0067] 在本步骤中,首先采用图1所示实施例中步骤101所述的方式确定任务组中每个单任务对各资源的占用量,然后对任务组中所有单任务对各资源的占用量进行整合,得到任务组对各资源的占用量。
[0068] 步骤402:判断HPC集群中是否存在剩余资源满足该任务组对各资源的占用量的节点,如果是,执行403;否则,执行405。
[0069] 在403中,分配其中一个剩余资源满足该任务组对各资源的占用量的节点用以执行该任务组。
[0070] 在404中,判断是否从任务组中删除过任务,如果否,则结束针对该任务组的资源分配;否则,执行406。
[0071] 在405中,从该任务组中删除部分任务后,针对该任务组转至执行步骤401。
[0072] 若在HPC集群中没有节点可以容纳整个任务组,可以尝试从任务组中删除部分任务,例如删除1个任务,或者删除2个任务,然后对删除部分任务后的任务组进行资源占用量的确定,以及判断是否HPC集群中有节点能够容纳该任务组。如果仍没有,继续删除部分任务,直至有节点能够容纳任务组。
[0073] 在406中,将从任务组中删除的所有任务组建成一个新的任务组,针对该新的任务组转至执行步骤401。
[0074] 对于从任务组删除的任务,将其组建成一个新的任务组,然后继续确定该任务组对各资源的占用量,以及判断是否有节点能够容纳该新的任务组,方式与上面一样。这样逐步分配,就能够将同一个任务组中的各任务分配在尽量少的节点上。
[0075] 举一个例子,假设某个任务组包含任务1、任务2、任务3、…、任务8。确定出该任务组对各资源的占用量后,遍历HPC集群后发现没有节点可以同时容纳该任务组,即没有节点的剩余资源满足该任务组对各资源的占用量。那么可以将该任务组中删除一个任务,例如删除任务8。将包含任务1至任务7的任务组进行各资源占用量的确定,然后遍历HPC集群,若仍没有节点可以同时容纳该任务组,则将该任务组中的任务7删除。将包含任务1至任务6的任务组进行资源占用量的确定,然后遍历HPC集群,若此时能够找到一个节点容纳该任务组,假设为节点A,则将该节点A分配给该任务组以执行任务1至任务6。然后将任务7和任务8构成一个新的任务组,确定该任务组对各资源的占用量,遍历HPC集群,若此时能够找到一个节点,假设为节点B能够容纳该任务组,则将该节点B分配给该任务组以执行任务7和任务8。如图4b所示,最终将任务组分成了两个新的任务组,即任务组a和任务组b,一个任务组a由任务1至任务6组成,分配节点A来执行该任务组a中的各任务,任务组b由任务7和任务8组成,分配节点B来执行该任务组b中的各任务。也就是说,通过上述资源分配方式,使得两个节点在分担整个任务组的处理。
[0076] 对于采用上述方式进行的资源分配,可以对资源分配的结果进行分析,从而不断地对其中涉及的参数进行优化。例如可以优化各阶段占用的资源类型、关键因子的设计、各阶段的资源占用量的计算方式等等。
[0077] 对于一个实际的转码系统中,每个调度周期均可以按照图5所示的流程执行,即在一个调度周期内,首先在501中获取所有需要调度的任务。然后在502中依据预设的原则对任务进行分组。在503中采用如图4中所示的方式对任务组进行调度。在504中采用如图1中所示的方式对剩余没有在任何分组内的单任务进行调度。所有任务调度完成后退出,等待下一个调度周期。由于资源毕竟是有限的,可能会出现某些任务在本次调度周期内无法找到合适节点的情况,对于这种任务自动加入下一个调度周期。在下一个调度周期内,可能有些任务已经执行完毕,一些资源被释放,这些任务就能够找到合适的节点来执行。
[0078] 以上是对本发明实施例提供的方法进行的描述,下面结合实施例对本发明提供的装置进行描述。图6为本发明实施例提供的用于视频转码的资源分配装置结构图,如图6所示,该装置可以包括:资源计算单元00和资源分配单元10。其中各组成单元的主要功能如下:
[0079] 资源计算单元00负责确定视频转码任务对资源的占用量,资源包括GPU硬件解码器、GPU计算资源和GPU硬件编码器中的至少一种以及CPU,或者各资源包括GPU硬件解码器、GPU计算资源和GPU硬件编码器。
[0080] 为了最大限度的利用资源,本发明实施例将GPU资源细分为GPU硬件解码器、GPU计算资源和GPU硬件编码器。任务所使用的资源除了节点的CPU资源之外,还可以使用上述三种GPU资源中的至少一种,或者任务仅由上述三种GPU资源来执行。
[0081] 一个典型的全景视频转码任务可以分为多个阶段,包括解码、预处理和编码三个阶段,其中预处理阶段又可以根据不同的处理进行更细粒度的划分,例如划分为水印处理、缩放、映射和滤波等。每个阶段可以放在不同类型的资源上执行。例如解码阶段可以放在GPU硬件解码器,也可以放在CPU上。预处理阶段中的水印处理阶段放在CPU上。视频预处理阶段中的视频缩放、映射或滤波处理等可以放在GPU计算资源上,也可以放在CPU上。视频编码阶段可以放在GPU硬件编码器上,也可以放在CPU上。
[0082] 一个任务占用什么类型的资源可以预先确定,例如,优选解码阶段占用GPU硬件解码器,预处理阶段中的水印处理占用CPU资源,预处理阶段中的视频缩放、映射或滤波处理占用GPU计算资源,编码阶段占用GPU硬件编码器,如图2中所示。
[0083] 在预先确定任务占用的资源类型时,一方面可以依据任务属性来确定,例如对于H.265格式的全景视频转码,为了保证输出质量,限制编码阶段占用CPU资源。另一方面可以依据当前所使用高性能计算集群的硬件能力确定,例如高性能计算集群中GPU硬件编码器的能力较强,则编码阶段可以占用GPU硬件编码器,否则可以占用CPU。
[0084] 预先确定了任务各阶段占用的资源类型后,任务对各资源的占用量的确定方式可以采用先验值的方式,例如预先通过试验的方式确定出各种任务对各种资源的占用量,但这种方式需要穷举各种任务,且依据各阶段占用的资源类型进行组合的穷举,一方面需要进行数量巨大的试验,另一方面扩展性很差,一旦有新的类型的任务出现,则很难实时应用。在此,本发明实施例提供了一种优选的实现方式来确定任务对各资源的占用量。如图6所示,资源计算单元00可以具体包括:确定子单元01、计算子单元02和整合子单元03。
[0085] 其中,确定子单元01负责确定任务所包含各阶段的关键因子,关键因子与资源占用量呈正比。
[0086] 对于每个阶段可以预先设计一些关键因子,这些关键因子能够反映全景视频在该阶段的处理对资源的占用量,这些关键因子与资源占用量之间呈正比关系,这样资源占用量就可以用这些关键因子的乘积来体现。
[0087] 例如,对于视频编码阶段,可以将视频输出分辨率(w,h),输出流数量(n)以及编码格式(f)作为关键因子。依据关键因子对资源的影响状况给各因子赋予一定数值,例如对于输出流数量是1的,关键因子n取值为1;对于Pyramid映射方式等输出流数量是N的,关键因子n取值为N。再例如,对于H.265格式对硬件资源的占用大约是H.264格式的2倍,因此可以将H.264格式编码的关键因子f取1,H.265格式的f取2。
[0088] 再例如,对于视频解码阶段,可以将视频输出分辨率、视频格式作为关键因子。对于视频预处理阶段,可以将视频输出分辨率、预处理类型等作为关键因子。
[0089] 一个具体的任务,各阶段的关键因子可以根据经验或者经过多种试验等方式来确定。
[0090] 计算子单元02负责利用任务所包含各阶段的关键因子以及各阶段占用的资源类型,分别确定任务所包含各阶段的资源占用状况。
[0091] 各阶段的资源占用状况一方面包括各阶段占用的资源类型,另一方面包括各阶段对对应资源类型的资源占用量。各阶段占用的资源类型可以预先确定,而各阶段对对应资源类型的资源占用量则可以采用各阶段的关键因子与基准任务进行比对后,依照基准任务的资源占用量来确定。
[0092] 具体地,可以针对各阶段分别执行:确定该任务对应的基准任务以及该阶段占用的资源类型;然后依据该阶段的关键因子以及预先得到的基准任务的关键因子和对该资源类型的资源占用量,确定该阶段对该资源类型的资源占用量。
[0093] 整合子单元03负责整合任务所包含各阶段的资源占用状况,得到任务对各资源的占用量。
[0094] 资源分配单元10负责从高性能计算集群中分配一个节点用以执行任务,其中被分配节点的剩余资源满足任务对各资源的占用量。
[0095] 在HPC集群中,每个节点都采用“GPU+CPU”架构,即都具有GPU和CPU资源,本步骤就是在HPC集群中确定一个节点,该节点的剩余资源需要满足上述任务对各资源的占用量。所谓剩余资源满足任务对各资源的占用量指的是,该节点中各类型资源的剩余量均需要大于或等于任务对各类型资源的占用量。
[0096] 资源分配单元10可以对HPC集群中的各节点进行遍历,一旦遍历到一个节点满足上述条件,则分配该节点用以执行上述任务。也可以在HPC集群中确定满足上述条件的节点,若存在多个节点都满足上述条件,则可以从中选择一个节点用以执行上述任务。其中可以任意选择一个节点,也可以选择资源占用率最低的节点,或者也可以选择剩余资源量最多的节点,或者,也可以选择其中某一种资源的剩余量最多的节点,例如选择GPU硬件编码器的剩余量最多的节点。还可以采用其他选择策略,在此不再穷举。
[0097] 上述任务可以为单任务,也可以为任务组。所谓任务组就是由多个相关的单任务构成的集合。在全景视频转码中最典型的任务组就是,针对同一视频源的不同转码任务。例如,对于同一个全景视频,使用不同的映射模型进行转码,那么各个转码任务分别为单任务,这些单任务可以构成一个任务组。再例如,对于同一个全景视频,使用相同的映射模型,但需要转码成不同的分辨率进行输出,则各个转码任务分别为单任务,这些单任务可以构成一个任务组。
[0098] 对于此类任务组而言,尽量将任务组分配在一个节点上,因为如果将视频源相同的转码任务分配在不同的节点上,需要每个节点都从网上下载或者从其他节点上拷贝全景视频,对于时间和资源而言,都会造成浪费。但往往并不是任何时候都能够找到一个节点可以容纳整个任务组,在这种情况下,就需要考虑找到尽可能少的节点来执行该任务组,从而起到节省时间和资源的效果。因此,资源分配单元10可以包括:判断子单元11、分配子单元12、调整子单元13和组建子单元14。
[0099] 其中,判断子单元11负责判断HPC集群中是否存在剩余资源满足任务组对各资源的占用量的节点。
[0100] 分配子单元12负责在判断子单元11的判断结果为是时,分配其中一个剩余资源满足任务组对各资源的占用量的节点用以执行任务组。
[0101] 调整子单元13负责在判断子单元11的判断结果为否时,从任务组中删除部分任务后,触发资源计算单元00针对该任务组继续执行确定该任务组对各资源的占用量的操作,直至分配子单元12从HPC集群中分配一个节点用以执行该任务组,触发组建子单元14。
[0102] 组建子单元14受到调整子单元13的触发后,将从任务组中删除的任务组建成一个新的任务组,触发资源计算单元10针对该新的任务组执行确定该任务组对各资源的占用量的操作。
[0103] 图7示例性地示出了根据各种实施例的示例设备700。设备700可包括一个或多个处理器702,系统控制逻辑701耦合于至少一个处理器702,非易失性存储器(non-volatile memory,NMV)/存储器704耦合于系统控制逻辑701,网络接口706耦合于系统控制逻辑701。
[0104] 处理器702可包括一个或多个单核处理器或多核处理器。处理器702可包括任何一般用途处理器或专用处理器(如图像处理器、应用处理器基带处理器等)的组合。
[0105] 一个实施例中的系统控制逻辑701,可包括任何适当的接口控制器,以提供到处理器702中的至少一个的任何合适的接口,和/或提供到与系统控制逻辑701通信的任何合适的设备或组件的任何合适的接口。
[0106] 一个实施例中的系统控制逻辑701,可包括一个或多个内存控制器,以提供到系统内存703的接口。系统内存703用来加载以及存储数据和/或指令。例如,对应设备700,在一个实施例中,系统内存703可包括任何合适的易失性存储器。
[0107] NVM/存储器704可包括一个或多个有形的非暂时的计算机可读介质,用于存储数据和/或指令。例如,NVM/存储器704可包括任何合适的非易失性存储装置,如一个或多个硬盘(hard disk device,HDD),一个或多个光盘(compact disk,CD),和/或一个或多个数字通用盘(digital versatile disk,DVD)。
[0108] NVM/存储器704可包括存储资源,该存储资源物理上是该系统所安装的或者可以被访问的设备的一部分,但不一定是设备的一部分。例如,NVM/存储器704可经由网络接口706被网络访问。
[0109] 系统内存703以及NVM/存储器704可分别包括临时的或持久的指令710的副本。指令710可包括当由处理器702中的至少一个执行时导致设备700实现图1、图3、图4a和图5描述的方法之一或组合的指令。各实施例中,指令710或硬件、固件,和/或软件组件可另外地/可替换地被置于系统控制逻辑701,网络接口706和/或处理器702。
[0110] 网络接口706可包括一个接收器来为设备700提供无线接口来与一个或多个网络和/或任何合适的设备进行通信。网络接口706可包括任何合适的硬件和/或固件。网络接口706可包括多个天线来提供多输入多输出无线接口。在一个实施例中,网络接口706可包括一个网络适配器、一个无线网络适配器、一个电话调制解调器,和/或无线调制解调器。
[0111] 在一个实施例中,处理器702中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装以形成系统级封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上以形成系统芯片。
[0112] 设备700可进一步包括输入/输出装置705。输入/输出装置705可包括用户接口旨在使用户与设备700进行交互,可包括外围组件接口,其被设计为使得外围组件能够与系统交互,和/或,可包括传感器,旨在确定环境条件和/或有关设备700的位置信息。
[0113] 列举一个应用场景:
[0114] 在VR直播或点播系统中,VR直播或点播服务器可以采用HPC集群实现,通过本发明实施例中提供的方式,确定视频转码任务对各资源的占用量后,从HPC集群中分配一个剩余资源满足该任务对各资源的占用量的节点用以执行该视频转码任务,从而更加合理和充分地利用HPC集群中丰富的CPU、GPU硬件编码器、GPU计算资源和GPU硬件解码器资源,提高灵活性。
[0115] 由以上描述可以看出,本发明提供的方法、装置和设备可以具备以下优点:
[0116] 1)本发明采用更加细致的资源分配粒度,除了将资源分为CPU和GPU之外,将GPU资源分为GPU硬件解码器、GPU计算资源和GPU硬件编码器,确定视频转码任务对各资源的占用量后,从HPC集群中分配一个节点用以执行该任务,从而更加合理和充分地利用HPC集群的资源,同时又保证了转码速度和质量。相比较现有技术中将解码任务和编码任务固定地分配在CPU或GPU中的其中一种资源上,实现更加灵活。
[0117] 2)本发明中,将转码任务分为多个阶段,每个阶段都利用预先设计的关键因子和基准任务确定各阶段对各种资源的占用量,从而进一步实现任务对各资源占用量的计算,计算效率更高。
[0118] 3)本发明还提供了一种基于任务组的调度方式,将具有联系的一组任务调度在尽量少的节点上执行,从而取得最佳性能。
[0119] 在本发明所提供的几个实施例中,应该理解到,所揭露的方法、装置和设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0120] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0121] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0122] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0123] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈