GPU隔离共享方法及装置与流程
未命名
09-29
阅读:182
评论:0
gpu隔离共享方法及装置
技术领域
1.本技术涉及计算机技术领域,具体涉及一种gpu隔离共享方法及装置。
背景技术:
2.gpu(graphics processing unit,图形处理器)任务可以分为在线任务和离线任务,若不对gpu进行隔离,会导致在线任务单独占用一张完整的gpu卡,此时gpu利用率较低,gpu资源未能充分利用,导致成本增加。
3.目前业界针对gpu的隔离方案包括如mps、cuda(compute unified device architecture,nvidia的一种并行计算平台和编程模型)api劫持和内核劫持技术。mps由nvidia官方开发,通过整合context技术实现隔离,但整合多个任务的cuda context至一个cuda context,这可能会导致额外的故障传播;此外,由于mps并未开源,故障诊断也是一个难题;劫持cuda api方案通过在cuda下发请求阶段进行修正,实现一定的算力和显存隔离;但需要通过nvidia-smi不断获取显存信息,开销较大,并且对cuda版本有较强的依赖性;内核劫持技术主要通过新的内核驱动模块,为容器提供虚拟的gpu设备,劫持对nvidia驱动的调用,但技术实现上较为复杂,当发生版本更新时,内核拦截驱动模块迭代较为困难。
技术实现要素:
4.鉴于上述问题,提出了本技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的gpu隔离共享方法及装置。
5.根据本技术实施例的第一方面,提供了一种gpu隔离共享方法,其包括:
6.构建第一管理接口,基于第一管理接口设置隶属同一进程组的多个应用程序的gpu使用分配数据,并根据gpu使用分配数据生成进程组的gpu配置信息;
7.当进程组的应用程序启动使用gpu资源,基于第二管理接口返回给显卡驱动进程组的gpu配置信息,以便显卡驱动根据gpu配置信息切分gpu资源,提供给对应的应用程序隔离共享gpu资源;其中,第二管理接口调用第一管理接口以获取进程组的gpu配置信息。
8.可选地,方法还包括:
9.预先设置多个应用程序隶属的进程组。
10.可选地,构建第一管理接口,基于第一管理接口设置隶属同一进程组的多个应用程序的gpu使用分配数据,并根据gpu使用分配数据生成进程组的gpu配置信息进一步包括:
11.基于第一管理接口,接收用户针对隶属同一进程组的多个应用程序输入的gpu使用分配数据;gpu使用分配数据包括应用程序使用gpu时间片信息和/或应用程序使用gpu显存信息;
12.根据gpu使用分配数据,为进程组的各个应用程序生成gpu配置信息。
13.可选地,gpu配置信息包括gpu分配时间片信息和/或gpu分配显存信息;gpu使用分配数据基于多个应用程序的优先级设置;
14.根据gpu使用分配数据,为进程组的各个应用程序生成gpu配置信息进一步包括:
15.基于第一管理接口,生成包含gpu分配时间片信息和/或gpu分配显存信息的gpu配置信息;其中,gpu配置信息与进程组的各个应用程序对应。
16.可选地,当进程组的应用程序启动使用gpu资源,基于第二管理接口返回给显卡驱动进程组的gpu配置信息,以便显卡驱动根据gpu配置信息切分gpu资源,提供给对应的应用程序隔离共享gpu资源进一步包括:
17.当进程组的应用程序启动使用gpu资源,基于第二管理接口定位显卡驱动读取gpu实时信息的操作,由第二管理接口调用第一管理接口获取进程组的gpu配置信息,第二管理接口将gpu配置信息替换gpu实时信息返回给显卡驱动;
18.显卡驱动根据gpu配置信息切分gpu资源,提供给对应的应用程序使用,以便隔离共享gpu资源。
19.可选地,第二管理接口包括gpu分配时间片信息返回接口和/或gpu分配显存信息返回接口。
20.可选地,显卡驱动根据gpu配置信息切分gpu资源,提供给对应的应用程序使用,以便隔离共享gpu资源进一步包括:
21.显卡驱动根据gpu分配时间片信息确定应用程序一次调用可使用gpu的时间阈值和/或进行算力分配,以及,根据gpu分配显存信息确定应用程序可使用gpu的显存阈值。
22.可选地,方法还包括:
23.基于第一管理接口,获取gpu的使用信息。
24.可选地,方法执行于linux系统。
25.根据本技术实施例的第二方面,提供了一种gpu隔离共享装置,其包括:
26.配置模块,适于构建第一管理接口,基于第一管理接口设置隶属同一进程组的多个应用程序的gpu使用分配数据,并根据gpu使用分配数据生成进程组的gpu配置信息;
27.隔离模块,适于当进程组的应用程序启动使用gpu资源,基于第二管理接口返回给显卡驱动进程组的gpu配置信息,以便显卡驱动根据gpu配置信息切分gpu资源,提供给对应的应用程序隔离共享gpu资源;其中,第二管理接口调用第一管理接口以获取进程组的gpu配置信息。
28.根据本技术实施例的第三方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
29.所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述gpu隔离共享方法对应的操作。
30.根据本技术实施例的第四方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述gpu隔离共享方法对应的操作。
31.根据本技术的提供的gpu隔离共享方法及装置,通过第一管理接口设置生成进程组的gpu配置信息,第二管理接口返回给显卡驱动进程组的gpu配置信息,显卡驱动可以根据gpu配置信息切分gpu资源,进行gpu资源的隔离共享,这一过程用户无感知,且无需重新编译应用程序,也不受cuda版本迭代影响。对于故障传播可以做到自主可控,无需nvidia-smi获取显存开销,迭代更容易。
32.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
33.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
34.图1示出了根据本技术一个实施例的gpu隔离共享方法的流程图;
35.图2a示出了gpu非隔离共享时应用程序使用gpu的示意图;
36.图2b示出了gpu隔离共享时应用程序使用gpu的示意图;
37.图2c示出了应用程序平均分配gpu算力时的示意图;
38.图2d示出了应用程序按照优先级分配gpu算力时的示意图;
39.图3示出了内核隔离的架构示意图;
40.图4示出了根据本技术另一个实施例的gpu隔离共享方法的流程图;
41.图5示出了根据本技术一个实施例的gpu隔离共享装置的结构示意图;
42.图6示出了根据本技术一个实施例的一种计算设备的结构示意图。
具体实施方式
43.下面将参照附图更详细地描述本技术的示例性实施例。虽然附图中显示了本技术的示例性实施例,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
44.首先,对本技术一个或多个实施例涉及的名词术语进行解释。
45.linux内核:开放源代码的操作系统内核,是操作系统的核心,负责管理系统的硬件和软件资源;
46.cgroup:control group,是linux内核中用于对进程组进行统一的资源监控和限制的功能;
47.混合部署:对gpu而言,混合部署是将不同优先级的在线业务(通常为延迟敏感型高优先级任务)和离线任务(通常为延时不敏感型低优先级任务)部署在同一块gpu上,共享gpu资源;
48.算力隔离:限制gpu任务可用的gpu算力,主要是实现切分gpu算力,分配在线业务更多的算力,保障在线业务的性能和稳定性;
49.显存隔离:限制gpu任务的可用显存量,实现一张gpu卡跑多个任务的目标;
50.api:application programming interface,应用程序编程接口,一些预先定义好的函数,目的是提供应用程序访问一组例程的能力;
51.bgm模块:发明人自研发的用于gpu管理的内核模块,提供api给nvidia驱动调用;
52.cuda:compute unified device architecture,由nvidia公司推出的一个并行计算平台和编程模型,它包含了一系列的工具、库和api,可以帮助开发者在nvidia gpu上进
行高性能计算;
53.cuda context:是cuda运行环境中的一个重要概念,它是一个抽象的概念,表示了一个任务执行cuda代码时的上下文环境;
54.nvidia-smi:nvidia system management interface,是一个命令行工具,可以用于监控和管理nvidia gpu设备。
55.图1示出了根据本技术一实施例的gpu隔离共享方法的流程图,如图1所示,该方法包括如下步骤:
56.步骤s101,构建第一管理接口,基于第一管理接口设置隶属同一进程组的多个应用程序的gpu使用分配数据,并根据gpu使用分配数据生成进程组的gpu配置信息。
57.本实施例可以执行于如linux系统,基于linux系统内核,采用白盒开发,方便及时自主定位故障,实现对gpu资源的隔离共享,也可以执行于其他系统,此处不做限定。
58.具体的,构建第一管理接口,第一管理接口可以采用如cgroup接口,方便对进程组进行批量任务的gpu算力时间、显存等管理及监控,也可以兼容linux的资源管理。第一管理接口如cpu.bgm.control接口,可以基于第一管理接口来设置隶属同一进程组的多个应用程序的gpu使用分配数据,gpu使用分配数据包括如应用程序使用gpu时间片信息、应用程序使用gpu显存信息等,根据gpu使用分配数据,第一管理接口对应的生成进程组的gpu配置信息,gpu配置信息包括gpu分配时间片信息、gpu分配显存信息,即确定进程组中各个应用程序对应的gpu分配时间片信息,如应用程序1对应gpu分配时间片信息为20ms,应用程序2对应gpu分配时间片信息为20us;应用程序1对应gpu分配显存信息为1/4gpu显存总量,应用程序2对应gpu分配显存信息为1/4gpu显存总量等。
59.此处,可以预先设置多个应用程序隶属的进程组,如通过设置应用程序参数等,将多个应用程序设置为隶属同一进程组,方便一次进程执行多个应用程序。应用程序可以包括如在线任务、离线任务等不同任务,每个应用程序所需的算力可以不同,根据在线任务、离线任务可以确定不同应用程序的优先级,如在线任务对应的应用程序优先级高于离线任务对应的应用程序。
60.步骤s102,当进程组的应用程序启动使用gpu资源,基于第二管理接口返回给显卡驱动进程组的gpu配置信息,以便显卡驱动根据gpu配置信息切分gpu资源,提供给对应的应用程序隔离共享gpu资源。
61.当进程组的各应用程序启动需使用gpu资源时,若不对gpu进行资源隔离,使得每个应用程序任务都要独占一个gpu资源,如图2a所示,应用程序0使用gpu0,应用程序1使用gpu1,应用程序2使用gpu2,导致gpu资源使用效率不高。在基于第一管理接口设置生成进程组的gpu配置信息后,当显卡驱动(nvidia驱动)需要获取gpu实时信息时,可以利用第二管理接口对其获取操作进行定位,由第二管理接口调用第一管理接口获取到进程组的gpu配置信息,利用gpu配置信息替换要返回的gpu实时信息,返回给显卡驱动进程组的gpu配置信息。如gpu实时信息记录了gpu可用资源22g,gpu配置信息中记录应用程序1的gpu分配显存信息为6g,则返回给显卡驱动6g。显卡驱动根据返回的gpu配置信息,可以切分gpu资源,如可以切分gpu资源6g给应用程序1,剩余的22-6=16g可以提供给其它应用程序使用,gpu配置信息中记录应用程序1的gpu分配时间片信息为20ms,显卡驱动分配给应用程序1一次调用时,最多使用gpu执行20ms等,实现隔离共享gpu资源。
62.gpu隔离共享可以如图2b所示,应用程序0、应用程序1、应用程序2可以共享使用gpu1,提高gpu的使用效率。对于时间片分配,若不切分gpu时间,多个应用程序存在如在线业务和离线业务混跑时,两种业务将均分gpu的算力,如图2c所示,应用程序0、应用程序1、应用程序2平均分配gpu算力,导致在线业务受到离线业务的干扰,其性能无法保障。基于该问题,利用gpu配置信息中记录的应用程序的gpu分配时间片信息,如给高优先级的在线业务较大的时间片,给低优先级的离线业务较小的时间片,从而保障合理切分gpu算力,如优先级,应用程序0》应用程序1》应用程序2,分配时间片时,应用程序0》应用程序1》应用程序2,如图2d所示,应用程序0与应用程序1、应用程序2相比,占用较多gpu算力,应用程序1占用的gpu算力大于应用程序2,从而保障在线业务的性能。
63.本实施例中,第一管理接口、第二管理接口可以采用白盒开发,其位置如图3所示,管理接口(即第一管理接口、第二管理接口)可以联动nvidia驱动和linux内核,设置生成进程组的gpu配置信息,当nvidia驱动处理显存信息以及时间片时,通过调用第二管理接口,即可获取到gpu配置信息,据此切分限制显存和算力的读取及分配,实现gpu资源的隔离共享。与原始堆栈相比,原始堆栈和内核隔离对应的用户可见的包括cuda app(cuda应用程序)、cuda runtime api(cuda运行接口)、cuda driver api(cuda驱动接口),内核隔离不做变动;在内核层,内核隔离在显卡驱动后,增加管理接口,联动nvidia驱动和linux内核,实现对gpu(如图3所示的gpu 0-gpu n)的隔离共享。
64.根据本技术提供的gpu隔离共享方法,通过第一管理接口设置生成进程组的gpu配置信息,第二管理接口返回给显卡驱动进程组的gpu配置信息,显卡驱动可以根据gpu配置信息切分gpu资源,进行gpu资源的隔离共享,这一过程用户无感知,且无需重新编译应用程序,也不受cuda版本迭代影响。对于故障传播可以做到自主可控,无需nvidia-smi获取显存开销,迭代更容易。
65.图4示出了根据本技术一实施例的gpu隔离共享方法的流程图,如图4所示,该方法包括以下步骤:
66.步骤s401,基于第一管理接口,接收用户针对隶属同一进程组的多个应用程序输入的gpu使用分配数据,根据gpu使用分配数据,为进程组的各个应用程序生成gpu配置信息。
67.第一管理接口可以采用如cgroup接口,可以直接接收用户针对隶属同一进程组的多个应用程序输入的gpu使用分配数据,如用户针对应用程序0、应用程序1、应用程序2输入对应的各应用程序使用gpu时间片信息、应用程序使用gpu显存信息等,第一管理接口接收输入的gpu使用分配数据后,可以生成包含gpu分配时间片信息、gpu分配显存信息的gpu配置信息。其中,gpu配置信息与进程组的各个应用程序对应。
68.多个应用程序隶属的进程组可以预先设置,对隶属同一进程组的应用程序,可以利用cgroup接口进行管理。
69.进一步,基于第一管理接口,还可以获取gpu的使用信息,如当前gpu空闲的算力、显存等,方便了解用户设置时根据gpu的使用信息确定配置是否准确等。
70.步骤s402,当进程组的应用程序启动使用gpu资源,基于第二管理接口定位显卡驱动读取gpu实时信息的操作,由第二管理接口调用第一管理接口获取进程组的gpu配置信息,第二管理接口将gpu配置信息替换gpu实时信息返回给显卡驱动。
71.当应用程序启动需使用gpu资源时,显卡驱动(nvidia驱动)会读取gpu实时信息,以便分配给应用程序使用。第二管理接口可以定位显卡驱动读取gpu实时信息的操作。第二管理接口通过调用第一管理接口可以获取进程组的gpu配置信息,将gpu配置信息替换gpu实时信息返回给显卡驱动,显卡驱动获取到的即为gpu配置信息。
72.第二管理接口可以包括gpu分配时间片信息返回接口、gpu分配显存信息返回接口,根据需要调用对应的接口返回gpu分配时间片信息、gpu分配显存信息。
73.步骤s403,显卡驱动根据gpu配置信息切分gpu资源,提供给对应的应用程序使用,以便隔离共享gpu资源。
74.显卡驱动根据gpu配置信息中包含的gpu分配时间片信息可以确定应用程序一次调用可使用gpu的时间阈值、或者进行相应的算力分配,以及,根据gpu配置信息中包含的gpu分配显存信息确定应用程序可使用gpu的显存阈值,从而实现切分gpu资源给各个应用程序使用,多个应用程序可以隔离共享gpu资源。
75.基于本实施例,以gpu资源的显存总量为23g,设置同一进程组内包含test1-test4共4个gpu任务为例,1)若不做gpu隔离共享,执行4个业务时,4个业务混跑,会报错:因为没有显存隔离引发oom(out of memory,内存溢出),导致cuda初始化失败,业务全部失败。对于这种业务,在未做gpu资源隔离时,无法混跑,只能独占gpu。2)若仅切分显存资源,如限制test1-test4每个仅可用1/4显存时,一张gpu卡上可以混跑4个之前需要独占gpu卡的业务。从计算速度上来看,4个任务完成一次训练均需要56s左右,完成一个step需要71ms,即这4个业务基本均分gpu算力。3)根据优先级,切分显存的同时切分算力资源(时间片),如设置test1的时间片为20ms,test2-test4的时间片为200us,4个业务混跑正常运行,test1完成一次训练需要27s左右,完成一个step需要35ms,test2-test4完成一次训练需160s左右,完成一次step需要200ms。即较大时间片的test1拥有更高的算力,训练速度会远高于其他,也符合业务优先级的需求。以上为举例说明,具体根据实施情况设置,此处不做限定。
76.根据本技术提供的gpu隔离共享方法,通过第一管理接口接收用户针对隶属同一进程组的多个应用程序输入的gpu使用分配数据,可以为进程组的各个应用程序生成对应的gpu配置信息。当应用程序启动使用gpu资源时,第二管理接口定位显卡驱动读取gpu实时信息的操作,将返回gpu实时信息替换为返回gpu配置信息给显卡驱动,从而显卡驱动可以根据gpu配置信息为各个应用程序切分gpu资源来使用,实现多个应用程序隔离共享gpu资源。进一步,第一管理接口、第二管理接口绕开黑盒的cuda层,基于白盒开发,无须修改应用程序,无须替换用户态cuda库,即可做到gpu算力和显存的隔离,侵入性最小化。
77.图5示出了本技术一实施例提供的gpu隔离共享装置的结构示意图。如图5所示,该装置包括:
78.配置模块510,适于构建第一管理接口,基于基于第一管理接口设置隶属同一进程组的多个应用程序的gpu使用分配数据,并根据gpu使用分配数据生成进程组的gpu配置信息;
79.隔离模块520,适于当进程组的应用程序启动使用gpu资源,基于第二管理接口返回给显卡驱动进程组的gpu配置信息,以便显卡驱动根据gpu配置信息切分gpu资源,提供给对应的应用程序隔离共享gpu资源;其中,第二管理接口调用第一管理接口以获取进程组的gpu配置信息。
80.可选地,装置还包括:进程组模块530,适于预先设置多个应用程序隶属的进程组。
81.可选地,配置模块510进一步适于:
82.基于第一管理接口,接收用户针对隶属同一进程组的多个应用程序输入的gpu使用分配数据;gpu使用分配数据包括应用程序使用gpu时间片信息和/或应用程序使用gpu显存信息;
83.根据gpu使用分配数据,为进程组的各个应用程序生成gpu配置信息。
84.可选地,gpu配置信息包括gpu分配时间片信息和/或gpu分配显存信息;gpu使用分配数据基于多个应用程序的优先级设置;
85.配置模块510进一步适于:
86.基于第一管理接口,生成包含gpu分配时间片信息和/或gpu分配显存信息的gpu配置信息;其中,gpu配置信息与进程组的各个应用程序对应。
87.可选地,隔离模块520进一步适于:
88.当进程组的应用程序启动使用gpu资源,基于第二管理接口定位显卡驱动读取gpu实时信息的操作,由第二管理接口调用第一管理接口获取进程组的gpu配置信息,第二管理接口将gpu配置信息替换gpu实时信息返回给显卡驱动;
89.显卡驱动根据gpu配置信息切分gpu资源,提供给对应的应用程序使用,以便隔离共享gpu资源。
90.可选地,第二管理接口包括gpu分配时间片信息返回接口和/或gpu分配显存信息返回接口。
91.可选地,隔离模块520进一步适于:
92.显卡驱动根据gpu分配时间片信息确定应用程序一次调用可使用gpu的时间阈值和/或进行算力分配,以及,根据gpu分配显存信息确定应用程序可使用gpu的显存阈值。
93.可选地,装置还包括:获取模块540,适于基于第一管理接口,获取gpu的使用信息。
94.可选地,执行于linux系统。
95.以上各模块的描述参照方法实施例中对应的描述,在此不再赘述。
96.根据本技术提供的gpu隔离共享装置,通过第一管理接口设置生成进程组的gpu配置信息,第二管理接口返回给显卡驱动进程组的gpu配置信息,显卡驱动可以根据gpu配置信息切分gpu资源,进行gpu资源的隔离共享,这一过程用户无感知,且无需重新编译应用程序,也不受cuda版本迭代影响。对于故障传播可以做到自主可控,无需nvidia-smi获取显存开销,迭代更容易。
97.本技术还提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,可执行指令可执行上述任意方法实施例中的gpu隔离共享方法。
98.图6示出了根据本技术一实施例的一种计算设备的结构示意图,本技术的具体实施例并不对计算设备的具体实现做限定。
99.如图6所示,该计算设备可以包括:处理器(processor)602、通信接口(communications interface)604、存储器(memory)606、以及通信总线608。
100.其中:
101.处理器602、通信接口604、以及存储器606通过通信总线608完成相互间的通信。
102.通信接口604,用于与其它设备比如客户端或其它服务器等的网元通信。
103.处理器602,用于执行程序610,具体可以执行上述gpu隔离共享方法实施例中的相关步骤。
104.具体地,程序610可以包括程序代码,该程序代码包括计算机操作指令。
105.处理器602可能是中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本技术的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。
106.存储器606,用于存放程序610。存储器606可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
107.程序610具体可以用于使得处理器602执行上述任意方法实施例中的gpu隔离共享方法。程序610中各步骤的具体实现可以参见上述gpu隔离共享实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
108.在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本技术也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本技术的内容,并且上面对特定语言所做的描述是为了披露本技术的较佳实施方式。
109.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本技术的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
110.类似地,应当理解,为了精简本技术并帮助理解各个发明方面中的一个或多个,在上面对本技术的示例性实施例的描述中,本技术的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本技术要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本技术的单独实施例。
111.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
112.此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本技术的范围
之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
113.本技术的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本技术的一些或者全部部件的一些或者全部功能。本技术还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本技术的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
114.应该注意的是上述实施例对本技术进行说明而不是对本技术进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本技术可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
技术特征:
1.一种gpu隔离共享方法,其包括:构建第一管理接口,基于所述第一管理接口设置隶属同一进程组的多个应用程序的gpu使用分配数据,并根据所述gpu使用分配数据生成所述进程组的gpu配置信息;当所述进程组的应用程序启动使用gpu资源,基于第二管理接口返回给所述显卡驱动所述进程组的gpu配置信息,以便所述显卡驱动根据所述gpu配置信息切分所述gpu资源,提供给对应的应用程序隔离共享所述gpu资源;其中,所述第二管理接口调用所述第一管理接口以获取所述进程组的gpu配置信息。2.根据权利要求1所述的方法,其中,所述方法还包括:预先设置多个应用程序隶属的进程组。3.根据权利要求1或2所述的方法,其中,所述构建第一管理接口,基于所述第一管理接口设置隶属同一进程组的多个应用程序的gpu使用分配数据,并根据所述gpu使用分配数据生成所述进程组的gpu配置信息进一步包括:基于第一管理接口,接收用户针对隶属同一进程组的多个应用程序输入的gpu使用分配数据;所述gpu使用分配数据包括应用程序使用gpu时间片信息和/或应用程序使用gpu显存信息;根据所述gpu使用分配数据,为所述进程组的各个应用程序生成gpu配置信息。4.根据权利要求1-3中任一项所述的方法,其中,所述gpu配置信息包括gpu分配时间片信息和/或gpu分配显存信息;所述gpu使用分配数据基于所述多个应用程序的优先级设置;所述根据所述gpu使用分配数据,为所述进程组的各个应用程序生成gpu配置信息进一步包括:基于所述第一管理接口,生成包含gpu分配时间片信息和/或gpu分配显存信息的gpu配置信息;其中,所述gpu配置信息与所述进程组的各个应用程序对应。5.根据权利要求1-4中任一项所述的方法,其中,所述当所述进程组的应用程序启动使用gpu资源,基于第二管理接口返回给所述显卡驱动所述进程组的gpu配置信息,以便所述显卡驱动根据所述gpu配置信息切分所述gpu资源,提供给对应的应用程序隔离共享所述gpu资源进一步包括:当所述进程组的应用程序启动使用gpu资源,基于第二管理接口定位显卡驱动读取gpu实时信息的操作,由所述第二管理接口调用所述第一管理接口获取所述进程组的gpu配置信息,所述第二管理接口将所述gpu配置信息替换gpu实时信息返回给所述显卡驱动;所述显卡驱动根据所述gpu配置信息切分所述gpu资源,提供给对应的应用程序使用,以便隔离共享所述gpu资源。6.根据权利要求5所述的方法,其中,所述第二管理接口包括gpu分配时间片信息返回接口和/或gpu分配显存信息返回接口。7.根据权利要求5所述的方法,其中,所述显卡驱动根据所述gpu配置信息切分所述gpu资源,提供给对应的应用程序使用,以便隔离共享所述gpu资源进一步包括:所述显卡驱动根据所述gpu分配时间片信息确定应用程序一次调用可使用gpu的时间阈值和/或进行算力分配,以及,根据所述gpu分配显存信息确定应用程序可使用gpu的显存阈值。8.根据权利要求1-7中任一项所述的方法,其中,所述方法还包括:
基于第一管理接口,获取所述gpu的使用信息。9.根据权利要求1-8中任一项所述的方法,其中,所述方法执行于linux系统。10.一种gpu隔离共享装置,其包括:配置模块,适于构建第一管理接口,基于所述基于第一管理接口设置隶属同一进程组的多个应用程序的gpu使用分配数据,并根据所述gpu使用分配数据生成所述进程组的gpu配置信息;隔离模块,适于当所述进程组的应用程序启动使用gpu资源,基于第二管理接口返回给所述显卡驱动所述进程组的gpu配置信息,以便所述显卡驱动根据所述gpu配置信息切分所述gpu资源,提供给对应的应用程序隔离共享所述gpu资源;其中,所述第二管理接口调用所述第一管理接口以获取所述进程组的gpu配置信息。11.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-9中任一项所述的gpu隔离共享方法对应的操作。12.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-9中任一项所述的gpu隔离共享方法对应的操作。
技术总结
本申请公开了一种GPU隔离共享方法及装置,方法包括:构建第一管理接口,基于第一管理接口设置隶属同一进程组的多个应用程序的GPU使用分配数据,并根据GPU使用分配数据生成进程组的GPU配置信息;当进程组的应用程序启动使用GPU资源,基于第二管理接口返回给显卡驱动进程组的GPU配置信息,以便显卡驱动根据GPU配置信息切分GPU资源,提供给对应的应用程序隔离共享GPU资源;其中,第二管理接口调用第一管理接口以获取进程组的GPU配置信息。这一过程用户无感知,且无需重新编译应用程序,也不受CUDA版本迭代影响。对于故障传播可以做到自主可控,无需nvidia-smi获取显存开销,迭代更容易。容易。容易。
技术研发人员:王贇 唐松 王炜煜 王辉 李文宇 倪驾宇 王华键
受保护的技术使用者:上海哔哩哔哩科技有限公司
技术研发日:2023.06.26
技术公布日:2023/9/25
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/