CN117667408B - 一种gpu资源共享管理调度方法及系统 - Google Patents
一种gpu资源共享管理调度方法及系统 Download PDFInfo
- Publication number
- CN117667408B CN117667408B CN202311669864.8A CN202311669864A CN117667408B CN 117667408 B CN117667408 B CN 117667408B CN 202311669864 A CN202311669864 A CN 202311669864A CN 117667408 B CN117667408 B CN 117667408B
- Authority
- CN
- China
- Prior art keywords
- resource
- gpu
- resource object
- plug
- interface
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 105
- 230000000694 effects Effects 0.000 claims abstract description 121
- 238000012545 processing Methods 0.000 claims abstract description 33
- 238000012217 deletion Methods 0.000 claims description 68
- 230000037430 deletion Effects 0.000 claims description 68
- 230000008569 process Effects 0.000 claims description 34
- 230000007717 exclusion Effects 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 10
- 238000011423 initialization method Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 5
- 238000003672 processing method Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000003796 beauty Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种GPU资源共享管理调度方法及系统,属于图像处理技术领域,所述方法包括步骤1资源工厂注册,通过资源工厂接口类这一统一的接口定义,屏蔽了不同插件资源管理对象内部逻辑的不同,所述的资源工厂接口类由使用GPU资源的模块实现,步骤2资源对象初始化,步骤3资源对象获取,步骤4资源对象返还,步骤5资源对象删除。本发明通过一个通用的GPU资源管理器模块,定义了一套通用接口,实现了视频编辑软件对多个GPU视频特效插件所需GPU资源对象的统一管理和调度。
Description
技术领域
本发明属于图像处理技术领域,特别涉及一种GPU资源共享管理调度方法及系统。
背景技术
GPU可以在图像图像处理、AI训练推理等方面实现有效的加速处理,GPU和AI技术在视频编辑软件中已经得到广泛应用。GPU的显存是相当稀缺的资源,通常远小于机器内存。在大量使用了GPU和AI技术的高端视频编辑软件中,如果用户在故事板使用了很多种GPU视频特效插件,就会对机器的GPU显存配置有较高的要求,如果缺少良好的GPU资源共享管理和调度逻辑,就无法在低GPU显存配置的机器上正常运行。
在视频编辑软件应用场景中,虽然一个故事板中会用到很多GPU视频特效插件,但通常是在不同的时间段上分别使用,很多个插件都同时并行用在同一时间段的可能性比较小。这种情况下,在GPU资源使用时按需创建,不用时按需释放,可以有效解决GPU显存不足问题。对于相同类型的GPU视频特效插件分布在不同时间段的场景,采用相同GPU资源共享的方式,只创建一次,也能有效减少GPU显存占用,即使在同一个时间段的多个视频轨上都会用到不同的GPU视频特效插件,在GPU显存配置不足时,有可以采用GPU资源动态释放和创建方式,使程序能正常运行,只是会牺牲一些效率。GPU共享和管理调度策略,如果要在视频编辑软件的应用层来实现,需要考虑这些GPU视频特效插件分布在故事板中的时间和空间位置,处理逻辑会非常复杂,并且不具有通用性。目前,常用的解决方案和存在的缺陷:
(1)利用操作系统的GPU虚拟显存机制,在物理显存不足时自动将部分显存临时移到主机内存中,需要时再从主机内存拷贝回显存。但GPU虚拟显存的总量也是有限,超出后还是会产生错误。该方案的另一个问题是,应用层软件不能决定优先删除使用率低、恢复成本低的GPU资源,导致资源删除和恢复的效率可能不高。
(2)相同资源类型采用共享方式,如在GPU视频特效插件模块内部,实现针对该插件类型的GPU资源对象的共享,只创建一个共享的GPU资源对象。这样可以缓解GPU显存不足,但该方案不能实现不同插件类型之间的GPU资源管理调度,当系统中插件类型很多时,还会导致显存不足错误。
(3)针对具体应用场景,有针对性的开发GPU资源共享调度方案。这种方式能解决GPU显存不足问题,但针对具体应用逻辑开发,缺少通用性,软件开发工作量大,如针对视频编辑软件和GPU视频特效插件这类复杂应用,开发实现的难度大。
发明内容
针对上述问题,本发明提出了一种GPU资源共享管理调度方法及系统,通过GPU资源管理器模块,提供了一套通用接口,实现了视频编辑软件对多个GPU视频特效插件所需GPU资源对象的统一管理和调度,在系统GPU资源不足时,GPU资源管理器会按需暂时删除老的资源对象,允许插件自己选择删除哪些资源,在需要时再动态创建和恢复之前删除的资源对象,能有效解决GPU低配置机器会导致程序出错问题。
本发明的实现方法是:一种单机环境下GPU资源共享管理调度方法,所述方法步骤包括:
步骤1,资源工厂注册:是GPU视频特效插件调用GPU资源管理器的资源工厂注册方法,实现资源工厂的注册,每个类型的插件都有自己独特的资源工厂实现类,通过资源工厂接口类这一统一的接口定义,屏蔽了不同插件资源管理对象内部逻辑的不同,所述的资源工厂接口类由使用GPU资源的模块实现,包括:资源规格获取,资源创建和资源删除的核心功能;
步骤2,资源对象初始化:包括视频编辑软件调用GPU视频特效插件的初始化方法,插件内部调用GPU资源管理器的资源对象初始化方法,GPU资源管理器支持懒惰创建模式;
步骤3,资源对象获取:视频编辑软件调用GPU视频特效插件的插件处理相关方法,此时插件需要调用GPU资源管理器资源对象获取接口,得到可用的资源对象指针;
步骤4,资源对象返还:视频特效处理插件调用GPU资源管理器资源对象获取接口得到可用的资源对象指针后,开始执行资源处理相关操作,等操作处理完成后,调用GPU资源管理器模块的资源对象返还接口;
步骤5,资源对象删除:视频编辑软件不再使用GPU视频特效插件时,调用插件的插件删除方法,释放插件相关资源,由GPU资源管理器模块管理资源对象的生命周期;GPU资源管理器模块把对应资源对象的引用计数减1,当引用计数为0时,代表已经没有任何插件使用该资源对象,此时GPU资源管理器调用资源工厂接口类的资源删除方法,删除模式参数设置为最终删除,有插件实现资源对象资源的彻底释放。
进一步的,步骤2的所述GPU资源管理器支持懒惰创建模式是:在懒惰模式下,增加该资源对象的引用计数,如果资源对象为未创建或临时删除状态,不会继续创建,等后续需要使用该资源时,再进行实际的资源创建;非懒惰创建模式下,增加该资源对象的引用计数后,如果该对象为未创建或临时删除状态,会自动调用资源对象获取接口,执行资源创建工作。
进一步的,所述的步骤3包括:
步骤3.1,查找到GPU资源管理器内部保存的与插件对应的资源对象列表,根据插件调用资源对象初始化时的nGpuIndex和bfixGpuIndex 这两个参数选项,选择满足条件的资源对象,如果设置了bfixGpuIndex为true,则选择与nGpuIndex索引相同的资源对象,否则优先选择当前未锁定的资源对象;
步骤3.2,锁定该资源对象中的互斥锁,如果已经被其它线程锁定,会一直等待,支持设置锁定等待的超时时间,如果等待超时,释放资源对象锁,返回空的资源对象指针;
步骤3.3,检查资源对象状态,如果是已创建状态,直接返回对象指针,需要保持资源对象锁为锁定状态,在后面资源对象返还时再释放资源对象锁;
步骤3.4,如果是未创建或临时删除状态,执行后续的资源对象动态创建逻辑:
步骤3.5,调用资源工厂接口类的资源规格获取接口,获取该资源对应的资源规格,主要是GPU显存大小;
步骤3.6,根据插件调用资源对象初始化时的nGpuIndex和bfixGpuIndex 这两个参数选项,选择可用的GPU序号,获取GPU当前空闲的显存大小,优先选择空闲显存最大的GPU,如果可用GPU的空闲显存够用,锁定资源创建锁,再次检查空闲显存,如果显存够用,调用资源工厂接口类的资源创建接口进行资源对象创建,根据资源对象状态是未创建或临时删除,设置对应的创建模式参数,如果创建成功,设置资源对象状态为已创建,释放资源创建锁,释放资源对象中的互斥锁,返回资源对象指针,如果创建失败,释放资源创建锁,释放资源对象中的互斥锁,返回空的资源对象指针,如果GPU显存不足,执行后续资源动态删除逻辑;
步骤3.7,可用GPU显存不足时,执行位于该GPU上的资源对象动态删除,直到有空闲显存,或者全部对象都动态删除;
步骤3.8,如果成功创建了资源对象,需要保持资源对象锁为锁定状态,在后面资源对象返还时再释放资源对象锁。
进一步的,步骤3.7所述的执行资源对象的动态删除,是对于每个需要删除的资源对象,锁定该资源对象中的互斥锁,调用资源工厂接口类的资源删除接口,根据空闲显存情况,确定创建新资源或者释放资源创建锁。
进一步的,同一类型的GPU视频特效插件,GPU资源对象共享,不同类型的GPU视频特效插件,都与同一个的GPU资源管理器模块进行交互,按照接口规范,调用资源对象初始化,资源对象获取,资源对象返还和资源删除步骤操作。
一种多进程模式下的GPU资源的按需调度方法,采用上述任意一项所述的单机环境下GPU资源共享管理调度方法,所述GPU资源管理器模块支持多进程模式下的GPU资源的按需调度,多个独立的应用程序进程,统一使用GPU资源管理器模块实现GPU资源的按需调度,GPU资源管理器模块的对外接口规范保持不变,多个进程的GPU资源管理器模块之间,采用进程间通信机制,共享内存方式。
进一步的,多进程模式下,同一插件模块不同GPU资源对象的共享,为了简化处理逻辑,提高GPU处理效率,只限于在同一个进程内的插件,当某个进程的插件在调用资源对象获取时,如果显卡资源不足,支持两种资源对象按需删除策略:
当前进程资源对象优先删除策略:当前进程资源对象都删除后资源还是不足时,再通知删除其它进程的资源对象;
全局资源对象删除策略:按照各个进程所有资源对象的访问时间从老到新,按需删除老的资源对象;
多进程模式下,如删除的资源对象是其它进程的,则通过进程间通信机制通知对应进程进行资源对象的删除。
一种技术上述方法的GPU资源共享管理调度系统,包括视频编辑软件,GPU视频特效插件,GPU显示卡,所述系统还包括:
GPU资源管理器模块,包括:资源工厂注册接口,资源对象初始化接口,资源删除接口,资源对象获取接口,资源对象返还接口;
资源工厂接口类,包括:资源规格获取接口,资源创建接口,资源删除接口;
所述的GPU资源管理器模块向下管理主机中的多个GPU显卡,向上与多种GPU视频特效插件通过定义良好的接口进行交互。
进一步的,所述的GPU资源管理器模块提供了一组资源管理相关的通用接口,在各个GPU视频特效插件中调用相关的通用接口来创建和访问GPU资源对象,实现多个插件、多GPU之间的资源共享和调度,包括对GPU视频特效插件模块ID,GPU的序号,资源类型及资源对象指针地址的管理和调度;
进一步的,所述的资源对象初始化接口,用于视频编辑软件调用GPU视频特效插件的初始化时,GPU视频特效插件调用该接口,实现资源对象的初始化;
所述的资源对象获取接口,用于实现视频编辑软件调用GPU视频特效插件的插件处理相关方法时,插件调用该接口得到可用的资源对象指针;
所述的资源删除接口,是视频编辑软件不再使用GPU视频特效插件时,实现调用插件的插件删除,释放插件相关资源,插件调用GPU资源管理器的资源对象删除功能。
GPU资源管理器模块会按需调用所述的资源工厂接口类中的接口:
GPU资源管理器模块的资源对象获取接口内部,会根据需要调用中资源工厂接口类的资源规格获取、资源创建、资源删除等接口;
GPU资源管理器模块的资源对象删除接口内部,会根据需要调用中资源工厂接口类的资源删除等接口。
进一步的,所述的GPU视频特效插件是多种GPU视频特效插件,包括智能美颜,自然背景抠像,智能超分,智能降噪,智能调色,智能裁剪和智能跟踪擦除。
本发明的有益效果是:
(1)本发明通过一个通用的GPU资源管理器模块,定义了一套通用接口,实现了视频编辑软件对多个GPU视频特效插件所需GPU资源对象的统一管理和调度:在系统GPU资源不足时,GPU资源管理器会按需暂时删除老的资源对象,允许插件自己选择删除哪些资源,在需要时再动态创建和恢复之前删除的资源对象,能有效解决GPU低配置机器会导致程序出错问题。
(2)本发明实现了只需要在各个GPU视频特效插件中调用GPU资源管理器模块的相关接口来创建和访问GPU资源对象,就能实现GPU资源的自动共享管理和调度,不需要在应用层(如视频编辑软件)处理GPU资源共享调度相关逻辑,大大简化了应用层的开发。
(3)本发明具有通用性,不仅限于视频编辑软件和GPU视频特效插件这个应用场景,也适合其他多个组件需要使用GPU的软件应用,大大简化了软件开发工作,使视频编辑软件等上层应用不用再关心GPU资源调度的问题。
下面,结合附图说明和具体实施例对本发明做进一步阐释。
附图说明
图1是本发明GPU资源共享和管理调度主要流程示意图;
图2是本发明GPU资源管理器核心接口定义;
图3是本发明系统模块关系图。
具体实施例
为了便于理解和更清楚地表述本发明,就本发明中出现的一些名词解释如下:
(1)GPU:图形处理器(Graphics Processing Unit),可以对图形计算、AI训练和推理等进行加速。GPU的显存资源比较有限,GPU的显存通常远小于机器内存,应用需要考虑对GPU显存的高效利用。
(2)GPU视频特效插件:在视频编辑软件中,多个视音频文件,按时间顺序拼接在一起,形成一个故事板。在故事板中至少有一路视频(每路视频称为一个视频轨道),也可能有多路视频(如需要画中画效果时,需要有两路视频)。在视频编辑软件的故事板中,会加载很多使用GPU资源来实现视频特殊效果的独立软件模块,这些视频特效处理模块称为GPU视频特效插件,也简称插件。
(3)GPU资源对象:不同类型的GPU视频特效插件占用不同数量的GPU显存资源,为了实现对GPU显存的统一调度,抽象出GPU资源对象的定义。
(4)GPU资源管理器:本发明针对单机环境下众多GPU视频特效插件的GPU资源管理,引入了GPU资源管理器的概念。GPU资源管理器是一个独立的软件模块,提供了一组GPU资源管理相关的通用接口,是本发明的核心模块。
(5)GPU资源工厂:GPU资源工厂是GPU资源管理器接口定义中的一个抽象概念,是需要GPU视频特效插件来实现的一个接口定义类,里面定义了资源规格获取,主要是显存大小、资源创建、资源删除等接口。每个GPU视频特效插件都需要实现GPU资源工厂这个接口类,并需要在GPU资源管理器中注册插件实现的资源工厂。这样GPU资源管理器可以知道每个GPU视频特效插件对GPU显存资源的需求量,能自动按需创建和删除GPU资源,实现对GPU资源的共享管理和调度。
GPU资源管理器模块是本发明的核心模块,该模块向下管理主机中的多个GPU显卡,向上与各种GPU视频特效插件通过定义良好的接口进行交互,实现多个插件、多GPU之间的资源共享和调度。
最上层的视频编辑软件是应用层软件,应用层软件直接与各个GPU视频特效插件通过插件定义的接口进行交互,但与GPU资源管理器模块之间没有交互。这种设计方式使应用层不用关心底层的GPU资源调度,大大简化了应用层的开发工作,如图3所示。
为了实现高效的GPU资源共享和调度,GPU资源管理器模块定义了下面一些核心接口,资源管理器核心接口定义关系。如图2所示:GPU资源管理器核心接口定义GPU视频特效插件连接了应用层软件(如视频编辑软件)与GPU资源管理器模块。GPU视频特效插件内部需要实现资源工厂接口类,包括资源规格获取、资源创建、资源对象删除三个接口。GPU视频特效插件需要调用GPU资源管理器的资源工厂注册接口进行注册。GPU资源管理器模块会按需调用GPU视频特效插件注册的资源工厂对象,实现资源的按需创建和删除。GPU视频特效插件面向应用层,提供插件初始化、插件删除、特效处理等接口。实现插件初始化接口时,GPU视频特效插件需要调用GPU资源管理器的资源对象初始化接口;实现插件删除接口时,GPU视频特效插件需要调用GPU资源管理器的资源对象删除接口;实现特效处理接口时,GPU视频特效插件需要调用GPU资源管理器的资源对象获取和资源对象返还接口。
1. 注册资源工厂
GPU视频特效插件实现自己的资源工厂接口类,调用GPU资源管理器模块的注册资源工厂,使GPU资源管理器能按需创建和删除GPU资源对象。
int RegisterResFac(
const string&strModuleID,
const vector<SharedResItems>&resGroupInfo,
ResFactoryInterface* pFac
)
输入参数:
strModuleID:GPU视频特效插件模块的ID,不同模块的ID必须唯一;
resGroupInfo:插件需要的资源组条目SharedResItems配置数组;
haredResItems包括下面两个属性:
nResType:资源组对应的资源类型;
nResNum:共享资源池中资源的数量,默认数量为1,代表相同资源类型只创建一个资源对象;
pFac:资源工厂对象指针,对应GPU视频特效插件模块中资源工厂类;ResFactoryInterface的一个对象实例,该接口类的定义参见资源工厂接口类。
返回值:
返回错误代码,0代表成功,非0代表错误。
2. 资源工厂接口类
资源工厂注册方法中的资源工厂接口类ResFactoryInterface由GPU视频特效插件实现,包含如下接口定义,如图2所示:
2.1 资源规格获取
GPU资源管理器在按需创建资源前,调用该接口获取该资源需要的GPU显存大小。
float GetResSize(
string strModuleID,
int nResType,
)
输入参数:
strModuleID:GPU视频特效插件模块的ID,不同模块的ID必须唯一;
nResType:资源类型,与GPU视频特效插件在资源工厂注册时设置的资源类型一致。
返回值:
返回该资源类型对应的GPU显存占用大小,单位MB。
2.2资源创建
GPU资源管理器在有需要时,调用该接口创建所需的GPU资源对象。
int CreateRes(
string strModuleID,
int nGpuIndex,
int nResType,
int nResNum,
int nCreateMode,
vector<void*>&res
)
输入参数:
strModuleID:GPU视频特效插件模块的ID,不同模块的ID必须唯一;
nGpuIndex:GPU序号;
nResType:资源类型,与GPU视频特效插件在资源工厂注册时设置的资源类型一致;
nResNum:该资源需要创建的数量,默认1;
nCreateMode:资源创建模式,0代表初始创建,1代表调用资源删除后再次创建。再次创建时,资源可能在内存中有缓存,该参数可以提示插件优先从内存缓存中快速恢复之前创建的资源。
输入输出参数:
res:内部资源对象的指针列表,列表元素的数量与nResNum一致,
返回值:
返回错误代码,0代表成功,非0代表错误。
2.3资源删除
GPU资源管理器在需要时,调用该接口删除之前创建的GPU资源对象,以实现GPU资源的按需动态调度。
int DelRes(
string strModuleID,
int nGpuIndex,
int nResType,
int nDelMode,
vector<void*>&res
)
输入参数:
strModuleID:GPU视频特效插件模块的ID,不同模块的ID必须唯一;
nGpuIndex:GPU序号;
nResType:资源类型,与GPU视频特效插件在资源工厂注册时设置的资源类型一致;
nDelMode:资源删除模式,0代表最终的资源删除,此时资源不再使用,需要彻底删除;1代表GPU资源调度时临时的资源删除。临时资源删除时,插件可以决定删除哪些资源,并决定是否需要数据拷贝。插件可以只删除该资源对象的部分GPU资源。插件可以根据需要,对于需要保存的GPU数据,可以从GPU资源对象先缓存到主机的内存中,然后再删除GPU资源,这样可以实现后续快速的资源恢复;
res:内部资源对象的指针列表。
返回信息:
返回错误代码,0代表成功,非0代表错误。
3. 资源对象初始化
资源对象初始化是每个GPU视频特效插件实例在初始化时(通常对应插件对外提供的插件初始化接口),调用GPU资源管理器的资源对象初始化方法。GPU资源管理器内部有对象引用计数机制,根据共享资源池中的对象数量配置来创建资源对象,不会创建超出配置数量的资源对象。
该接口支持懒惰创建模式,等需要使用资源对象时(资源对象获取接口),再调用资源工厂接口类的资源创建接口进行具体资源创建操作,这样可以减少不必要的资源重复创建和删除操作,但在第一次使用资源时,临时创建资源可能会导致一点延迟。上层可以根据实际需要选择初始化创建模式。
该方法需要与资源删除方法配对调用。
int InitRes(
const string&strModuleID,
const string&strPluginInstanceID,
int&nGpuIndex,
bool bfixGpuIndex = false,
bool bLazyCreate=false
)
输入参数:
strModuleID:GPU视频特效插件模块的ID,不同模块的ID必须唯一;
strPluginInstanceID:具体插件对象的唯一标识,可以使用插件对象的指针地址,或者插件初始化时自己生成uuid;
bfixGpuIndex:是否固定使用nGpuIndex对应的GPU,默认false。如果需要GPU之间的数据拷贝,在相同序号的GPU之间进行数据拷贝效率更高;
bLazyCreate:是否懒惰创建模式,默认false。懒惰创建模式可以减少不必要的资源重复创建和删除操作。
输入输出参数:
nGpuIndex:gpu序号。如果为-1,GPU资源管理器模块内部自动分配gpu序号,并更新nGpuIndex的值。
返回值:
返回错误代码,0代表成功,非0代表错误。
4. 资源对象删除
资源对象删除是每个GPU视频特效插件实例在最后释放时(通常对应插件对外提供的插件删除接口),调用GPU资源管理器的资源对象删除方法。GPU资源管理器根据内部对象引用计数机制,减少引用计数。当计数为0时,会调用资源工厂接口类的资源删除接口进行资源对象的最终删除操作。该方法需要与资源对象初始化方法配对调用。
int ReleaseRes(
const string&strModuleID,
const string&strPluginInstanceID//
)
输入参数:
strModuleID:GPU视频特效插件模块的ID,不同模块的ID必须唯一;
strPluginInstanceID:具体插件对象的唯一标识。
返回值:
返回错误代码,0代表成功,非0代表错误。
5. 资源对象获取
GPU视频特效插件在完成对资源对象初始化接口的调用后,后续当需要使用GPU资源对象时,必须调用GPU资源管理器的资源对象获取接口,得到资源对象指针地址。在对象用完后,必须调用配对的资源对象返还接口。这样可以保证GPU资源的共享管理和调度都由GPU资源管理器模块来统一实现,不会出现资源调度错误。
SharedRes* GetRes(
const string&strModuleID,
const string&strPluginInstanceID,
int&nGpuIndex,//如果InitRes时如果bfixGpuIndex为false,GetRes时返回的nGpuIndex可能与之前不同。
int nResType=0
)
输入参数:
strModuleID:GPU视频特效插件模块的ID,不同模块的ID必须唯一;
strPluginInstanceID:具体插件对象的唯一标识;
nResType:资源类型。
输出参数:
nGpuIndex:gpu序号,GPU资源管理模块会根据GPU资源对象的实际位置,设置该输出参数的值。
返回值:
返回共享的GPU资源对象SharedRes的指针,返回为空的话代表出错;
SharedRes对象有一个GetRealRes()接口,可以返回插件内部资源对象的指针,对应资源工厂接口类的资源创建接口中res数组参数中的资源指针。
6 资源对象返还
GPU视频特效插件在调用GPU资源管理器的资源对象获取接口后,等对象使用完成,必须调用资源对象返还接口,让GPU资源管理器模块继续进行GPU资源的共享管理和调度。
int ReturnRes(
const string&strModuleID,
const string&strPluginInstanceID,
SharedRes* pManagedRes)
输入参数:
strModuleID:GPU视频特效插件模块的ID,不同模块的ID必须唯一;
strPluginInstanceID:具体插件对象的唯一标识;
pManagedRes:共享的资源对象指针,这个对应资源对象获取接口的返回值。
返回值:
返回错误代码,0代表成功,非0代表错误。
实施例一:
本实施例是一种单机环境下GPU资源共享管理调度方法,如图1至图3所示,所述方法步骤包括:
步骤1,资源工厂注册:是GPU视频特效插件调用GPU资源管理器的资源工厂注册方法,实现资源工厂的注册,每个类型的插件都有自己独特的资源工厂实现类,通过资源工厂接口类这一统一的接口定义,屏蔽了不同插件资源管理对象内部逻辑的不同,所述的资源工厂接口类由使用GPU资源的模块实现,包括:资源规格获取,资源创建和资源删除的核心功能。
步骤2,资源对象初始化:包括视频编辑软件调用GPU视频特效插件的初始化方法,插件内部调用GPU资源管理器的资源对象初始化方法,GPU资源管理器支持懒惰创建模式。在懒惰模式下,增加该资源对象的引用计数,如果资源对象为未创建或临时删除状态,不会继续创建。等后续需要使用该资源时,再进行实际的资源创建。这样可以避免资源的重复创建和删除,但在第一次使用资源时,临时创建资源可能会导致一点延迟。上层可以根据实际需要选择初始化创建模式。
步骤3,资源对象获取:视频编辑软件调用GPU视频特效插件的插件处理相关方法,此时插件需要调用GPU资源管理器资源对象获取接口,得到可用的资源对象指针。
步骤4,资源对象返还:视频特效处理插件调用GPU资源管理器资源对象获取接口得到可用的资源对象指针后,开始执行资源处理相关操作,等操作处理完成后,调用GPU资源管理器模块的资源对象返还接口。该接口的处理逻辑相对简单:验证传入的资源对象指针是有效的,然后释放之前锁定的资源对象锁,以允许该资源对象后续能继续使用。
步骤5,资源对象删除:视频编辑软件不再使用GPU视频特效插件时,调用插件的插件删除方法,释放插件相关资源,由GPU资源管理器模块管理资源对象的生命周期;GPU资源管理器模块把对应资源对象的引用计数减1,当引用计数为0时,代表已经没有任何插件使用该资源对象,此时GPU资源管理器调用资源工厂接口类的资源删除方法,删除模式参数设置为最终删除,有插件实现资源对象资源的彻底释放。
GPU视频特效插件连接了应用层软件(如视频编辑软件)与GPU资源管理器模块。GPU视频特效插件内部需要实现资源工厂接口类,包括资源规格获取、资源创建、资源对象删除三个接口。GPU视频特效插件需要调用GPU资源管理器的资源工厂注册接口进行注册。GPU资源管理器模块会按需调用GPU视频特效插件注册的资源工厂对象,实现资源的按需创建和删除。GPU视频特效插件面向应用层,提供插件初始化、插件删除、特效处理等接口。实现插件初始化接口时,GPU视频特效插件需要调用GPU资源管理器的资源对象初始化接口;实现插件删除接口时,GPU视频特效插件需要调用GPU资源管理器的资源对象删除接口;实现特效处理接口时,GPU视频特效插件需要调用GPU资源管理器的资源对象获取和资源对象返还接口。
实施例二:
本实施例是实施例一的改进,是对步骤3的细化,本实施例所述的GPU资源管理器的资源对象获取接口,涉及了GPU资源共享管理和调度和核心逻辑,具体步骤如下:
3.1,查找到GPU资源管理器内部保存的与插件对应的资源对象列表,根据插件调用资源对象初始化时的nGpuIndex和bfixGpuIndex 这两个参数选项,选择满足条件的资源对象。如果设置了bfixGpuIndex为true,则选择与nGpuIndex索引相同的资源对象,否则优先选择当前未锁定的资源对象。
3.2,锁定该资源对象中的互斥锁,如果已经被其他线程锁定,会一直等待。可以支持设置锁定等待的超时时间,如果等待超时,释放资源对象锁,返回空的资源对象指针。
3.3,检查资源对象状态,如果是已创建状态,直接返回对象指针,需要保持资源对象锁为锁定状态,在后面资源对象返还时再释放资源对象锁。
3.4,如果是未创建或临时删除状态,执行后续的资源对象动态创建逻辑。
3.5,调用资源工厂接口类的资源规格获取接口,获取该资源对应的资源规格,主要是GPU显存大小;
3.6,根据插件调用资源对象初始化时的nGpuIndex和bfixGpuIndex 这两个参数选项,选择可用的GPU序号,获取GPU当前空闲的显存大小。如果有多个可用的GPU,优先选择空闲显存最大的GPU。如果可用GPU的空闲显存够用,锁定资源创建锁,再次检查空闲显存。如果显存够用,调用资源工厂接口类的资源创建接口进行资源对象创建,根据资源对象状态是未创建或临时删除,设置对应的创建模式参数。如果创建成功,设置资源对象状态为已创建,释放资源创建锁,释放资源对象中的互斥锁,返回资源对象指针;如果创建失败,释放资源创建锁,释放资源对象中的互斥锁,返回空的资源对象指针。如果GPU显存不足(可能有新的资源创建操作),需要执行后续资源动态删除逻辑。
3.7,可用GPU显存不足时,执行位于该GPU上的资源对象动态删除,直到有空闲显存,或者全部对象都动态删除。这个过程需要保持资源创建锁为锁定状态。查找可用GPU资源管理器内部保存的资源对象指针列表,根据最近访问时间从老到新,执行资源对象的动态删除。
对于每个需要删除的资源对象,锁定该资源对象中的互斥锁,调用资源工厂接口类的资源删除接口,删除模式参数设置为临时资源删除(插件可以根据需要,全部删除或部分删除资源对象),删除后释放该资源对象的互斥锁。
每删除一个资源对象后,检查GPU空闲显存,如果空闲显存够用,可以创建新资源,执行资源创建步骤;如果显存还是不足,继续按最近访问时间从老到新,动态删除资源对象,直到GPU空闲显存能够创建新的资源,此时进行资源创建。
如果可用GPU中所有资源对象已全部动态删除,但显存还是不足,通常是因为存在不由GPU资源管理器管理的GPU应用占用了大量显存,此时返回资源获取失败。
该接口返回前,需要释放资源创建锁。
3.8,如果成功创建了资源对象,需要保持资源对象锁为锁定状态,在后面资源对象返还时再释放资源对象锁。
实施例三:
本实施例是实施例一的改进,本实施例优选的同一类型的GPU视频特效插件,对于同一类型的GPU视频特效插件,GPU资源管理器模块的主要功能是实现相同GPU资源对象的共享。同一类型的多个插件实例在资源对象初始化时,由于GPU资源管理器模块的引用计数机制,会根据配置的资源池数量(默认为1),不会创建超过设置数量的资源对象。
不同插件实例在需要使用资源对象时,都必须先调用资源对象获取,然后执行资源处理操作,最后调用资源对象返还。在资源对象获取和资源对象返还期间,资源对象锁处于锁定状态,同时只能允许一个插件实例使用这个资源对象,这样实现了资源对象的共享,并且可以避免同时访问导致的并发冲突。如果插件实例数量很多,并且有比较多的并发访问时,可以增加资源池中共享资源对象的数量,这样可以提高并行资源处理的效率。
实施例四:
本实施例是实施例一的改进,本实施例不同类型的GPU视频特效插件实例,都与同一个的GPU资源管理器模块进行交互,都会按照接口规范,调用资源对象初始化、资源对象获取、资源对象返还、资源对象删除等操作。根据GPU资源共享和管理调度流程和逻辑部分的描述,某个新的插件实例在调用资源对象获取时,如果当前GPU显存不足,GPU资源管理器模块会按照资源对象访问时间从老到新,自动临时删除老的资源对象,这样新的插件实例可以成功获取到资源对象,实现了不同插件模块实例之间的GPU资源按需调度。如果没有GPU资源管理器模块,GPU资源不能按需释放,新的插件实例在显存不足时创建资源就会出错。
实施例五:
本实施例是实施例一的改进,本实施例所述的GPU视频特效插件在调用资源对象初始化方法时,可以设置资源对象的GPU放置策略,默认是不指定GPU序号,并且GPU序号不需要固定,这样GPU资源管理器模块可以在主机的任何可用GPU上都可以创建资源对象。如果设置了固定使用某个序号的GPU,或设置了固定使用GPU但不指定初始创建的序号(通常是为了在不同模块间进行GPU显存数据拷贝时提高数据拷贝效率),则GPU资源管理器模块在按需创建资源对象时,会遵从设置的规则,固定使用设置的GPU序号,或者固定资源对象使用初始创建时的GPU序号。
根据GPU资源共享和管理调度流程和逻辑部分的描述,在资源对象获取步骤创建资源对象时,如果插件设置为GPU序号可以不固定,如果有多个可用的GPU,会优先选择空闲显存最大的GPU,这样可以减少不必要的临时资源删除,使各个GPU之间的显存利用更加均衡。
实施例六:
本实施例是一种多进程模式下的GPU资源的按需调度方法,上述实施例的基础上,本实施例所述方法是对GPU资源管理器模块进行扩展,支持多进程模式下的GPU资源的按需调度,多个独立的应用程序进程,可以统一使用GPU资源管理器模块实现GPU资源的按需调度。多进程GPU资源调度模式下,GPU资源管理器模块的对外接口规范保持不变,应用程序和GPU资源插件不需要进行多进程相关的特别处理。
在多个进程的GPU资源管理器模块之间,采用进程间通信机制,采用共享内存方式,保存一份全局的GPU资源对象列表信息,这样可以实现多进程模式下GPU资源的按需调度。
多进程模式下,同一插件模块不同实例间GPU资源对象的共享,只限于在同一个进程内的插件,这样可以简化处理逻辑,提高GPU处理的效率。当某个进程的插件在调用资源对象获取时,如果显卡资源不足,支持两种资源对象按需删除策略,各有优缺点,可以根据不同的业务场景,选择合适的多进程资源对象删除策略。
第一种是当前进程资源对象优先删除策略,当前进程资源对象都删除后资源还是不足时,再通知删除其他进程的资源对象。这种策略的优点是效率高,可以减少不同应用程序之间的影响。但这种策略不能保证多进程间的全局最优删除,可能其他进程有长时间不用的资源对象,不能优先删除。
第二种是全局资源对象删除策略,按照各个进程所有资源对象的访问时间从老到新,按需删除老的资源对象。这种策略的优点是能实现最优的全局GPU资源调度,但进程间通信会导致效率稍低,并且会导致不同应用之间有性能影响。
多进程模式下,如果要删除的资源对象是其他进程的,会通过进程间通信机制通知对应进程进行资源对象的删除。
实施例七:
本实施例是一种GPU资源共享管理调度系统,所述系统采用上述实施例的方法,包括视频编辑软件,GPU视频特效插件,GPU显示卡,如图3所示。图中,GPU资源管理器模块是本发明的核心模块,该模块向下管理主机中的多个GPU显卡(GPU 1,GPU 2 ……GPU n),向上与各种GPU视频特效插件通过定义良好的接口进行交互,实现多个插件、多GPU之间的资源共享和调度。
图中GPU视频特效插件1-1和1-2,代表插件类型为1的两个插件对象;GPU视频特效插件2-1、3-1,分别代表插件类型是2和3的插件对象;GPU视频特效插件N-m,代表插件类型是N的第m个插件对象。
最上层的视频编辑软件是应用层软件,应用层软件直接与各个GPU视频特效插件通过插件定义的接口进行交互,但与GPU资源管理器模块之间没有交互。这种设计方式使应用层不用关心底层的GPU资源调度,大大简化了应用层的开发工作。
本实施例所述系统还包括:GPU资源管理器模块,包括:资源工厂注册接口,资源对象初始化接口,资源删除接口,资源对象获取接口,资源对象返还接口;资源工厂接口类,包括:资源规格获取接口,资源创建接口,资源删除接口;所述的GPU资源管理器模块向下管理主机中的多个GPU显卡,向上与多种GPU视频特效插件通过定义良好的接口进行交互。
进一步优选的,所述的GPU资源管理器模块提供了一组资源管理相关的通用接口,在各个GPU视频特效插件中调用相关的通用接口来创建和访问GPU资源对象,实现多个插件、多GPU之间的资源共享和调度,包括对GPU视频特效插件模块ID,GPU的序号,资源类型及资源对象指针地址的管理和调度。
所述的资源对象初始化接口,用于视频编辑软件调用GPU视频特效插件的初始化时,GPU视频特效插件调用该接口,实现资源对象初始化;所述的资源对象获取接口,用于实现视频编辑软件调用GPU视频特效插件的插件处理相关方法时,插件需要调用该接口得到可用的资源对象指针;GPU视频特效插件获取到资源对象并使用完成后,调用所述的资源对象返还接口,让GPU资源管理器模块继续进行GPU资源的共享管理和调度,所述的GPU视频特效插件是多种GPU视频特效插件,包括智能美颜,自然背景抠像,智能超分,智能降噪,智能调色,智能裁剪和智能跟踪擦除等;所述的资源删除接口,是视频编辑软件不再使用GPU视频特效插件时,实现调用插件的插件删除,释放插件相关资源,插件调用GPU资源管理器的资源对象删除功能。
所述的GPU资源管理器模块会按需调用所述的资源工厂接口类中的接口:GPU资源管理器模块的资源对象获取接口内部,会根据需要调用中资源工厂接口类的资源规格获取、资源创建、资源删除等接口;GPU资源管理器模块的资源对象删除接口内部,会根据需要调用中资源工厂接口类的资源删除等接口。
Claims (9)
1.一种单机环境下GPU资源共享管理调度方法,其特征在于,所述方法步骤包括:
步骤1,资源工厂注册:是GPU视频特效插件调用GPU资源管理器的资源工厂注册方法,实现资源工厂的注册,每个类型的插件都有自己独特的资源工厂实现类,通过资源工厂接口类这一统一的接口定义,屏蔽了不同插件资源管理对象内部逻辑的不同,所述的资源工厂接口类由使用GPU资源的模块实现,包括:资源规格获取,资源创建和资源删除的核心功能;
步骤2,资源对象初始化:包括视频编辑软件调用GPU视频特效插件的初始化方法,插件内部调用GPU资源管理器的资源对象初始化方法,GPU资源管理器支持懒惰创建模式;
步骤3,资源对象获取:视频编辑软件调用GPU视频特效插件的插件处理相关方法,此时插件需要调用GPU资源管理器资源对象获取接口,得到可用的资源对象指针,包括:
3.1,查找到GPU资源管理器内部保存的与插件对应的资源对象列表,根据插件调用资源对象初始化时的nGpuIndex和bfixGpuIndex 这两个参数选项,选择满足条件的资源对象,如果设置了bfixGpuIndex为true,则选择与nGpuIndex索引相同的资源对象,否则优先选择当前未锁定的资源对象;
3.2,锁定该资源对象中的互斥锁,如果已经被其它线程锁定,会一直等待,支持设置锁定等待的超时时间,如果等待超时,释放资源对象锁,返回空的资源对象指针;
3.3,检查资源对象状态,如果是已创建状态,直接返回对象指针,需要保持资源对象锁为锁定状态,在后面资源对象返还时再释放资源对象锁;
3.4,如果是未创建或临时删除状态,执行后续的资源对象动态创建逻辑:
3.5,调用资源工厂接口类的资源规格获取接口,获取该资源对应的资源规格, 是GPU显存大小;
3.6,根据插件调用资源对象初始化时的nGpuIndex和bfixGpuIndex 这两个参数选项,选择可用的GPU序号,获取GPU当前空闲的显存大小,优先选择空闲显存最大的GPU,如果可用GPU的空闲显存够用,锁定资源创建锁,再次检查空闲显存,如果显存够用,调用资源工厂接口类的资源创建接口进行资源对象创建,根据资源对象状态是未创建或临时删除,设置对应的创建模式参数,如果创建成功,设置资源对象状态为已创建,释放资源创建锁,释放资源对象中的互斥锁,返回资源对象指针,如果创建失败,释放资源创建锁,释放资源对象中的互斥锁,返回空的资源对象指针,如果GPU显存不足,执行后续资源动态删除逻辑;
3.7,可用GPU显存不足时,执行位于该GPU上的资源对象动态删除,直到有空闲显存,或者全部对象都动态删除;
3.8,如果成功创建了资源对象,需要保持资源对象锁为锁定状态,在后面资源对象返还时再释放资源对象锁;
步骤4,资源对象返还:视频特效处理插件调用GPU资源管理器资源对象获取接口得到可用的资源对象指针后,开始执行资源处理相关操作,等操作处理完成后,调用GPU资源管理器模块的资源对象返还接口;
步骤5,资源对象删除:视频编辑软件不再使用GPU视频特效插件时,调用插件的插件删除方法,释放插件相关资源,由GPU资源管理器模块管理资源对象的生命周期;GPU资源管理器模块把对应资源对象的引用计数减1,当引用计数为0时,代表已经没有任何插件使用该资源对象,此时GPU资源管理器调用资源工厂接口类的资源删除方法,删除模式参数设置为最终删除,由插件实现资源对象资源的彻底释放。
2.根据权利要求1所述的单机环境下GPU资源共享管理调度方法,其特征在于,步骤2的所述GPU资源管理器支持懒惰创建模式是:在懒惰模式下,增加该资源对象的引用计数,如果资源对象为未创建或临时删除状态,不会继续创建,等后续需要使用该资源时,再进行实际的资源创建;非懒惰创建模式下,增加该资源对象的引用计数后,如果该对象为未创建或临时删除状态,会自动调用资源对象获取接口,执行资源创建工作。
3.根据权利要求1所述的单机环境下GPU资源共享管理调度方法,其特征在于,步骤3.7所述的执行资源对象的动态删除,是对于每个需要删除的资源对象,锁定该资源对象中的互斥锁,调用资源工厂接口类的资源删除接口,根据空闲显存情况,确定创建新资源或者释放资源创建锁。
4.根据权利要求1所述的单机环境下GPU资源共享管理调度方法,其特征在于,同一类型的GPU视频特效插件,GPU资源对象共享,不同类型的GPU视频特效插件,都与同一个的GPU资源管理器模块进行交互,按照接口规范,调用资源对象初始化,资源对象获取,资源对象返还和资源删除步骤操作。
5.一种多进程模式下GPU资源的按需调度方法,采用权利要求1~4任意一项所述的单机环境下GPU资源共享管理调度方法,其特征在于,所述GPU资源管理器模块支持多进程模式下的GPU资源的按需调度,多个独立的应用程序进程,统一使用GPU资源管理器模块实现GPU资源的按需调度,GPU资源管理器模块的对外接口规范保持不变,多个进程的GPU资源管理器模块之间,采用进程间通信机制,共享内存方式。
6.根据权利要求5所述的多进程模式下GPU资源的按需调度方法,其特征在于,所述多进程模式下,同一插件模块不同GPU资源对象的共享,只限于在同一个进程内的插件,以简化处理逻辑,提高GPU处理效率,当某个进程的插件在调用资源对象获取时,如果显卡资源不足,支持两种资源对象按需删除策略:
第一种是当前进程资源对象优先删除策略:当前进程资源对象都删除后资源还是不足时,再通知删除其它进程的资源对象;
第二种是全局资源对象删除策略:按照各个进程所有资源对象的访问时间从老到新,按需删除老的资源对象;
所述的多进程模式下,如删除的资源对象是其它进程的,则通过进程间通信机制通知对应进程进行资源对象的删除。
7.一种GPU资源共享管理调度系统,用于实现如权利要求5所述的多进程模式下GPU资源的按需调度方法,包括视频编辑软件,GPU视频特效插件,GPU显示卡,其特征在于,所述系统还包括:
GPU资源管理器模块,包括:资源工厂注册、资源对象初始化、资源删除、资源对象获取和资源对象返还核心接口定义和实现;
资源工厂接口类包括:资源规格获取、资源创建、资源删除核心接口定义;
所述的GPU资源管理器模块向下管理主机中的多个GPU显卡,向上与多种GPU视频特效插件通过定义良好的接口进行交互。
8.根据权利要求7所述的GPU资源共享管理调度系统,其特征在于,所述的GPU资源管理器模块提供了一组资源管理相关的通用接口,在各个GPU视频特效插件中调用相关的通用接口来创建和访问GPU资源对象,实现多个插件、多GPU之间的资源共享和调度,包括对GPU视频特效插件模块ID、GPU的序号、资源类型及资源对象指针地址的管理和调度。
9.根据权利要求7所述的GPU资源共享管理调度系统,其特征在于,所述的资源对象初始化接口,用于视频编辑软件调用GPU视频特效插件的初始化时,GPU视频特效插件调用该接口,实现资源对象的初始化;所述的资源对象获取接口,用于实现视频编辑软件调用GPU视频特效插件的插件处理相关方法时,插件调用该接口得到可用的资源对象指针;GPU视频特效插件获取到资源对象并使用完成后,调用所述的资源对象返还接口,让GPU资源管理器模块继续进行GPU资源的共享管理和调度;所述的资源删除接口,是视频编辑软件不再使用GPU视频特效插件时,实现调用插件的插件删除,释放插件相关资源,插件调用GPU资源管理器的资源对象删除功能;
所述的GPU资源管理器模块会按需调用所述的资源工厂接口类中的接口:GPU资源管理器模块的资源对象获取接口内部,会根据需要调用中资源工厂接口类的资源规格获取、资源创建、资源删除接口;GPU资源管理器模块的资源对象删除接口内部,会根据需要调用中资源工厂接口类的资源删除接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311669864.8A CN117667408B (zh) | 2023-12-07 | 2023-12-07 | 一种gpu资源共享管理调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311669864.8A CN117667408B (zh) | 2023-12-07 | 2023-12-07 | 一种gpu资源共享管理调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117667408A CN117667408A (zh) | 2024-03-08 |
CN117667408B true CN117667408B (zh) | 2024-05-14 |
Family
ID=90072993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311669864.8A Active CN117667408B (zh) | 2023-12-07 | 2023-12-07 | 一种gpu资源共享管理调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667408B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103533086A (zh) * | 2013-10-31 | 2014-01-22 | 中国科学院计算机网络信息中心 | 一种云计算系统中的资源统一调度方法 |
KR101765723B1 (ko) * | 2016-05-09 | 2017-08-08 | 한국과학기술정보연구원 | 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법 |
CN111506404A (zh) * | 2020-04-07 | 2020-08-07 | 上海德拓信息技术股份有限公司 | 一种基于Kubernetes的共享GPU调度方法 |
CN111857950A (zh) * | 2020-06-30 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种资源池管理容器及其管理方法和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898795B2 (en) * | 2014-06-19 | 2018-02-20 | Vmware, Inc. | Host-based heterogeneous multi-GPU assignment |
-
2023
- 2023-12-07 CN CN202311669864.8A patent/CN117667408B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103533086A (zh) * | 2013-10-31 | 2014-01-22 | 中国科学院计算机网络信息中心 | 一种云计算系统中的资源统一调度方法 |
KR101765723B1 (ko) * | 2016-05-09 | 2017-08-08 | 한국과학기술정보연구원 | 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법 |
CN111506404A (zh) * | 2020-04-07 | 2020-08-07 | 上海德拓信息技术股份有限公司 | 一种基于Kubernetes的共享GPU调度方法 |
CN111857950A (zh) * | 2020-06-30 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种资源池管理容器及其管理方法和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117667408A (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9086924B2 (en) | Executing a distributed java application on a plurality of compute nodes | |
WO2021196597A1 (zh) | 业务插件加载实现方法、装置和终端设备 | |
CN110750356B (zh) | 适用于非易失性内存的多核交互方法、系统及存储介质 | |
US20090125611A1 (en) | Sharing loaded java classes among a plurality of nodes | |
KR102419704B1 (ko) | 보안 보호 방법 및 장치 | |
CN111259205B (zh) | 一种图数据库遍历方法、装置、设备及存储介质 | |
US7962926B2 (en) | Method, system, and program storage device for generating a retry message when a thread in a real-time application is unavailable to process a request to utilize the real-time application | |
CN117032935B (zh) | 一种基于K8s的异构加速卡的管理调度系统及方法 | |
CN112463400A (zh) | 一种基于共享内存的实时数据分发方法及装置 | |
CN105677481B (zh) | 一种数据处理方法、系统及电子设备 | |
CN117667408B (zh) | 一种gpu资源共享管理调度方法及系统 | |
WO2024098888A1 (zh) | 模型存储优化方法及电子设备 | |
Huss-Lederman et al. | MPI-2: Extensions to the message passing interface | |
US7028287B2 (en) | Method and apparatus for facilitating compact object headers | |
EP3783484B1 (en) | Data processing method and computer device | |
CN115964176B (zh) | 云计算集群调度方法、电子设备和存储介质 | |
CN112153114A (zh) | 一种分时访问共享器件的方法、系统、设备及介质 | |
CN116680209A (zh) | 基于wasm的多智能合约实例管理方法 | |
CN108647087B (zh) | 实现php内核可重入的方法、装置、服务器和存储介质 | |
CN1719416A (zh) | 嵌入式并行计算系统以及嵌入式并行计算方法 | |
CN112416414A (zh) | 一种基于状态机的微服务架构容器化轻量级工作流系统 | |
CN113961364B (zh) | 一种大规模锁系统实现方法、装置、存储介质和服务器 | |
CN115114022A (zh) | 对gpu资源进行使用的方法、系统、设备及介质 | |
CN112130900B (zh) | 一种bmc的用户信息管理方法、系统、设备以及介质 | |
CN117112235B (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 |