CN114860440B - Gpu显存管理方法及装置 - Google Patents

Gpu显存管理方法及装置 Download PDF

Info

Publication number
CN114860440B
CN114860440B CN202210473100.0A CN202210473100A CN114860440B CN 114860440 B CN114860440 B CN 114860440B CN 202210473100 A CN202210473100 A CN 202210473100A CN 114860440 B CN114860440 B CN 114860440B
Authority
CN
China
Prior art keywords
video
gpu
decoding
video data
thread
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.)
Active
Application number
CN202210473100.0A
Other languages
English (en)
Other versions
CN114860440A (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.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software 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 Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN202210473100.0A priority Critical patent/CN114860440B/zh
Publication of CN114860440A publication Critical patent/CN114860440A/zh
Application granted granted Critical
Publication of CN114860440B publication Critical patent/CN114860440B/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请提供了一种GPU显存管理方法,该方法包括:获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数;所述视频数据信息包括:摄像头IP、视频数据的分辨率以及视频数据的格式;根据所述视频数据信息以及所述GPU的最大承载路数创建映射集合,所述映射集合中的硬编解码句柄与线程一一对应,将所述映射集合存储在一个数组中;基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。采用本方法能够在单GPU或多GPU的情况下,提高显存的管理效率。

Description

GPU显存管理方法及装置
技术领域
本申请涉及音视频硬件编解码技术领域,尤其涉及一种GPU显存管理方法、装置、电子设备及可读存储介质。
背景技术
硬件编解码通常称为硬编码解码,硬编解码主要依赖GPU(Graphic ProcessUnit,图形处理器),使用硬件芯片厂商提供的API(Application Programming Interface,应用程序编程接口)进行编解码,这些编解码器已经被集成到了硬件底层,例如基于Nvidia显卡进行API级调度,从而达到编解码的目的。
相关技术中,调度显卡的方式为:首先与摄像头建立连接,然后调用相关API从GPU中分配一块显存来创建硬编解码句柄,从而获取硬编解码能力,每来一路摄像头都要创建对应的硬编解码句柄,直至显存用完,这种情况下,应用层需要频繁进行显卡调度,导致利用显存的效率较低。
综上,在单GPU或多GPU的情况下,如何提高显存的管理效率当前亟需解决的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种GPU显存管理方法,解决了在单GPU或多GPU的情况下,显存管理效率较低的问题。
为了实现上述目的,本申请实施例提供技术方案如下:
第一方面,本申请的实施例提供一种GPU显存管理方法,所述方法包括:
获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数;所述视频数据信息包括:摄像头IP、视频数据的分辨率以及视频数据的格式;
根据所述视频数据信息以及所述GPU的最大承载路数创建映射集合,所述映射集合中的硬编解码句柄与线程一一对应,将所述映射集合存储在一个数组中;
基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。
作为本申请实施例一种可选的实施方式,在获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数之前,所述方法还包括:
获取GPU的数量;其中,所述GPU的数量为1个或多个。
作为本申请实施例一种可选的实施方式,所述GPU的数量为1个,所述获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数,包括:
获取待处理视频流的视频数据信息;
获取待处理视频流的第一显存占用量;
通过调用系统应用程序编程接口函数获取GPU的总显存;
根据所述第一显存占用量和所述GPU的总显存,计算硬编解码句柄的数量;
确定所述硬编解码句柄的数量为最大承载摄像头路数。
作为本申请实施例一种可选的实施方式,所述GPU的数量为多个,所述获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数,包括:
获取每个GPU的最大承载摄像头路数;
对每个GPU的最大承载摄像头路数进行求和,获取GPU的最大承载摄像头路数。
作为本申请实施例一种可选的实施方式,所述基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理,包括:
当接收到第一视频流时,从数组中获取第一线程和第一硬编解码句柄;所述第一线程的初始状态处于空闲状态;所述第一线程和第一硬编解码句柄以摄像头IP命名;
所述第一线程调用所述第一硬编解码句柄对所述第一视频流进行编解码处理,并将所述第一线程的状态设置为工作状态。
作为本申请实施例一种可选的实施方式,所述方法还包括:根据所述视频数据的分辨率以及所述视频数据的格式创建硬编解码句柄。
作为本申请实施例一种可选的实施方式,在基于预先建立的各个线程与硬编解码句柄集合内的各个数组成员的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理之后,所述方法还包括:
对所述待处理视频流进行视频数据分析或视频数据推流。
第二方面,本申请实施例提供一种GPU显存管理装置,包括:
获取模块,用于获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数;所述视频数据信息包括:摄像头IP、视频数据的分辨率以及视频数据的格式;
映射模块,用于根据所述视频数据信息以及所述GPU的最大承载路数创建映射集合,所述映射集合中的硬编解码句柄与线程一一对应,将所述映射集合存储在一个数组中;
编解码模块,用于基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。
作为本申请实施例一种可选的实施方式,所述装置还包括:数量模块,所述数量模块用于:获取GPU的数量;其中,所述GPU的数量为1个或多个。
作为本申请实施例一种可选的实施方式,所述GPU的数量为1个,所述数量模块具体用于:
获取待处理视频流的视频数据信息;
获取待处理视频流的第一显存占用量;
通过调用系统应用程序编程接口函数获取GPU的总显存;
根据所述第一显存占用量和所述GPU的总显存,计算硬编解码句柄的数量;
确定所述硬编解码句柄的数量为最大承载摄像头路数。
作为本申请实施例一种可选的实施方式,所述GPU的数量为多个,所述数量模块,具体用于:
获取每个GPU的最大承载摄像头路数;
对每个GPU的最大承载摄像头路数进行求和,获取GPU的最大承载摄像头路数。
作为本申请实施例一种可选的实施方式,所述编解码模块,具体用于:
当接收到第一视频流时,从数组中获取第一线程和第一硬编解码句柄;所述第一线程的初始状态处于空闲状态;所述第一线程和第一硬编解码句柄以摄像头IP命名;
所述第一线程调用所述第一硬编解码句柄对所述第一视频流进行编解码处理,并将所述第一线程的状态设置为工作状态。
作为本申请实施例一种可选的实施方式,所述装置还包括映射模块,所述映射模块具体用于:根据所述视频数据的分辨率以及所述视频数据的格式创建硬编解码句柄。
作为本申请实施例一种可选的实施方式,所述装置还包括处理模块,所述处理模块具体用于:对所述待处理视频流进行视频数据分析或视频数据推流。
第三方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面或第一方面的任一实施方式所述的GPU显存管理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面或第一方面的任一实施方式所述的GPU显存管理方法。
本申请提供的GPU显存管理方法,首先获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数,根据视频数据信息以及GPU的最大承载路数创建映射集合,基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。由于映射集合中的硬编解码句柄与线程一一对应,且硬编解码句柄存储于显存中,应用层通过调用线程的方式调用硬编解码句柄对待处理视频流进行编解码处理,从而实现通过管理线程来达到管理显存的目的,减少应用层频繁的显存申请,进一步提高显存的管理效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中GPU显存管理方法的流程示意图;
图2为另一个实施例中GPU显存管理方法的流程示意图;
图3为一个实施例中GPU显存管理装置的结构示意图;
图4为本申请实施例所述的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面将对本申请的方案进行进一步描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本申请还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本申请的一部分实施例,而不是全部的实施例。
本申请的说明书和权利要求书中的术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
在本申请实施例中,“示例性的”或者“例如”等词是用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。此外,在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
本申请实施例的整体构思为:首先计算一路视频流的显存占用,然后计算出当前GPU最大承载摄像头路数,并一次性创建最大路数的编解码句柄,同时将线程和显存建立联系,通过管理线程的方式达到管理显存的目的,从而,应用层无需频繁进行显卡调度,只需关注业务的实现。
其中,应用层为用于通信的应用程序和用于消息传输的底层网络提供接口。应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。
本公开提供一种GPU显存管理方法,该方法可应用于物联网行业视频网关系统的接入终端阶段。其中,视频网关是连接两个或多个管理上的相异的网络/子网的节点,是一种存储转发设备,视频网关是一种高性能的嵌入式多功能媒体网关设备,集流媒体协议转换、流媒体分发服务、多路视频解码、视频画面分割等核心功能于一体。视频网关可应用于将不同系统、不同类型、不同编码的视频内容进行格式视频转化、协议互通、解码输出、分割显示等方面。例如,可以用于监控转直播、各场景下的监控接入公安网等。示例性的,视频联网网关可支持3块双宽GPU卡或8块单宽GPU卡。
在一个实施例中,如图1所示,提供一种GPU显存管理方法,该方法可应用于物联网行业视频网关系统的接入终端阶段,该GPU显存管理方法包括如下步骤:
S11、获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数。
其中,所述视频数据信息包括:摄像头IP、视频数据的分辨率以及视频数据的格式。
具体的,主进程通过多媒体视频处理工具的相应API拉取摄像头视频数据流,同时探测视频数据流的视频数据信息。其中,多媒体视频处理工具可以是FFmpeg(Fast ForwardMoving Picture Experts Group,快进动态图像专家组),FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,它的功能有视频采集、视频格式转换、视频抓图以及给视频加水印等。
示例性的,分辨率表示视频画面像素密度,例如常见的720P、1080P等。摄像头IP可以用IP1、IP2、IP3等进行表示,摄像头IP实际上可以是192.168.1.64、192.168.1.00等。数据格式可以是H264、H265等,数据格式不同,压缩编码需要的显存容量的大小不同,显存容量的大小决定着显存临时存储数据的能力,显存越大,图像精确度越高。大显存能减少读取数据的次数,降低延迟,特别是在高分辨率和开启高倍抗锯齿的情况下。需要说明的是,此处对摄像头IP、视频数据的分辨率以及视频数据的格式不进行具体限制,以上仅为几种可能的情况。
另外,视频数据信息还可以包括:帧率、码率等,此处不做具体限制。其中,帧率表示视频画面每秒有多少帧画面,数值越大画面越流畅,单位为fps(frame pre second,每秒传输帧数)。码率表示视频每秒输出的数据量,数值越大画面越清晰,单位为bps(bit presecond,每秒传送的比特率)。
S12、根据所述视频数据信息以及所述GPU的最大承载路数创建映射集合,所述映射集合中的硬编解码句柄与线程一一对应,将所述映射集合存储在一个数组中。
其中,创建硬编解码句柄的句柄数量与GPU的最大承载路数相同;创建线程的线程数量与GPU的最大承载路数相同;线程列表中的每一项都映射一个编/解码线程。
线程是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能。硬编解码句柄可以理解为处理音视频流的工具。
具体的,硬件编解码通常称为硬编码硬解码,硬编解码就是通过硬件进行视频的编码或解码工作,硬编解码是由GPU来进行的,使用GPU解码能够降低CPU的工作负荷,降低功耗。例如,在移动设备上主要使用的就是硬编解码,在高分辨率视频流中也是使用硬件编码。
示例性的,创建的映射集合可以是:{(线程ip1:编解码ip1),(线程ip2:编解码ip2),…(线程ipn,编解码ipn)}。
在一些实施例中,根据视频数据的分辨率以及视频数据的格式创建硬编解码句柄。
S13、基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。
具体的,当客户摄像头接入系统时,基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。
应该用本申请实施例,本申请提供的GPU显存管理方法,首先获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数,根据视频数据信息以及GPU的最大承载路数创建映射集合,基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。由于映射集合中的硬编解码句柄与线程一一对应,且硬编解码句柄存储于显存中,应用层通过调用线程的方式调用硬编解码句柄对待处理视频流进行编解码处理,从而实现通过管理线程来达到管理显存的目的,减少应用层频繁的显存申请,进一步提高显存的管理效率。
作为本申请实施例一种可选的实施方式,在执行步骤S11(获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数)之前,还可以执行如下步骤:获取GPU的数量。
其中,所述GPU的数量为1个或多个。
在一些实施例中,GPU的数量为1个时,获取GPU的最大承载摄像头路数,通过如下方式实现:
①、获取待处理视频流的视频数据信息。
示例性的,通过FFmpeg探测待处理视频流的视频数据信息。
②、获取待处理视频流的第一显存占用量。
示例性的,根据相应的API函数查询待处理视频流的显存占用量。例如,当前视频流显存占用量为816MiB(Mega binary byte,二进制兆字节)。
③、通过调用系统应用程序编程接口函数获取GPU的总显存。
示例性的,调用系统应用程序编程接口函数获取GPU的总显存。例如,当前GPU的总显存大小为8191MiB。
④、根据所述第一显存占用量和所述GPU的总显存,计算硬编解码句柄的数量。
具体的,可以通过区域的方式,根据GPU的总显存和第一显存占用量计算初当前GPU最多可建立的硬编解码句柄的数量。例如,8191MiB和816MiB取余的结果为10。
⑤、确定所述硬编解码句柄的数量为最大承载摄像头路数。
具体的,确定硬件编解码句柄的数量为最大承载摄像头路数。
在一些实施例中,GPU的数量为多个时,获取GPU的最大承载摄像头路数,通过如下方式实现:
a、获取每个GPU的最大承载摄像头路数。
b、对每个GPU的最大承载摄像头路数进行求和,获取GPU的最大承载摄像头路数。
示例性的,若GPU的数量为两个,按照上述方式获取每个GPU的最大承载摄像头路数,若其中一个GPU的最大承载摄像头路数为20,另一个GPU的最大承载摄像头路数为50,则系统获取到的GPU的最大承载摄像头路数为70,从而创建的编解码句柄数量和线程数量也为70。
在一些实施例中,步骤S13(基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理),可以通过如下方式实现:
当接收到第一视频流时,从数组中获取第一线程和第一硬编解码句柄;所述第一线程的初始状态处于空闲状态;所述第一线程和第一硬编解码句柄以摄像头IP命名。
所述第一线程调用所述第一硬编解码句柄对所述第一视频流进行编解码处理,并将所述第一线程的状态设置为工作状态。
示例性的,假设GPU的最大承载路数为10路,创建的编解码句柄集合的句柄数量和线程池的线程数量都分别是10个,[(线程1<IP1>:编解码1<IP1>),.....,(线程10<IP10>:编解码10<IP10>)]。当有一个摄像头接入时,就有一路视频流需要处理,例如第一视频流,此时从数组中取出的线程是任意一个空闲线程,例如第一线程,然后第一线程和第一编解码句柄均以摄像头IP命名,第一线程调用第一硬编解码句柄对第一视频流进行编解码处理,同时将这个空闲线程设置为工作状态。
通过这种方式,系统可以通过管理线程的方式管理GPU显存。
在一些实施例中,在图1的基础上,执行步骤S13之后,参照图2所示,还可以执行如下步骤S14:
S14、对所述待处理视频流进行视频数据分析或视频数据推流。
具体的,对待处理视频流编解码完成后,可进行视频数据的进一步处理,处理方式可以是对视频数据进行AI(Artificial Intelligence,人工智能)分析、进行视频数据推流、对视频数据的图像像素数据进行图像变换、保存为像素数据文件等,此处不做具体限制。例如,可以分析视频流以检测特定行为和事件,也可以将视频数据推流给显示器,使得视频数据在显示器上进行显示。
应用本申请实施例,本申请提供的GPU显存管理方法,首先获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数,根据视频数据信息以及GPU的最大承载路数创建映射集合,基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。由于映射集合中的硬编解码句柄与线程一一对应,且硬编解码句柄存储于显存中,应用层通过调用线程的方式调用硬编解码句柄对待处理视频流进行编解码处理,从而实现通过管理线程来达到管理显存的目的,减少应用层频繁的显存申请,进一步提高显存的管理效率。
在一个实施例中,如图4所示,提供了一种GPU显存管理装置300,包括:
获取模块310,用于获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数;所述视频数据信息包括:摄像头IP、视频数据的分辨率以及视频数据的格式;
映射模块320,用于根据所述视频数据信息以及所述GPU的最大承载路数创建映射集合,所述映射集合中的硬编解码句柄与线程一一对应,将所述映射集合存储在一个数组中;
编解码模块330,用于基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。
作为本申请实施例一种可选的实施方式,所述装置还包括:数量模块,所述数量模块用于:获取GPU的数量;其中,所述GPU的数量为1个或多个。
作为本申请实施例一种可选的实施方式,所述GPU的数量为1个,所述数量模块具体用于:
获取待处理视频流的视频数据信息;
获取待处理视频流的第一显存占用量;
通过调用系统应用程序编程接口函数获取GPU的总显存;
根据所述第一显存占用量和所述GPU的总显存,计算硬编解码句柄的数量;
确定所述硬编解码句柄的数量为最大承载摄像头路数。
作为本申请实施例一种可选的实施方式,所述GPU的数量为多个,所述数量模块,具体用于:
获取每个GPU的最大承载摄像头路数;
对每个GPU的最大承载摄像头路数进行求和,获取GPU的最大承载摄像头路数。
作为本申请实施例一种可选的实施方式,所述编解码模块,具体用于:
当接收到第一视频流时,从数组中获取第一线程和第一硬编解码句柄;所述第一线程的初始状态处于空闲状态;所述第一线程和第一硬编解码句柄以摄像头IP命名;
所述第一线程调用所述第一硬编解码句柄对所述第一视频流进行编解码处理,并将所述第一线程的状态设置为工作状态。
作为本申请实施例一种可选的实施方式,所述装置还包括映射模块,所述映射模块具体用于:根据所述视频数据的分辨率以及所述视频数据的格式创建硬编解码句柄。
作为本申请实施例一种可选的实施方式,所述装置还包括处理模块,所述处理模块具体用于:对所述待处理视频流进行视频数据分析或视频数据推流。
应用本申请实施例,本申请提供的GPU显存管理方法,首先获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数,根据视频数据信息以及GPU的最大承载路数创建映射集合,基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理。由于映射集合中的硬编解码句柄与线程一一对应,且硬编解码句柄存储于显存中,应用层通过调用线程的方式调用硬编解码句柄对待处理视频流进行编解码处理,从而实现通过管理线程来达到管理显存的目的,减少应用层频繁的显存申请,进一步提高显存的管理效率。
关于GPU显存管理装置的具体限定可以参见上文中对于GPU显存管理方法的限定,在此不再赘述。上述GPU显存管理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备的处理器中,也可以软件形式存储于电子设备的处理器中,以便于处理器调用执行以上各个模块对应的操作。
本申请实施例还提供了一种电子设备,图4为本申请实施例提供的电子设备的结构示意图。如图4所示,本实施例提供的电子设备包括:存储器41和处理器42,存储器41用于存储计算机程序;处理器42用于调用计算机程序时执行上述方法实施例提供的GPU显存管理方法中任一实施例所执行的步骤。所述电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,所述电子设备的处理器用于提供计算和控制能力。所述电子设备的存储器包括非易失性存储介质、内存储器。所述非易失性存储介质存储有操作系统和计算机程序。所述内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。所述计算机程序被处理器执行时以实现一种GPU显存管理方法。所述电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,所述电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的GPU显存管理装置可以实现为一种计算机的形式,计算机程序可以在如图4所示的电子设备上运行。电子设备的存储器中可存储组成该电子设备的针对客户端类型的GPU显存管理装置的各个程序模块,比如,图3中所示的获取模块310、映射模块320以及编解码模块330。各个程序模块构成的计算机程序使得处理器执行本说明书描述的本申请各个实施例的电子设备的GPU显存管理方法中的步骤。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例提供的GPU显存管理方法。
本领域技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
处理器可以是中央判断单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。根据本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种GPU显存管理方法,其特征在于,所述方法包括:
获取GPU的数量;其中,所述GPU的数量为1个或多个;
获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数;所述视频数据信息包括:摄像头IP、视频数据的分辨率以及视频数据的格式;
根据所述视频数据信息以及所述GPU的最大承载路数创建映射集合,所述映射集合中的硬编解码句柄与线程一一对应,将所述映射集合存储在一个数组中;
基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理;
当所述GPU的数量为1个时,所述获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数,包括:
获取待处理视频流的视频数据信息;
获取待处理视频流的第一显存占用量;
通过调用系统应用程序编程接口函数获取GPU的总显存;
根据所述第一显存占用量和所述GPU的总显存,计算硬编解码句柄的数量;
确定所述硬编解码句柄的数量为最大承载摄像头路数。
2.根据权利要求1所述的方法,其特征在于,所述GPU的数量为多个,所述获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数,包括:
获取每个GPU的最大承载摄像头路数;
对每个GPU的最大承载摄像头路数进行求和,获取GPU的最大承载摄像头路数。
3.根据权利要求1所述的方法,其特征在于,所述基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理,包括:
当接收到第一视频流时,从数组中获取第一线程和第一硬编解码句柄;所述第一线程的初始状态处于空闲状态;所述第一线程和第一硬编解码句柄以摄像头IP命名;
所述第一线程调用所述第一硬编解码句柄对所述第一视频流进行编解码处理,并将所述第一线程的状态设置为工作状态。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述视频数据的分辨率以及所述视频数据的格式创建硬编解码句柄。
5.根据权利要求1所述的方法,其特征在于,在基于预先建立的各个线程与硬编解码句柄集合内的各个数组成员的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理之后,所述方法还包括:
对所述待处理视频流进行视频数据分析或视频数据推流。
6.一种GPU显存管理装置,其特征在于,包括:
数量模块,用于获取GPU的数量;其中,所述GPU的数量为1个或多个;
获取模块,用于获取待处理视频流的视频数据信息以及GPU的最大承载摄像头路数;所述视频数据信息包括:摄像头IP、视频数据的分辨率以及视频数据的格式;
映射模块,用于根据所述视频数据信息以及所述GPU的最大承载路数创建映射集合,所述映射集合中的硬编解码句柄与线程一一对应,将所述映射集合存储在一个数组中;
编解码模块,用于基于数组的各个线程与各个硬编解码句柄的一一对应关系,各线程根据对应的硬编解码句柄对待处理视频流进行编解码处理;
当所述GPU的数量为1个时,所述获取模块具体用于:
获取待处理视频流的视频数据信息;
获取待处理视频流的第一显存占用量;
通过调用系统应用程序编程接口函数获取GPU的总显存;
根据所述第一显存占用量和所述GPU的总显存,计算硬编解码句柄的数量;
确定所述硬编解码句柄的数量为最大承载摄像头路数。
7.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的GPU显存管理方法。
8.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,计算机程序被处理器执行时实现权利要求1至5中任一项所述的GPU显存管理方法。
CN202210473100.0A 2022-04-29 2022-04-29 Gpu显存管理方法及装置 Active CN114860440B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210473100.0A CN114860440B (zh) 2022-04-29 2022-04-29 Gpu显存管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210473100.0A CN114860440B (zh) 2022-04-29 2022-04-29 Gpu显存管理方法及装置

Publications (2)

Publication Number Publication Date
CN114860440A CN114860440A (zh) 2022-08-05
CN114860440B true CN114860440B (zh) 2023-01-10

Family

ID=82636310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210473100.0A Active CN114860440B (zh) 2022-04-29 2022-04-29 Gpu显存管理方法及装置

Country Status (1)

Country Link
CN (1) CN114860440B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013107334A1 (en) * 2012-01-18 2013-07-25 Tencent Technology (Shenzhen) Company Limited Image rotation method and system for video player
CN108289228A (zh) * 2017-01-09 2018-07-17 阿里巴巴集团控股有限公司 一种全景视频转码方法、装置和设备
CN110381322A (zh) * 2019-07-15 2019-10-25 腾讯科技(深圳)有限公司 视频流解码方法、装置、终端设备及存储介质
CN111083561A (zh) * 2019-12-31 2020-04-28 深圳市商汤科技有限公司 视频处理方法、装置、设备和存储介质
CN112954357A (zh) * 2021-01-26 2021-06-11 四川天翼网络服务有限公司 一种动态高效自适应视频流智能编解码方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9232177B2 (en) * 2013-07-12 2016-01-05 Intel Corporation Video chat data processing
CN113327303B (zh) * 2021-08-03 2021-10-29 腾讯科技(深圳)有限公司 图像处理方法、装置、计算机设备及存储介质
CN114039279A (zh) * 2021-09-29 2022-02-11 交控科技股份有限公司 轨道交通站内的控制柜监控方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013107334A1 (en) * 2012-01-18 2013-07-25 Tencent Technology (Shenzhen) Company Limited Image rotation method and system for video player
CN108289228A (zh) * 2017-01-09 2018-07-17 阿里巴巴集团控股有限公司 一种全景视频转码方法、装置和设备
CN110381322A (zh) * 2019-07-15 2019-10-25 腾讯科技(深圳)有限公司 视频流解码方法、装置、终端设备及存储介质
CN111083561A (zh) * 2019-12-31 2020-04-28 深圳市商汤科技有限公司 视频处理方法、装置、设备和存储介质
CN112954357A (zh) * 2021-01-26 2021-06-11 四川天翼网络服务有限公司 一种动态高效自适应视频流智能编解码方法及系统

Also Published As

Publication number Publication date
CN114860440A (zh) 2022-08-05

Similar Documents

Publication Publication Date Title
CN111314741B (zh) 视频超分处理方法、装置、电子设备及存储介质
JP7191240B2 (ja) ビデオストリーム復号方法、装置、端末機器およびプログラム
CN107155093B (zh) 一种视频预览方法、装置及设备
CN105163127A (zh) 视频分析方法及装置
US9996894B2 (en) Image processing device, video subsystem and video pipeline
CN104469370A (zh) 一种视频转码的方法和装置
CN111147926B (zh) 一种数据转码方法及装置
US9179155B1 (en) Skipped macroblock video encoding enhancements
JP2010141821A (ja) ストリーミングプロセッサおよびプロセッサシステム
KR101569502B1 (ko) 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체
CN106162174A (zh) 一种视频多分辨率编码方法和装置
US9967465B2 (en) Image frame processing method
CN114860440B (zh) Gpu显存管理方法及装置
CN114339412A (zh) 视频质量增强方法、移动终端、存储介质及装置
US20140009563A1 (en) Non-video codecs with video conferencing
CN111835994B (zh) 多通道视频处理方法与系统
US20170163990A1 (en) Video transcoding method and system
CN112131423A (zh) 图片获取方法、装置及系统
CN102289358A (zh) 用于更有效地显示数据的计算机实现的方法、计算机程序产品和嵌入式系统
TWI565303B (zh) 影像處理系統及影像處理方法
CN115442617A (zh) 一种基于视频编码的视频处理方法和装置
CN111246215A (zh) 一种视频格式转换的方法及终端
CN113905240A (zh) 视频编码方法及装置、服务器、存储介质
CN115375530B (zh) 一种多gpu协同渲染方法、系统、装置及存储介质
US9336557B2 (en) Apparatus and methods for processing of media signals

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