CN110750282A - 用于运行应用程序的方法、装置及gpu节点 - Google Patents
用于运行应用程序的方法、装置及gpu节点 Download PDFInfo
- Publication number
- CN110750282A CN110750282A CN201910971306.4A CN201910971306A CN110750282A CN 110750282 A CN110750282 A CN 110750282A CN 201910971306 A CN201910971306 A CN 201910971306A CN 110750282 A CN110750282 A CN 110750282A
- Authority
- CN
- China
- Prior art keywords
- application program
- gpu
- program interface
- server
- version information
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本说明书的实施例提供用于运行应用程序的方法、装置及GPU节点。该GPU节点具有服务端、至少一个客户端和至少一个GPU硬件。在客户端上启动运行应用程序后,客户端获取应用程序运行时所需动态链接库中规定的API接口的第一版本信息,并将该第一版本信息包含在API指令运行请求中发送给服务端。服务端使用第一版本信息与本地驱动程序中的第二版本信息来进行API接口适配,并且使用适配后的API接口来访问GPU硬件执行API指令,然后将API指令运行结果返回给客户端。
Description
技术领域
本说明书的实施例通常涉及计算机领域,更具体地,涉及用于运行应用程序的方法、装置及GPU节点。
背景技术
AI(Artificial Intelligence,人工智能),特别是深度学习(Deep Learning,DL),目前已经广泛用于支付(人脸)、定损(图片识别)、交互与客服(语音识别、内容过滤)等多种场景,取得了显著效果。典型DL任务需要强大的算力支撑,因此当前绝大多数任务都运行在部署在GPU节点中的GPU等加速设备之上,GPU(Graphics Processing Unit,图形处理器)是一种高性能计算加速设备,目前广泛用于AI、深度学习的训练和在线服务。
在实践中,GPU节点中的GPU硬件通常更新换代快,例如高性能GPU设备几乎保持每年推出一代新产品,其性能、效率的提升非常明显。随着GPU硬件的更新换代,需要安装新的GPU驱动程序以及进行软件库升级。而对于很多业务,底层软件的验证和升级牵涉面广,往往比较慎重,甚至出现DL应用程序(例如,GPU应用程序)仍长期采用老的GPU驱动程序和软件库,由此导致DL应用程序无法运行在新的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硬件运行所述应用程序接口指令,所述第二版本信息是所述服务端上安装的所述至少一个GPU硬件的驱动程序中的应用程序接口的版本信息。
根据本说明书的实施例的另一方面,提供一种计算设备,包括:一个或多个处理器,以及与所述一个或多个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上所述的应用于服务端的用于运行应用程序的方法。
根据本说明书的实施例的另一方面,提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的应用于服务端的用于运行应用程序的方法。
根据本说明书的实施例的另一方面,提供一种计算设备,包括:一个或多个处理器,以及与所述一个或多个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上所述的应用于客户端的用于运行应用程序的方法。
根据本说明书的实施例的另一方面,提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的应用于服务端的用于运行应用程序的方法。
利用本说明书的实施例所提供的应用程序运行方法及装置,通过提供一种具备客户端-服务端架构的应用程序运行机制,在客户端上实现应用程序对API指令的调用,以及在服务端上实现API接口适配并且经由经过适配后的API接口访问GPU硬件来运行API指令,由此解耦应用程序对API指令的调用以及访问GPU硬件来具体执行API指令,这样,GPU应用程序能够在客户端加载现有的API指令,然后在服务端完成API接口适配以使得适配后的API接口能够访问新的GPU硬件来运行API指令,从而使得应用程序能够在无需修改或重新编译的情况下运行在新GPU硬件上。
附图说明
通过参照下面的附图,可以实现对于本说明书的实施例内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了现有的应用程序运行架构的示意图;
图2示出了应用程序在不同GPU硬件下的运行状况示意图;
图3示出了根据本说明书的实施例的用于运行应用程序的GPU节点的架构示意图;
图4示出了根据本说明书的实施例的应用于客户端的应用程序运行装置的方框图;
图5示出了根据本说明书的实施例的应用于服务端的应用程序运行装置的结构示意图;
图6示出了根据本说明书的实施例的API接口适配策略的示例示意图;
图7示出根据本说明书的实施例的用于运行应用程序的方法的流程图;
图8A示出了根据本说明书的实施例的应用程序运行***架构部署在裸机环境的示意图;
图8B示出了根据本说明书的实施例的应用程序运行***架构部署在容器中的示意图;
图8C示出了根据本说明书的实施例的应用程序运行***架构部署在虚拟机环境的示意图;
图9示出了根据本说明书的实施例的用于在GPU计算集群中部署新的GPU节点的示例示意图;
图10示出了根据本说明书的实施例的应用于服务端的用于运行应用程序的计算设备的方框图;和
图11示出了根据本说明书的实施例的应用于客户端的用于运行应用程序的计算设备的方框图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书的实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
如本文中所使用的,“GPU节点”可以是具有GPU处理能力的主体,例如,具有GPU处理能力的单个GPU设备或GPU***。此外,在本文中,“应用程序”与“GPU应用程序”可以互换使用,都是意在描述能够在GPU设备上运行的应用程序。
图1示出了用于运行应用程序的GPU***架构100的示意图。
如图1所示,GPU***架构100由下到上可以包括GPU硬件实体110、GPU驱动120、AI框架层130以及应用层140。
在本说明书的实施例中,GPU硬件实体110可以是nvidia企业级P100,V100,T4或消费型GTX 1080等中的一种,但是,GPU硬件实体110并不限于上述举例。GPU硬件实体110包括GPU硬件以及用于实现GPU功能所需的GPU资源等。具体地,每个GPU硬件实体110的GPU资源例如可以包括:GPU显存、计算队列、计算任务句柄等等。在本说明书中,GPU硬件实体110可以包括一个或多个GPU硬件实体。
GPU驱动120用于驱动GPU硬件实体110,以使能GPU硬件实体进行工作。例如,GPU驱动120中包含有API接口的版本信息。相应地,低于GPU驱动120中所包含的版本信息的API接口不能访问GPU硬件实体。例如,假设GPU驱动120中的API接口的版本是CUDA10,则调用CUDA9的应用程序就不能访问GPU硬件,从而不能在GPU硬件上运行。这里,CUDA是GPU厂商nvidia所推出的SDK统称,具有对应的开源接口,例如OpenCL。
图1中示出了硬件实体P100/P40/P4,V100和T4。其中,硬件实体P100/P40/P4的驱动程序中的API接口的版本为384.111,V100的驱动程序中的API接口的版本为396.26,以及T4的驱动程序中的API接口的版本为410或418。此外,T4中的API接口版本410或418最高,利用该版本的API接口可以访问硬件实体P100/P40/P4、V100和T4。V100的驱动程序中的API接口版本396.26比硬件实体P100/P40/P4的驱动程序中的API接口版本384.111高,由此利用版本396.26的API接口可以访问硬件实体P100/P40/P4和V100。硬件实体P100/P40/P4的驱动程序中的API接口版本384.111最低,利用该版本的API接口只能访问硬件实体P100/P40/P4。
AI框架层130用于提供***支持的各种API接口,例如,CUDA10,CUDA9和CUDA8等,以供使用来构建应用程序。在编译时,AI框架层130通常绑定特定动态链接库(例如CUDA8或CUDA10)以产生可执行程序。之后,在运行时刻,基于AI框架层130的GPU应用程序在启动时,通过操作***搜索所需的动态链接库(如CUDA8)并加载到缓存中。AI框架层130例如可以包括TensorFlow,PyTorch,Caffe2等框架,所有已知的AI框架层130都支持GPU运行,即,在AI框架层130所提供的API接口的版本不低于GPU硬件的驱动程序中的API接口的版本的情况下,该AI框架层130所提供的API接口能够访问GPU硬件实体。
在应用程序被成功安装在***中时,所安装的应用程序被存放在应用层140。在应用程序被启动运行时,可以被允许使用所加载版本的API接口来访问GPU硬件,以使用GPU硬件所提供的GPU资源来运行。在本说明书中,应用程序例如可以是用户模型。所述用户模型可以为如下任何一种,但是不限于以下举例:CNN(Convolutional Neural Networks,卷积神经网络)、RNN(Recurrent Neural Network,循环神经网络)、LSTM(Longshort termmemory,长短期记忆网络)、GAN(Generative Adversarial Networks,生成式对抗网络)等模型。
然而,在所加载的API接口的版本低于GPU硬件的驱动程序中的API接口的版本时,如图2所示,在GPU应用程序调用CUDA9时,所调用的API接口的版本为384.111,其低于版本410/418,由此,该GPU应用程序不能使用所调用的API接口访问GPU硬件T4来运行。
在实践中,GPU节点中的GPU硬件通常更新换代快,例如高性能GPU设备几乎保持每年推出一代新产品,其性能、效率的提升非常明显。随着GPU硬件的更新换代,需要安装新的GPU驱动程序以及进行软件库升级。而对于很多业务,底层软件的验证和升级牵涉面广,往往比较慎重,甚至出现DL应用程序(例如,GPU应用程序)仍长期采用老的GPU驱动程序和软件库(动态链接库)。在这种情况下,如果GPU应用程序不能使用现有的API接口访问更新换代后的GPU硬件,则会无法享受更新换代后的GPU硬件所带来的功能和性能改进。
鉴于上述,在本说明书的实施例中,提供了一种具备客户端-服务端架构的应用程序运行机制。在该应用程序运行机制中,在客户端上实现应用程序对API指令的调用,以及在服务端上实现API接口适配并且经由经过适配后的API接口访问GPU硬件来运行API指令,由此解耦应用程序对API指令的调用以及访问GPU硬件来具体执行API指令,这样,GPU应用程序能够在客户端加载现有的API指令,然后在服务端完成API接口适配以使得适配后的API接口能够访问新的GPU硬件来运行API指令,从而使得应用程序能够在无需修改或重新编译的情况下运行在新的GPU硬件上。
下面将结合图3到图11描述根据本说明书的实施例的用于运行应用程序的方法、装置及GPU节点。
图3示出了根据本说明书的实施例的用于运行应用程序的GPU节点300的架构示意图。
如图3所示,GPU节点300包括至少一个客户端310(例如,图3中所示的客户端310-1和310-2)、服务端320以及至少一个GPU硬件330。
每个客户端310包括应用层311、AI框架层312和应用程序运行装置313。在应用程序(例如,GPU应用程序)被成功安装在***中时,所安装的应用程序被存放在应用层311。AI框架层312用于提供***支持的各种API接口,以供使用来构建应用程序。更具体地,AI框架层312通常绑定多个动态链接库(GPU动态链接库),例如cuBlas,cuFFT,cuSparse,cuDNN等,每个动态链接库各自规定所支持的API接口版本信息。
应用程序运行装置313被配置为在应用程序被启动运行时,获取应用程序运行时所需动态链接库中规定的API接口的第一版本信息,并向服务端320发送API指令运行请求,所述API指令运行请求包括第一版本信息,以及从服务端320接收API指令运行结果。
具体地,在GPU应用程序开始运行后,后台***会根据编译时所指定的动态链接库版本,为各个GPU应用程序加载所需的动态链接库,例如,针对GPU应用程序1加载libA.8.0.so,针对GPU应用程序2加载libA.9.0.so,以及针对GPU应用程序3加载libA.10.0.so。然后,应用程序运行装置313提取当前GPU应用程序实际加载的GPU链接库版本。具体地,可以通过扫描程序堆栈或程序的共享内存映射区(例如,linux的动态链接库采用的映射文件到进程地址空间中),搜索动态链接库的文件名,并提取文件名中的版本信息(例如,上述例子中的CUDA8/9/10)。然后,将所提取的版本信息包含在API指令运行请求中发送给服务端320来执行API指令,并从服务端320接收API指令运行结果。
图4示出了根据本说明书的实施例的应用于客户端的应用程序运行装置313的方框图。如图4所示,应用程序运行装置313包括版本信息获取单元3131、运行请求发送单元3133和运行结果接收单元3135。
版本信息获取单元3131被配置为响应于检测到应用程序被启动运行,获取应用程序运行时所需动态链接库中规定的API接口的第一版本信息。接着,运行请求发送单元3133向GPU节点300中的服务端320发送API指令运行请求,所述API指令运行请求包括第一版本信息,以在服务端320进行API接口适配处理和应用程序运行处理。运行结果接收单元3135被配置为从服务端320接收API指令的运行结果。
每个客户端310通过IPC(Inter-Process Communication,进程间通信)或者网络协议方式与服务端320通信,以向服务端320发送API指令运行请求以及从服务端320接收API指令运行结果。
服务端320运行在GPU驱动340之上。服务端320是一个在***后台长时间运行的守护进程(long running daemon)。在本说明书实施例中,一个服务端320上可以部署有一个服务实例,该服务实例可以封装运行在docker容器里。服务端320管理一个或者多个GPU硬件实体330。一个服务端320可以对应多个客户端主体310,或者一个GPU硬件实体330可以对应多个客户端主体310。
服务端320包括应用程序运行装置321。应用程序运行装置321被配置为在从客户端310接收到API指令运行请求后,基于所接收的API指令运行请求中包含的API接口的第一版本信息以及本地安装的驱动程序中的API接口版本信息(即,第二版本信息),根据API接口适配策略来进行API接口适配,然后使用经过适配后的API接口来访问GPU硬件执行API指令。此外,服务端320还将API指令运行结果返回给客户端310。
图5示出了根据本说明书的实施例的应用于服务端的应用程序运行装置321的结构示意图。如图5所示,应用程序运行装置321包括运行请求接收单元3211、适配处理单元3213、应用程序运行单元3215和运行结果发送单元3217。
运行请求接收单元3211被配置为从客户端310接收API指令运行请求,所述API指令运行请求包括应用程序运行时所需动态链接库中规定的API接口的第一版本信息。这里,要说明的是,服务端320可以是从位于同一GPU节点内的客户端310接收API指令运行请求,也可以是从位于不同的GPU节点内的客户端310接收API指令运行请求。
适配处理单元3213被配置为基于API接口适配策略来根据第一版本信息和第二版本信息进行API接口适配处理。这里,第二版本信息是在服务端320上安装的GPU硬件的驱动程序中的API接口的版本信息,例如,针对GPU硬件T4,第二版本信息是410或418。
这里,API接口适配策略可以是基于GPU硬件的API接口兼容列表创建。例如,API接口适配策略可以是基于GPU硬件生成厂商提供的API接口兼容列表预先创建的。或者,在一个示例中,应用程序运行装置321可以包括硬件发现单元322和适配策略创建单元323。硬件发现单元322被配置为发现GPU节点300中的GPU硬件330。适配策略创建单元323被配置为基于所发现的GPU硬件330的API接口兼容列表创建API接口适配策略。
图6示出了根据本说明书的实施例的API接口适配策略的示例示意图。图6中示出了2个客户端(客户端1和客户端2)和1个服务端,其中,客户端1的API接口版本是CUDA10,客户端2的API接口版本是CUDA9,以及服务端的API接口版本是CUDA10。
如图6所示,针对API1和API3,服务端320的API接口版本中没有发生参数变化,由此,在进行适配处理时,针对客户端1和2发送的API指令运行请求,都保持API1和API3的参数不变。针对API2,服务端320的API接口版本中发生参数变化,由此,在进行适配处理时,针对客户端1发送的API指令运行请求,保持API2的参数不变,以及针对客户端2发送的API指令运行请求,对API2进行参数转换。针对API4,服务端320的API接口版本中废止,由此,在进行适配处理时,针对客户端1发送的API指令运行请求,不进行任何操作,以及针对客户端2发送的API指令运行请求,忽略执行并返回执行成功消息。
回到图5,在对API接口进行适配处理后,应用程序运行单元3215使用经过适配处理后的API接口来访问GPU硬件运行API指令。然后,运行结果发送单元3217将API指令的运行结果发送给客户端310。
这里要说明的是,在一个示例中,客户端310和服务端320可以位于同一设备内。在这种情况下,客户端310和服务端320之间可以采用IPC方式(例如UNIX socket,管道或者共享内存等)来实现通信。在另一示例中,客户端310和服务端320也可以位于不同设备内。在这种情况下,客户端310和服务端320之间可以采用网络协议来实现通信,例如,采用TCP(Transmission Control Protocol,传输控制协议)通信协议、IP通信协议、或者RDMA(Remote Direct Memory Access,直接内存访问)通信协议等来实现通信。
此外,服务端320还可以同时从多个客户端310接收API指令运行请求。在这种情况下,应用程序运行装置321还可以包括GPU运行资源隔离单元324和优先级关联单元325。GPU运行资源隔离单元324为GPU硬件运行API指令分配隔离资源。指令优先级管理单元325被配置为管理API指令在GPU硬件上运行的优先级。
此外,为了优化服务端320上的GPU运行效率。应用程序运行装置321还可以包括GPU运行优化单元326。GPU运行优化单元326被配置为对GPU硬件进行运行优化处理。所述优化处理例如可以包括GPU显存优化、GPU性能优化和/或GPU扩展性优化等等。
此外,在多个GPU节点300构成GPU计算集群时,GPU计算集群中还可以包括集群调度器。集群调度器通过网络或者IPC方式与GPU节点300中的客户端310通信。集群调度器负责集群范围内GPU资源的调度。服务端320向集群调度器上报GPU资源(物理GPU资源和/或虚拟GPU资源),例如通过设备插件“nvidia device plugin”上报。使得集群调度器控制集群范围内所有GPU资源的分配。每个客户端310向集群调度器申请GPU资源。集群调度器负责调度执行所有GPU资源的分配,例如,在目标pod上启动实例来实现以将目标拟GPU资源分配给对应的客户端310。具体地,集群调度器可以包括但不限于K8S(Kubernetes)调度器(kube-scheduler)或者Kubemaker调度器。
在GPU计算集群的情况下,所述应用程序运行请求还可以包括应用程序调度信息,所述应用程序调用信息用于指定所述应用程序运行时需要访问的目标GPU硬件(即,用于运行应用程序的GPU硬件)。这里,所述目标GPU硬件可以是所述至少一个GPU硬件中的部分或全部GPU硬件。
图7示出了根据本说明书的实施例的用于运行应用程序的方法700的流程图。
如图7所示,在步骤710,响应于检测到应用程序被启动运行,客户端310获取应用程序运行时所需动态链接库中规定的API接口的第一版本信息。接着,在步骤720,客户端310向服务端320发API指令运行请求,所述API指令运行请求包括第一版本信息。
在接收到API指令运行请求后,在步骤730,服务端320基于API接口适配策略来根据第一版本信息和第二版本信息进行API接口适配处理。这里,第二版本信息是服务端320上安装的至少一个GPU硬件的驱动程序中的API接口的版本信息。
随后,在步骤740,服务端320使用经过适配处理后的API接口来访问GPU硬件运行API指令。接着,在步骤750,将API指令的运行结果发送给客户端310,由此完成API指令运行过程。
如上参照图3到图7描述了根据本说明书的实施例的应用程序运行方法及***架构。根据本说明书的实施例的***架构可以部署在裸机环境、容器环境或者VM虚拟机环境,参考图8A~图8C所示。这里要说明的是,图8A~8C中示出的客户端是本说明书的实施例中公开的客户端310的客户端主体,该客户端主体包括应用程序运行装置313,但不包括应用程311和AI框架层312。
如果该***架构部署在裸机环境中,如图8A所示,服务端和客户端主体都运行在主操作***(host OS)上(例如,都运行在linux上)。服务端通过GPU驱动接管所有对GPU资源的访问。其中,若客户端主体与服务端在同一机器,通信可以采用IPC方式通信;若客户端主体与服务端不在同一机器,则采用TCP协议、IP协议或者RDMA协议等通信。
如果该***架构部署在容器环境中,如图8B所示,服务端以容器化方式运行并管理GPU资源。客户端主体(例如K8S pod)与服务端运行在同一物理机上,客户端主体与服务端之间的通信可以采用IPC,(例如UNIX socket,Pipe或者shmem)或者网络协议实现。
如果该***架构部署在虚拟机环境中,如图8C所示,GPU资源给特定的物理机,然后在VM Guest OS里启动服务端或客户端主体,等同于裸机环境。
由此可见,该***架构可以同时支持部署在裸机、容器和虚拟机,从而使得部署非常灵活。
图9示出了根据本说明书的实施例的用于在GPU计算集群中部署新的GPU节点的示例示意图。
在现有GPU计算集群(例如,图9中的采用的型号GPU-A的GPU节点1和GPU节点2构成的GPU计算集群)需要部署新GPU节点(例如采用型号GPU-B和驱动B的GPU节点3)时,首先在新GPU节点3上部署根据本说明书实施例的客户端310和服务端320。所部署的服务端320支持较新的GPU硬件驱动版本B,并且更新API适配表(即,服务端320的API接口版本更新为版本B)。
然后,将GPU节点3加入到现有GPU计算集群中,使得GPU节点3中的服务端和客户端能够与GPU计算集群中的其它GPU节点(即,GPU节点1和2)的服务端和客户端进行通信,从而形成多种GPU型号并存的异构计算集群。
按照这种方式,新增加的GPU节点3的API接口版本比GPU节点1和2中的API接口版本更新,通过在GPU节点3中部署根据本说明书实施例的客户端310和服务端320,由于GPU节点3中部署的服务端320支持较新的硬件、驱动,由此利用本说明书提供的API接口版本提取-协商-适配机制,可以在服务端320适配老版本的API并代为执行,从而使得现有GPU应用可以无修改地调度并运行在新增加的GPU节点3上,打破了原来特定GPU应用必须运行在特定GPU型号上的限制,提高了集群范围内应用部署、调度的灵活性,例如,可以在新GPU节点上启动一个GPU应用实例(例如封装在容器中),或者将其他GPU节点上正在运行的GPU应用实例热迁移到该新GPU节点(例如为了负载均衡、***维护等)等场景。
此外,当该异构集群需要部署其他GPU硬件(例如GPU-C)时,可以重复上述操作过程来实现。
根据本说明书的实施例,通过提供API接口版本提取-协商-适配机制,可以实现对上(AI框架、应用模型等)保持接口一致,对下则屏蔽物理硬件和驱动的实现差异,从而能够将GPU资源进行更好的抽象、封装和隔离管理,进而有助于提高GPU资源利用率、提高调度灵活性、支持热迁移,实现透明化管理。
如上参照图1到图9,对根据本说明书的实施例的用于运行应用程序的方法及装置的实施例进行了描述。上面的应用程序运行装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图10为根据本说明书的实施例的应用于客户端的用于运行应用程序的计算设备1000的结构框图。
如图10所示,计算设备1000可以包括至少一个处理器1010、存储器(例如,非易失性存储器)1020、内存1030、通信接口1040以及内部总线1060,并且至少一个处理器1010、存储器1020、内存1030和通信接口1040经由总线1060连接在一起。该至少一个处理器1010执行在计算机可读存储介质中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储有计算机可执行指令,其当执行时使得至少一个处理器1010:响应于检测到应用程序被启动运行,获取所述应用程序运行时所需动态链接库中规定的应用程序接口的第一版本信息;向所述GPU节点中的服务端发送应用程序接口指令运行请求,所述应用程序接口指令运行请求包括所述第一版本信息,以在所述服务端进行应用程序接口适配处理和应用程序运行处理;以及从所述服务端接收应用程序接口指令的运行结果,其中,所述应用程序接口适配处理是基于应用程序接口适配策略来根据所述应用程序接口的第一版本信息和第二版本信息进行的,以及所述应用程序运行处理是使用经过适配处理后的应用程序接口来访问所述至少一个GPU硬件运行所述应用程序接口指令,所述第二版本信息是所述服务端上安装的所述至少一个GPU硬件的驱动程序中的应用程序接口的版本信息。
应该理解的是,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1010执行在本说明书的各个实施例中如上结合图3-9描述的各种操作和功能。
图11为根据本说明书的实施例的应用于客户端的用于运行应用程序的计算设备1100的结构框图。
如图11所示,计算设备1100可以包括至少一个处理器1110、存储器(例如,非易失性存储器)1120、内存1130、通信接口1140以及内部总线1160,并且至少一个处理器1110、存储器1120、内存1130和通信接口1140经由总线1160连接在一起。该至少一个处理器1110执行在计算机可读存储介质中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储有计算机可执行指令,其当执行时使得至少一个处理器1110:从客户端接收应用程序接口指令运行请求,所述应用程序接口指令运行请求包括应用程序运行时所需动态链接库中规定的应用程序接口的第一版本信息,所述第一版本信息是响应于所述客户端检测到所述应用程序被启动运行而获取的;基于应用程序接口适配策略来根据所述应用程序接口的第一版本信息和第二版本信息进行应用程序接口适配处理,所述第二版本信息是所述服务端上安装的所述至少一个GPU硬件的驱动程序中的应用程序接口的版本信息;使用经过适配处理后的应用程序接口来访问所述至少一个GPU硬件运行应用程序接口指令;以及将所述应用程序接口指令的运行结果发送给所述客户端。
应该理解的是,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1110执行在本说明书的各个实施例中如上结合图3-9描述的各种操作和功能。
根据一个实施例,提供了一种例如非暂时性机器可读介质的程序产品。非暂时性机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中如上结合图3-9描述的各种操作和功能。
具体地,可以提供配有可读存储介质的***或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该***或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各***结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (19)
1.一种用于运行应用程序的装置,所述装置应用于GPU节点中的服务端,所述GPU节点中部署有至少一个GPU硬件,所述装置包括:
运行请求接收单元,从客户端接收应用程序接口指令运行请求,所述应用程序接口指令运行请求包括应用程序运行时所需动态链接库中规定的应用程序接口的第一版本信息,所述第一版本信息是响应于所述客户端检测到所述应用程序被启动运行而获取的;
适配处理单元,基于应用程序接口适配策略来根据所述应用程序接口的第一版本信息和第二版本信息进行应用程序接口适配处理,所述第二版本信息是所述服务端上安装的所述至少一个GPU硬件的驱动程序中的应用程序接口的版本信息;
应用程序运行单元,使用经过适配处理后的应用程序接口来访问所述至少一个GPU硬件运行应用程序接口指令;以及
运行结果发送单元,将所述应用程序接口指令的运行结果发送给所述客户端。
2.如权利要求1所述的装置,还包括:
硬件发现单元,发现所述GPU节点中的GPU硬件;以及
适配策略创建单元,基于所发现的GPU硬件的应用程序接口兼容列表创建所述应用程序接口适配策略。
3.如权利要求1或2所述的装置,还包括:
GPU运行资源隔离单元,为所述GPU硬件运行所述应用程序接口指令分配隔离资源;以及
指令优先级管理单元,管理所述应用程序接口指令在所述GPU硬件上运行的优先级。
4.如权利要求3所述的装置,还包括:
GPU运行优化单元,对所述GPU硬件进行运行优化处理。
5.如权利要求1所述的装置,其中,所述客户端和所述服务端位于同一设备内,以及所述客户端和所述服务端之间的通信采用进程间通信机制来实现。
6.如权利要求1所述的装置,其中,所述客户端和所述服务端位于不同设备内,以及所述客户端和所述服务端之间的通信采用网络协议实现。
7.如权利要求1所述的装置,其中,所述客户端与所述服务端位于同一GPU节点内,或者所述客户端与所述服务端位于不同的GPU节点内。
8.如权利要求1所述的装置,其中,所述应用程序运行请求包括应用程序调度信息,所述应用程序调用信息用于指定所述应用程序运行时需要访问的目标GPU硬件,以及所述目标GPU硬件是所述至少一个GPU硬件中的部分或全部GPU硬件。
9.一种用于运行应用程序的装置,所述装置应用于GPU节点中的客户端,所述GPU节点中部署有至少一个GPU硬件,所述装置包括:
版本信息获取单元,响应于检测到应用程序被启动运行,获取所述应用程序运行时所需动态链接库中规定的应用程序接口的第一版本信息;
运行请求发送单元,向所述GPU节点中的服务端发送应用程序接口指令运行请求,所述应用程序接口指令运行请求包括所述第一版本信息,以在所述服务端进行应用程序接口适配处理和应用程序运行处理;以及
运行结果接收单元,从所述服务端接收应用程序接口指令的运行结果,
其中,所述应用程序接口适配处理是基于应用程序接口适配规则来根据所述应用程序接口的第一版本信息和第二版本信息进行的,以及所述应用程序运行处理是使用经过适配处理后的应用程序接口来访问所述至少一个GPU硬件运行所述应用程序接口指令,所述第二版本信息是所述服务端上安装的所述至少一个GPU硬件的驱动程序中的应用程序接口的版本信息。
10.一种GPU节点,包括:
服务端,所述服务端包括如权利要求1到8中任一所述的装置;
至少一个客户端,每个客户端包括如权利要求9所述的装置;以及
至少一个GPU硬件。
11.一种用于运行应用程序的方法,所述方法应用于GPU节点中的服务端,所述GPU节点中部署有至少一个GPU硬件,所述方法包括:
从客户端接收应用程序接口指令运行请求,所述应用程序接口指令运行请求包括应用程序运行时所需动态链接库中规定的应用程序接口的第一版本信息,所述第一版本信息是响应于所述客户端检测到所述应用程序被启动运行而获取的;
基于应用程序接口适配策略来根据所述应用程序接口的第一版本信息和第二版本信息进行应用程序接口适配处理,所述第二版本信息是所述服务端上安装的所述至少一个GPU硬件的驱动程序中的应用程序接口的版本信息;
使用经过适配处理后的应用程序接口来访问所述至少一个GPU硬件运行应用程序接口指令;以及
将所述应用程序接口指令的运行结果发送给所述客户端。
12.如权利要求11所述的方法,其中,所述应用程序接口适配策略是基于所述GPU硬件的应用程序接口兼容列表创建的。
13.如权利要求11所述的方法,其中,所述客户端和所述服务端位于同一设备内,以及所述客户端和所述服务端之间的通信采用进程间通信机制来实现。
14.如权利要求11所述的方法,其中,所述客户端和所述服务端位于不同设备内,以及所述客户端和所述服务端之间的通信采用网络协议实现。
15.一种用于运行应用程序的方法,所述方法应用于GPU节点中的客户端,所述GPU节点中部署有GPU硬件,所述方法包括:
响应于检测到应用程序被启动运行,获取所述应用程序运行时所需动态链接库中规定的应用程序接口的第一版本信息;
向所述GPU节点中的服务端发送应用程序接口指令运行请求,所述应用程序接口指令运行请求包括所述第一版本信息,以在所述服务端进行应用程序接口适配处理和应用程序运行处理;以及
从所述服务端接收应用程序接口指令的运行结果,
其中,所述应用程序接口适配处理是基于应用程序接口适配规则来根据所述应用程序接口的第一版本信息和第二版本信息进行的,以及所述应用程序运行处理是使用经过适配处理后的应用程序接口来访问所述至少一个GPU硬件运行所述应用程序接口指令,所述第二版本信息是所述服务端上安装的所述至少一个GPU硬件的驱动程序中的应用程序接口的版本信息。
16.一种计算设备,包括:
一个或多个处理器,以及
与所述一个或多个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求11到14中任一项所述的方法。
17.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如权利要求11到14中任一项所述的方法。
18.一种计算设备,包括:
一个或多个处理器,以及
与所述一个或多个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求15所述的方法。
19.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如权利要求15所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910971306.4A CN110750282B (zh) | 2019-10-14 | 2019-10-14 | 用于运行应用程序的方法、装置及gpu节点 |
TW109114799A TWI753421B (zh) | 2019-10-14 | 2020-05-04 | 用於執行應用程式的方法、裝置及gpu節點及其計算設備與機器可讀儲存媒體 |
PCT/CN2020/107937 WO2021073214A1 (zh) | 2019-10-14 | 2020-08-07 | 用于运行应用程序的方法、装置及gpu节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910971306.4A CN110750282B (zh) | 2019-10-14 | 2019-10-14 | 用于运行应用程序的方法、装置及gpu节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110750282A true CN110750282A (zh) | 2020-02-04 |
CN110750282B CN110750282B (zh) | 2021-04-02 |
Family
ID=69278208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910971306.4A Active CN110750282B (zh) | 2019-10-14 | 2019-10-14 | 用于运行应用程序的方法、装置及gpu节点 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN110750282B (zh) |
TW (1) | TWI753421B (zh) |
WO (1) | WO2021073214A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459506A (zh) * | 2020-03-02 | 2020-07-28 | 平安科技(深圳)有限公司 | 深度学习平台集群的部署方法、装置、介质及电子设备 |
CN112087332A (zh) * | 2020-09-03 | 2020-12-15 | 哈尔滨工业大学 | 一种云边协同下的虚拟网络性能优化*** |
WO2021073214A1 (zh) * | 2019-10-14 | 2021-04-22 | 支付宝(杭州)信息技术有限公司 | 用于运行应用程序的方法、装置及gpu节点 |
CN113342356A (zh) * | 2021-05-18 | 2021-09-03 | 浪潮软件股份有限公司 | 一种客户端框架运行及管理配置方法 |
CN115543535A (zh) * | 2022-09-30 | 2022-12-30 | 摩尔线程智能科技(北京)有限责任公司 | 安卓容器***、安卓容器构建方法及装置、电子设备 |
CN116339737A (zh) * | 2023-05-26 | 2023-06-27 | 阿里巴巴(中国)有限公司 | Xr应用编辑方法、设备及存储介质 |
CN117033030A (zh) * | 2023-08-25 | 2023-11-10 | 玻尔科技成都有限公司 | 基于大规模语言模型的应用程序接口调度***及方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360184B (zh) * | 2021-06-04 | 2024-06-18 | 曙光信息产业(北京)有限公司 | 多生态间的软件迁移方法、装置、计算机设备及存储介质 |
CN114466026B (zh) * | 2022-01-05 | 2024-05-14 | 杭州网易云音乐科技有限公司 | 应用程序接口的更新方法、装置、存储介质和计算设备 |
CN115052003B (zh) * | 2022-04-29 | 2024-03-22 | 钉钉(中国)信息技术有限公司 | 数据同步方法、相关装置和介质 |
CN115994004B (zh) * | 2023-03-22 | 2023-08-29 | 紫光同芯微电子有限公司 | 一种应用程序接口调用方法及装置 |
CN116501446B (zh) * | 2023-06-09 | 2024-06-07 | 摩尔线程智能科技(北京)有限责任公司 | Kubernetes集群部署方法及***、电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599009A (zh) * | 2009-04-30 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种异构多处理器上并行执行任务的方法 |
US8756694B2 (en) * | 2007-03-30 | 2014-06-17 | Microsoft Corporation | Prevention of exploitation of update rollback |
US20150212815A1 (en) * | 2014-01-24 | 2015-07-30 | Nvidia Corporation | Methods and systems for maintenance and control of applications for performance tuning |
CN104965712A (zh) * | 2015-07-17 | 2015-10-07 | 北京奇虎科技有限公司 | 应用程序加固保护方法、装置及移动终端 |
CN107544783A (zh) * | 2016-06-27 | 2018-01-05 | 腾讯科技(深圳)有限公司 | 一种数据更新方法、装置及*** |
CN107861742A (zh) * | 2017-12-05 | 2018-03-30 | 杭州传信网络科技有限公司 | 一种程序的运行方法和终端设备 |
US20180350028A1 (en) * | 2017-06-02 | 2018-12-06 | Apple Inc. | Compound Shader Object and Use Thereof |
CN109783119A (zh) * | 2018-12-07 | 2019-05-21 | 上海七印信息科技有限公司 | 一种数据多版本兼容升级管理***及其管理方法 |
CN110187908A (zh) * | 2019-05-30 | 2019-08-30 | 苏州浪潮智能科技有限公司 | 一种gpu驱动程序自动更新的方法及*** |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8365153B2 (en) * | 2007-10-26 | 2013-01-29 | Qualcomm Incorporated | Server-based code compilation |
CN101419558A (zh) * | 2008-11-13 | 2009-04-29 | 湖南大学 | Cuda图形子***虚拟化方法 |
CN102521012B (zh) * | 2011-11-24 | 2014-08-27 | 华中科技大学 | 基于虚拟机的gpu集群管理*** |
KR102644276B1 (ko) * | 2016-10-10 | 2024-03-06 | 삼성전자주식회사 | 그래픽 처리 장치 및 방법 |
US10255652B2 (en) * | 2017-01-18 | 2019-04-09 | Amazon Technologies, Inc. | Dynamic and application-specific virtualized graphics processing |
US10691950B2 (en) * | 2017-03-10 | 2020-06-23 | Turing Video, Inc. | Activity recognition method and system |
US10169841B1 (en) * | 2017-03-27 | 2019-01-01 | Amazon Technologies, Inc. | Dynamic interface synchronization for virtualized graphics processing |
US10074206B1 (en) * | 2017-05-23 | 2018-09-11 | Amazon Technologies, Inc. | Network-optimized graphics library for virtualized graphics processing |
CN109086077A (zh) * | 2017-06-13 | 2018-12-25 | 中兴通讯股份有限公司 | 一种应用程序的运行方法和装置 |
CN108776595B (zh) * | 2018-06-11 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种gpu服务器的显卡的识别方法、装置、设备及介质 |
CN110750282B (zh) * | 2019-10-14 | 2021-04-02 | 支付宝(杭州)信息技术有限公司 | 用于运行应用程序的方法、装置及gpu节点 |
-
2019
- 2019-10-14 CN CN201910971306.4A patent/CN110750282B/zh active Active
-
2020
- 2020-05-04 TW TW109114799A patent/TWI753421B/zh active
- 2020-08-07 WO PCT/CN2020/107937 patent/WO2021073214A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8756694B2 (en) * | 2007-03-30 | 2014-06-17 | Microsoft Corporation | Prevention of exploitation of update rollback |
CN101599009A (zh) * | 2009-04-30 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种异构多处理器上并行执行任务的方法 |
US20150212815A1 (en) * | 2014-01-24 | 2015-07-30 | Nvidia Corporation | Methods and systems for maintenance and control of applications for performance tuning |
CN104965712A (zh) * | 2015-07-17 | 2015-10-07 | 北京奇虎科技有限公司 | 应用程序加固保护方法、装置及移动终端 |
CN107544783A (zh) * | 2016-06-27 | 2018-01-05 | 腾讯科技(深圳)有限公司 | 一种数据更新方法、装置及*** |
US20180350028A1 (en) * | 2017-06-02 | 2018-12-06 | Apple Inc. | Compound Shader Object and Use Thereof |
CN107861742A (zh) * | 2017-12-05 | 2018-03-30 | 杭州传信网络科技有限公司 | 一种程序的运行方法和终端设备 |
CN109783119A (zh) * | 2018-12-07 | 2019-05-21 | 上海七印信息科技有限公司 | 一种数据多版本兼容升级管理***及其管理方法 |
CN110187908A (zh) * | 2019-05-30 | 2019-08-30 | 苏州浪潮智能科技有限公司 | 一种gpu驱动程序自动更新的方法及*** |
Non-Patent Citations (1)
Title |
---|
博客园: "GPU通用计算API的变迁和趋势", 《HTTPS://WWW.CNBLOGS.COM/GAMAY/P/7126234.HTML》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021073214A1 (zh) * | 2019-10-14 | 2021-04-22 | 支付宝(杭州)信息技术有限公司 | 用于运行应用程序的方法、装置及gpu节点 |
CN111459506A (zh) * | 2020-03-02 | 2020-07-28 | 平安科技(深圳)有限公司 | 深度学习平台集群的部署方法、装置、介质及电子设备 |
CN111459506B (zh) * | 2020-03-02 | 2023-10-13 | 平安科技(深圳)有限公司 | 深度学习平台集群的部署方法、装置、介质及电子设备 |
CN112087332A (zh) * | 2020-09-03 | 2020-12-15 | 哈尔滨工业大学 | 一种云边协同下的虚拟网络性能优化*** |
CN112087332B (zh) * | 2020-09-03 | 2022-06-21 | 哈尔滨工业大学 | 一种云边协同下的虚拟网络性能优化*** |
CN113342356A (zh) * | 2021-05-18 | 2021-09-03 | 浪潮软件股份有限公司 | 一种客户端框架运行及管理配置方法 |
CN115543535A (zh) * | 2022-09-30 | 2022-12-30 | 摩尔线程智能科技(北京)有限责任公司 | 安卓容器***、安卓容器构建方法及装置、电子设备 |
CN115543535B (zh) * | 2022-09-30 | 2024-04-09 | 摩尔线程智能科技(北京)有限责任公司 | 安卓容器***、安卓容器构建方法及装置、电子设备 |
CN116339737A (zh) * | 2023-05-26 | 2023-06-27 | 阿里巴巴(中国)有限公司 | Xr应用编辑方法、设备及存储介质 |
CN116339737B (zh) * | 2023-05-26 | 2023-10-20 | 阿里巴巴(中国)有限公司 | Xr应用编辑方法、设备及存储介质 |
CN117033030A (zh) * | 2023-08-25 | 2023-11-10 | 玻尔科技成都有限公司 | 基于大规模语言模型的应用程序接口调度***及方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202115564A (zh) | 2021-04-16 |
CN110750282B (zh) | 2021-04-02 |
TWI753421B (zh) | 2022-01-21 |
WO2021073214A1 (zh) | 2021-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110750282B (zh) | 用于运行应用程序的方法、装置及gpu节点 | |
US10225335B2 (en) | Apparatus, systems and methods for container based service deployment | |
JP6754858B2 (ja) | クラウドコンピューティング環境で使用するためのワークフローオーケストレーションのためのシステムおよび方法 | |
US11294699B2 (en) | Dynamically scaled hyperconverged system establishing minimum supported interoperable communication protocol between clusters in a cluster group | |
US11146620B2 (en) | Systems and methods for instantiating services on top of services | |
CN108737468B (zh) | 云平台服务集群、构建方法及装置 | |
WO2019233273A1 (zh) | 管理容器服务的方法和装置 | |
US8301746B2 (en) | Method and system for abstracting non-functional requirements based deployment of virtual machines | |
CN111324571B (zh) | 一种容器集群管理方法、装置及*** | |
US20170052807A1 (en) | Methods, apparatuses, and computer program products for deploying and managing software containers | |
EP3313023A1 (en) | Life cycle management method and apparatus | |
CN111212116A (zh) | 一种基于容器云的高性能计算集群创建方法和*** | |
US20210389970A1 (en) | Vnf lifecycle management method and apparatus | |
US11593143B2 (en) | System and method for distributed orchestration management in network function virtualization | |
US10728169B1 (en) | Instance upgrade migration | |
US11182218B2 (en) | Method and apparatus for orchestrating cross-FaaS provider functions declaratively | |
Goudarzi et al. | Resource management in edge and fog computing using FogBus2 framework | |
Sandru et al. | Building an open-source platform-as-a-service with intelligent management of multiple cloud resources | |
KR101544487B1 (ko) | 복수의 사용자 계정들을 갖는 클라이언트에 대한 가상 데스크톱 서비스 시스템 | |
US10884788B2 (en) | On-demand code execution with limited memory footprint | |
CN117519972A (zh) | Gpu资源管理方法及装置 | |
WO2015117278A1 (zh) | 时钟中断信号的获取方法和nfv功能实体 | |
CN117729251A (zh) | 边缘计算设备、嵌入式设备、控制***及其构建方法 | |
US20230138867A1 (en) | Methods for application deployment across multiple computing domains and devices thereof | |
US20100169271A1 (en) | File sharing method, computer system, and job scheduler |
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 |