指令执行方法、装置、设备、系统、程序产品及介质与流程

文档序号:32399351发布日期:2022-12-02 18:28阅读:73来源:国知局
指令执行方法、装置、设备、系统、程序产品及介质与流程

1.本说明书实施例涉及计算机技术领域,尤其涉及用于gpu资源池的指令执行方法、装置、设备、系统、程序产品及介质。


背景技术:

2.资源池化是通过分布式软件、虚拟化等技术,把某一类资源抽象成为一种可以按照管理要求、被整个数据中心各种用户和业务共享的资源,从而打破资源被用户和业务独占使用的模式,打破单台计算机设备的cpu(central processing unit,中央处理器)、gpu(graphics processing unit,图形处理器)、磁盘或网卡等物理资源数量的固定配比,并且能够动态根据用户和业务的需求来进行申请和释放。例如,gpu资源池等。
3.然而,采用gpu资源池时,相对于单台计算机设备中配置gpu的方式,计算机设备中cpu与gpu资源池中的gpu的连接链路变长,因此,如何提升gpu执行指令的效率,是亟待解决的技术问题。


技术实现要素:

4.为克服相关技术中存在的问题,本说明书实施例提供了用于gpu资源池的指令执行方法、装置、设备、分布式系统及存储介质。
5.根据本说明书实施例的第一方面,提供一种用于gpu资源池的指令执行方法,所述gpu资源池包括多个gpu以及与每个所述gpu对应的存储器;所述方法包括:
6.确定可使用的的目标gpu以及与所述目标gpu对应的目标存储器;
7.确定所述目标存储器中用于存储指令的目标存储空间;
8.获取需要由所述目标gpu执行的至少一条第一指令;
9.将所述至少一条第一指令发送至所述目标存储器,以使所述至少一条第一指令写入至所述目标存储空间后,由所述目标gpu从所述目标存储空间中读取所述第一指令并执行。
10.根据本说明书实施例的第二方面,提供一种用于gpu资源池的指令执行装置,所述gpu资源池包括多个gpu以及与每个所述gpu对应的存储器;所述装置包括:
11.第一确定模块,用于:确定可使用的目标gpu以及与所述目标gpu对应的目标存储器;
12.第二确定模块,用于:确定所述目标存储器中请用于存储指令的目标存储空间;
13.获取模块,用于:获取需要由所述目标gpu执行的至少一条第一指令;
14.发送模块,用于:将所述至少一条第一指令发送至所述目标存储器,以使所述至少一条第一指令写入至所述目标存储空间后,由所述目标gpu从所述目标存储空间中读取所述第一指令并执行。
15.根据本说明书实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序
时实现第一方面所述用于gpu资源池的指令执行方法实施例的步骤。
16.根据本说明书实施例的第四方面,提供一种分布式系统,所述分布式系统包括一个或多个计算机设备,所述计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现第一方面所述用于gpu资源池的指令执行方法实施例的步骤。
17.根据本说明书实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现第一方面所述用于gpu资源池的指令执行方法实施例的步骤。
18.根据本说明书实施例的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述用于gpu资源池的指令执行方法实施例的步骤。
19.本说明书的实施例提供的技术方案可以包括以下有益效果:
20.本说明书实施例中,可以确定目标gpu及对应的目标存储器,从而确定该目标存储器中用于存储指令的目标存储空间,由于gpu执行的指令未放置在计算机设备侧的存储器中,而是放置在gpu资源池侧的该目标gpu对应的目标存储器中,从而,目标gpu无需跨越较长的距离读取指令,本实施例降低了目标gpu读取指令的耗时,从而提升了目标gpu执行指令的效率。
21.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
22.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
23.图1a是本说明书根据一示例性实施例示出的一种gpu资源池的应用场景示意图。
24.图1b是本说明书根据一示例性实施例示出的一种执行指令的示意图。
25.图1c是本说明书根据一示例性实施例示出的另一种执行指令的示意图。
26.图2a是本说明书根据一示例性实施例示出的一种用于gpu资源池的指令执行方法的流程图。
27.图2b是本说明书根据一示例性实施例示出的另一种用于gpu资源池的指令执行示意图。
28.图3a是本说明书根据一示例性实施例示出的另一种用于gpu资源池的指令执行方法的流程图。
29.图3b1是本说明书根据一示例性实施例示出的一种分配存储空间的示意图。
30.图3b2是本说明书根据一示例性实施例示出的一种计算机设备与gpu的交互示意图。
31.图3c是本说明书根据一示例性实施例示出的另一种分配存储空间的示意图。
32.图4是本说明书根据一示例性实施例示出的一种计算机设备的框图。
33.图5是本说明书根据一示例性实施例示出的一种用于gpu资源池的指令执行装置的框图。
具体实施方式
34.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
35.在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
36.应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
37.随着人工智能的迅速普及和云服务提供的便利,导致对云服务中的gpu的需求不断增长。通常,单台计算机设备中,gpu配置在计算机设备中,与其他硬件物理上连接在一起。例如,gpu插入在计算机设备的主板上,与其他器件通过主板的总线连接。但是这种固定的连接关系对资源的利用、设备的升级和维护都非常的不友好。除此之外,当用户在使用服务的时候如果对性能和规模有要求,这些要求会受到单个服务器下的gpu资源的限制。
38.为了解决上述场景中的问题,可以采用gpu资源池的方案解决。如图1a所示,是本说明书根据一示例性实施例示出的一种gpu资源池的应用场景示意图,图1a中包括设备集群,该设备集群中包括多个计算机设备,图1a中以计算机设备0至计算机设备n为例。图1a中还示出了gpu资源池和用于管理gpu资源池的管理设备,该gpu资源池包括多个gpu,图1a中以gpu0至gpun为例。在一些例子中,设备集群、gpu资源池和gpu资源池通过网络连接。
39.gpu池化的目的是多个gpu从逻辑上集中到一起形成一个gpu资源池,根据用户的需要,管理设备可以把gpu分配给不同的计算机设备。当用户不再使用时,则该gpu资源可以释放回资源池中,方便下一次分配给其它有需要的计算机设备,这样大大增加了云服务的方便性和弹性。除了云服务场景,ai(artificial intelligence,人工智能)等场景也有使用gpu资源池的需求。gpu资源池方案中,因为传输距离变长的原因,计算机设备中cpu访问gpu资源池中gpu的链路变长,计算机设备与gpu之间的信息交互的延时增加,导致gpu执行指令的性能有所损失。
40.如图1b所示,是本说明书根据一示例性实施例示出的一种执行指令的示意图,其中,计算机设备包括有cpu(图中未示出),管理设备分配一gpu给该计算机设备,该gpu与cpu连接,该gpu可以访问服务器的内存。图1b示出了计算机设备与gpu之间交互的过程,该交互过程基于异构计算软件框架,cpu可以在内存中创建一缓冲区,用于存储需要由gpu执行的指令。
41.在一些例子中,计算机设备的主板上可以插入有第一网卡(network interface card),gpu资源池包括一个或多个第二网卡,每个gpu连接至其中一个第二网卡,cpu与gpu直接通过第一网卡和第二网卡通信。其中,第一网卡/第二网卡可以是普通网卡,也可以是
智能网卡(smart nic)或pci-express switch(peripheral component interconnect express,pcie,外设部件互联扩展总线标准)等。cpu与网卡,以及gpu与网卡之间的通信道道包括高速串行总线,例如包括但不限于:外设部件互连标准(peripheral component interconnect)总线、pcie总线等。网卡具有通信接口,在计算机设备侧,网卡的通信接口与计算机设备的cpu连接;在gpu侧,网卡的通信接口与gpu连接。从而,计算机设备的cpu与gpu资源池的gpu之间,通过各自的网卡进行信息转发。
42.示例性的,智能网卡可以作为cpu的加速器,可以帮助与其互联的处理器实现至少部分功能,即处理器可以将部分或全部功能卸载(offload)到加速器上,从而获得性能上的加速。加速器可以具有自己的计算资源,包括处理器和存储器,例如可以包括内存、硬盘等本地存储资源,也可以包括云盘、nas等云存储资源。
43.在另一些例子中,计算机设备的主板上还可以包括与cpu连接的其他器件,如dpu(data processing unit,数据处理器)等。示例性的,dpu是可编程多核处理器,即一块soc(system on chip)芯片,也具有存储器等本地存储资源。dpu除了smart nic的功能外,还可以将存储、安全和虚拟化等工作负载也从cpu卸载到自己身上。同理,gpu资源池也包括dpu,dpu与gpu连接;从而,计算机设备的cpu与gpu资源池的gpu之间,通过各自的dpu进行信息转发。
44.由上述实施例可见,在gpu资源池场景,cpu无法通过主板的总线直接与gpu通信,而需要通过转发节点(node)通信,例如前述的如pci-e switch、dpu或smart nic等,cpu与gpu两者中任何一方发出来的信息,会通过自己的node的网络来转发给另一方。如图1b所示的实施例中,服务器的cpu连接转发节点1,gpu连接转发节点2,转发节点1和转发节点2直接连接。在其他实施例中,转发节点1和转发节点2之间还可能连接交换机或路由器等设备,两者之间可以通过局域网或公网等通信。
45.在gpu资源池场景,cpu需要发送指令给gpu执行。一些方案是由cpu将指令存储在cpu内存中,由gpu访问cpu内存。从上述实施例可见,cpu与gpu之间的链路较长。如图1c所示,是本说明书根据一示例性实施例示出的一种指令执行方法的示意图,其中host为计算机设备的主机端,包括计算机设备侧的cpu和内存,其中示出了指令处理的7个步骤:
46.步骤1,应用程序产生的指令存入至主机的指令队列host queue;
47.步骤2,主机的指令队列host queue放入至内存中,即由gpu执行的指令队列;
48.步骤3,主机确定指令队列写入至内存后,通知gpu;
49.步骤4,gpu通过读指针从cpu内存中取指令;
50.步骤5,gpu取出指令后更新读指针;
51.步骤6,gpu执行取出的指令;
52.步骤7,gpu将表示执行结果的信号发送给host。
53.由上述实施例可见,gpu池化场景下,步骤4至5中,gpu与cpu的交互需要跨越较长的距离,从而导致gpu的执行性能降低。
54.基于此,本实施例中,可以确定目标gpu及对应的目标存储器,从而确定该目标存储器中用于存储指令的目标存储空间,由于gpu执行的指令未放置在计算机设备侧的存储器中,而是放置在gpu资源池侧的该目标gpu对应的目标存储器中,从而,目标gpu无需跨越较长的距离读取指令,本实施例降低了目标gpu读取指令的耗时,从而提升了目标gpu执行
指令的效率。
55.如图2a所示,是本说明书根据一示例性实施例示出的一种用于gpu资源池的指令执行方法的流程图,所述方法可应用于设备集群中的任一计算机设备,所述gpu资源池包括多个gpu以及与每个所述gpu对应的存储器;所述方法包括如下步骤:
56.在步骤202中,确定可使用的目标gpu以及与所述目标gpu对应的目标存储器。
57.在步骤204中,确定所述目标存储器中用于存储指令的目标存储空间。
58.在步骤206中,获取需要由所述目标gpu执行的至少一条第一指令。
59.在步骤208中,将所述至少一条第一指令发送至所述目标存储器,以使所述至少一条第一指令写入至所述目标存储空间后,由所述目标gpu从所述目标存储空间中读取所述第一指令并执行。
60.在本实施例中,并不对计算机设备的设备形态进行限制,可以是任何具有一定计算、存储和通信能力的实体设备,例如可以是台式电脑、笔记本电脑、智能手机或iot设备等终端设备,也可以是服务器等服务端的设备。
61.示例性的,计算机设备的软件层次关系依次可以是:操作系统、gpu驱动(driver)、gpu计算平台工具箱(toolkits)和基于gpu计算平台开发的应用程序。基于此,作为一个实施例,本实施例方案实现时,可以是gpu计算平台工具箱中新的功能模块,例如可以是gpu计算平台的工具箱中新的功能模块,从而用于将需要由gpu执行的指令队列发送至本实施例方案中指定的与gpu对应的存储器。
62.本实施例中的实施过程可以有多种方式,例如,可以是计算机设备启动后执行。在另一些例子中,计算机设备运行过程中,不一定所有任务都需要由gpu执行,例如,基于gpu计算平台开发的第一应用程序产生的一些指令指定由gpu执行,基于此,可以待该第一应用程序启动后再执行本实施例方案。示例性的,所述第一应用程序包括ai应用程序等。
63.示例性的,对于步骤202,计算机设备可使用的gpu可以是一个或多个,本实施例将其称之为目标gpu。示例性的,gpu资源池场景中,计算机设备根据需要可以向管理设备发起分配gpu的请求,管理设备基于该请求向计算机设备分配gpu。示例性的,管理设备可以向计算机设备发送所分配的gpu信息,例如gpu标识、访问地址等,从而计算机设备可以根据gpu信息控制该gpu。在一些例子中,gpu进行资源池化之后,不同物理节点的gpu卡可以被抽象成为一种虚拟的gpu资源池。分配给计算机设备的gpu可以是虚拟gpu,当然,物理gpu也是可选的,本实施例对此不进行限定。分配gpu的过程可以参考相关技术,本实施例对此不进行限定。
64.在一些例子中,所述gpu资源池中每个gpu都配置有内存储器(即显存),每个所述gpu对应的存储器可以是每个所述gpu的内存储器。
65.在其他例子中,如前所述,gpu资源池还包括与每个所述gpu连接的转发节点,转发节点包括存储器,每个所述gpu对应的存储器包括:每个所述gpu连接的转发节点的存储器。实际应用中,可以是一个gpu连接一个转发节点,也可以一个gpu连接多个转发节点,此种情况下,该gpu对应的存储器可以是所连接的多个转发节点中各个转发节点的存储器,也可以是其中一个转发节点的存储器。或者,还可以是多个gpu连接一个转发节点,即可以是多个gpu对应同一个存储器。
66.本实施例中将至少所述第一指令发送至所述目标存储器,实际应用中,可以是将
多条第一指令批量发送,批量发送的第一指令的数量可以根据需要灵活配置,本实施例对此不进行限定。本实施例中至少一条第一指令由计算机设备发送至目标存储器,并写入至目标存储空间,从而,目标gpu可以访问目标存储器并从所述目标存储空间中读取所述第一指令并执行。
67.示例性的,计算机设备中应用程序产生的指令通常较多,cpu可以将多条指令采用指令队列进行管理,即创建一个指令队列,该指令队列包括多条第一指令;cpu将一个指令队列发送至目标gpu对应的目标存储器的目标存储空间进行存储,即一个指令队列对应一个目标存储空间。实际应用中,一个应用程序可以有多个指令队列,其数量根据实际需要可以灵活配置,也即是,本实施例中针对一个应用程序创建的目标存储空间可以是一个或多个。示例性的,一个应用程序对应的指令队列/目标存储空间的个数,可以基于gpu的硬件能力而确定,例如,一些gpu可以有多个独立的计算引擎(例如4个等),可以支持多线程并行处理。针对第一应用程序,根据需要创建的目标存储空间的个数可以小于或等于gpu的计算引擎,从而,gpu的各个计算引擎可以同时执行各个目标存储空间中的指令。
68.gpu从一个目标存储空间中读取指令时,如前述图1c实施例中提及的,具体可以是通过读指针,以指定顺序读取目标存储空间中存储的指令;每读取出一条指令后,读指针根据指定顺序更新其所指向的地址。如图2b所示,是本说明书根据一示例性实施例示出的另一种指令处理的示意图,本实施例以指令放置在gpu内存为例,与图1c相比,由于存放指令队列的目标存储器距离gpu较近,本实施例在步骤4至6执行时其延迟较低,因此提升了gpu执行指令的效率。
69.如下表格所示,示出了图1c方案与本实施例方案的实验结果比对:
70.过程图1c方案的耗时本实施例方案的耗时步骤11.73141.6377步骤2、342.145141.8794步骤4、5、614.82668.64步骤711.818712.1046
71.请见步骤2和步骤3的耗时比对,图1c方案中步骤2,cpu将指令队列放置在较近的内存,而本实施例方案步骤2,cpu将指令队列发送至较远的gpu显存中,但结合步骤3可知,两者耗时基本无差异。
72.请见步骤4至6,本实施例方案的耗时降低了41.73%,其中步骤6是指令的执行过程,两个方案在步骤6的耗时是一样的;因此,降低的过程来自于步骤4和步骤5,由于gpu可以在较近的内存中取指令和更新读指针,因此本实施例方案提升了指令的执行效率。
73.在一些例子中,确定所述目标存储器中用于存储指令的目标存储空间,可以是计算机设备根据目标存储器中存储空间的使用情况确定的。在其他例子中,也可以是计算机设备向目标存储器请求分配其所需的目标存储请求,例如,计算机设备向目标存储器发送请求,目标存储器根据请求分配目标存储空间。基于此,可以更快速地确定目标存储空间。
74.在一些例子中,确定所述目标存储器中用于存储指令的目标存储空间,可以包括:调用所述目标存储器的存储空间分配接口,以确定所述目标存储器中用于存储指令的目标存储空间。示例性的,若所述目标存储器为与目标gpu连接的转发节点的存储器,调用所述转发节点提供的存储器分配接口,以确定所述目标存储器中用于存储指令的目标存储空
间;若所述目标存储器为所述目标gpu的内存储器,调用所述目标gpu的计算平台提供的内存储器分配接口,以确定所述目标存储器中用于存储指令的目标存储空间。基于此,通过上述接口的调用,可以快速地确定目标存储空间。
75.在一些例子中,在所述确定所述目标存储器中用于存储指令的目标存储空间的步骤之后,所述方法还包括:获取所述目标存储空间的地址;将所述地址发送给所述目标gpu,以使所述目标gpu根据所述地址访问所述目标存储空间。本实施例中,计算机设备在确定目标存储器中专用于存储指令的目标存储空间后,可以将指向目标存储空间的地址发送给目标gpu,以使目标gpu可以访问该目标存储空间后读取第一指令并执行。基于此,可以使得目标gpu可以快速地访问目标存储空间读取指令。
76.由前述实施例可知,目标存储器的实现方式可以是gpu的内存储器,也可以是转发节点2的存储器,接下来分别通过两个实施例进行说明。
77.如图3a所示,是本说明书根据一示例性实施例示出的另一种用于gpu资源池的指令执行方法的示意图,本实施例以第一应用程序为例,该第一应用程序的指令由gpu执行,其初始化过程,以及与gpu的具体交互过程可以如下步骤:
78.301、应用初始化及运行;
79.302、判断是否创建新队列;若是,执行步骤303;若否,执行步骤305。作为例子,在应用初始化的情况下判断需要创建新队列;在应用运行过程中,指令持续产生,实际应用中,一个应用创建的队列可以是一个或多个,每个队列可以具有固定的存储空间,若一个队列所放入的指令已满,应用可以判断需要创建新的队列。
80.303、创建指令队列;
81.304、将队列信息发送给gpu;
82.305、将指令放入指令队列;
83.306、通知gpu执行指令;
84.307、gpu从指令队列中取指令执行;
85.308、gpu判断指令队列是否为空;若否,再次执行步骤307;若是,执行步骤309;
86.309、结束执行,发送完成信号至应用。
87.本实施例方案中,可以在创建用于存放指令的指令队列的时候,通过将存放指令队列的空间移到gpu的内存储器或转发节点2的存储器来实现。
88.示例性的,本实施例方案可以检测到第一应用程序在启动后,将第一应用程序运行后产生的需要给gpu执行的指令发送给gpu对应的存储器以写入至目标存储空间。
89.向gpu内存请求分配存储空间的过程可以如图3b1所示;在本实施例中,可以调用gpu计算平台提供的内存储器分配接口,例如显存分配接口来请求分配目标存储空间。实际应用中,第一应用程序中还有一些指令是由cpu执行的,其它的空间分配流程无需改变,例如调用cpu内存分配接口的流程。如此,计算机设备中第一应用程序的需要由gpu执行的指令队列,可以移动到gpu的显存中,如图3b2所示,gpu内的缓冲区即表示该gpu的显存内的目标存储空间。基于此,计算机设备可以将多条第一指令批量发送到gpu显存内的该目标存储空间里面,gpu可以直接从自己的内存空间里取指令,不需要通过网络访问计算机设备侧的内存里取指令。
90.本实施例中,gpu需要有一定大小的额外存储空间分配给计算机设备使用,计算机
设备能直接访问gpu分配出来的存储空间。示例性的,可以调用所述gpu的计算平台提供的内存储器分配接口,以确定所述目标存储器中用于存储指令的目标存储空间。例如,已有的用于gpu的并行计算框架,在gpu中提供了gpu um(unified memory,统一内存)技术,以允许应用程序使用接口分配显存。本实施例中,可以调用gpu的计算平台提供的显存分配接口,以请求gpu的显存分配存储空间给计算机设备以存储第一指令。实际应用中,可以根据gpu实际使用的计算平台而灵活实现,本实施例对此不进行限定。可选的,在第一应用程序结束运行时,可以释放与所述第一应用程序对应的各个所述目标存储空间,例如向所述目标存储器请求释放所述目标存储空间。
91.在一些例子中,应用程序创建的指令队列即前述的目标存储空间,该指令队列可以是一环形队列(command queue),cpu和gpu将各自维护一些数据结构来保证环形队列的正确工作。例如,该队列的基地址,队列的大小,写指针和读指针。其中写指针指向cpu要写入指令的地址,读指针指向gpu将要读取命令的地址。当cpu的一次写入指令结束或gpu的一次读取指令结束之后,写指针和读指针都会往前移动。当指针到达队列的末尾时,将会移到队列的头部继续执行。
92.本实施例中,cpu可以将多条第一指令批量发送至gpu的显存,从而gpu在取指令的时候可以直接在本地中读取,使得gpu执行指令时的性能较高。本实施例方案实现时对gpu硬件不需要做任何修改,无需gpu厂商的支持,实现难度较低。
93.在其他例子中,如图3c所示,本实施例将存放指令的存储空间移动到离gpu最近的转发节点2上。本实施例中,转发节点2的内存需要能够同时被计算机设备的cpu和gpu访问到,且需要有一定的存储空间可供计算机设备使用。其中,如前所述,转发节点2可以是前述的如dpu等设备,可以调用所述转发节点提供的存储器分配接口,以确定所述目标存储器中用于存储指令的目标存储空间。
94.作为一个示例,转发节点2提供有分配存储空间的分配接口和释放存储空间的释放接口。
95.在确定目标存储器中用于存储指令的目标存储空间时,可以调用该分配接口,调用的参数可以包括存储空间的大小,使得转发节点2可以根据该参数,在目标存储器中确定一满足该大小的目标存储空间。该分配接口的返回值可以是表示一个指向所分配的目标存储空间的地址指针。
96.在确定不需要使用该目标存储空间时,可以调用该释放接口,调用的参数可以包括上述的地址指针,使得转发节点2可以根据该参数,在目标存储器中释放该地址指针指向的目标存储空间。该释放接口的返回值可以包括表示释放成功或释放失败的标识。
97.示例性的,计算机设备可以在第一应用程序初始化时,调用转发节点2提供的分配接口来请求目标存储空间,同样在释放的时候调用空间释放接口来释放。
98.示例性的,由于调用了转发节点提供的分配空间的接口,将存放指令的空间移动到离gpu最近的转发节点中。gpu读取指令的时候可以从转发节点中获取。同样,gpu不需要做任何修改。
99.实际应用中,可以只采用gpu的内存储器中的存储空间,也可以只采用与gpu连接的转发节点的存储器;或者,也可以两种实施例都采用。例如,计算机设备可以确定目标gpu的内存储器的目标存储空间,也确定目标gpu连接的转发节点的存储器的目标存储空间;根
据需要,一些第一指令放置在目标gpu的内存储器的目标存储空间,另一些第一指令放置在转发节点的存储器的目标存储空间中;实际应用中根据需要可以灵活配置,本实施例对此不进行限定。
100.与前述用于gpu资源池的指令执行方法的实施例相对应,本说明书还提供了用于gpu资源池的指令执行装置及其所应用的计算机设备的实施例。所述计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,所述电子设备的硬件包括但不限于微处理器、专用集成电路(application specific integrated circuit,asic)、可编程门阵列(field-programmable gate array,fpga)、数字处理器(digital signal processor,dsp)、嵌入式设备等。所述计算机设备可以是任何一种可与用户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(personal digital assistant,pda)、游戏机、交互式网络电视(internet protocol television,iptv)、智能式穿戴式设备等。所述计算机设备还可以包括网络设备和/或用户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloud computing)的由大量主机或网络服务器构成的云。所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(virtual private network,vpn)等等。
101.如图4所示,是本说明书根据一示例性实施例示出的一种计算机设备的示意图,该设备可以包括:处理器401、存储器402、输入/输出接口403、通信接口404和总线405。其中处理器401、存储器402、输入/输出接口403和通信接口404通过总线405实现彼此之间在设备内部的通信连接。
102.处理器401可以采用通用的cpu(central processing unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。处理器401还可以包括gpu等。
103.存储器402可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器402可以存储操作系统和其他应用程序的数据,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器402中,并由处理器401来调用执行。
104.输入/输出接口403用于连接输入/输出模块,以实现信息输入及输出。输入/输出模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入模块可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出模块可以包括显示器、扬声器、振动器、指示灯等。如果计算机设备是服务器等,可以不包括上述部分输入/输出模块。
105.通信接口404用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
106.总线105包括一通路,在设备的各个组件(例如处理器101、存储器102、输入/输出接口103和通信接口104)之间传输信息。
107.需要说明的是,尽管上述设备仅示出了处理器101、存储器102、输入/输出接口
103、通信接口104以及总线105,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
108.其中,存储器即计算机可读存储介质,计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体等,其可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类别的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算机设备访问的信息。
109.作为一个例子,本说明书中用于gpu资源池的指令执行装置的实施例可以应用在如图4所示的计算机设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
110.如图5所示,图5是本说明书根据一示例性实施例示出的一种用于gpu资源池的指令执行装置的框图,所述gpu资源池包括多个gpu以及与每个所述gpu对应的存储器;所述装置包括:
111.第一确定模块51,用于:确定可使用的目标gpu以及与所述目标gpu对应的目标存储器;
112.第二确定模块52,用于:确定所述目标存储器中用于存储指令的目标存储空间;
113.获取模块53,用于:获取需要由所述目标gpu执行的至少一条第一指令;
114.发送模块54,用于:将所述至少一条第一指令发送至所述目标存储器,以使所述至少一条第一指令写入至所述目标存储空间后,由所述目标gpu从所述目标存储空间中读取所述第一指令并执行。
115.在一些例子中,所述gpu资源池还包括与每个所述gpu连接的转发节点,所述转发节点包括存储器;
116.所述gpu对应的存储器包括:所述gpu连接的转发节点的存储器;或,所述gpu的内存储器。
117.在一些例子中,所述第二确定模块,还用于:
118.若所述目标存储器为与目标gpu连接的转发节点的存储器,调用所述转发节点提供的存储器分配接口,以确定所述目标存储器中用于存储指令的目标存储空间;
119.若所述目标存储器为所述目标gpu的内存储器,调用所述目标gpu的计算平台提供的内存储器分配接口,以确定所述目标存储器中用于存储指令的目标存储空间。
120.在一些例子中,所述发送模块还用于:在所述确定所述目标存储器中用于存储指令的目标存储空间,获取所述目标存储空间的地址;将所述地址发送给所述目标gpu,以使所述目标gpu根据所述地址访问所述目标存储空间。
121.在一些例子中,所述装置还包括通知模块,用于:
122.响应于所述至少第一指令写入至所述目标存储空间,通知所述gpu从所述目标存
储空间中读取所述第一指令。
123.在一些例子中,所述请求模块,还用于:
124.响应于第一应用程序启动,确定所述目标存储器中一个或多个用于存储指令的目标存储空间,各个所述目标存储空间与所述第一应用程序相对应。
125.在一些例子中,所述装置还包括释放模块,用于:
126.响应于所述第一应用程序结束运行,释放与所述第一应用程序相对应的各个所述目标存储空间。
127.本说明书实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现前述用于gpu资源池的指令执行方法实施例的步骤。
128.本说明书实施例还提供一种分布式系统,所述分布式系统包括一个或多个计算机设备,所述计算机设备,包括第一存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序;所述分布式系统还包括gpu资源池和管理所述gpu资源池的管理设备,所述计算机设备与所述管理设备连接,所述gpu资源池包括多个gpu以及与每个所述gpu对应的存储器;其中,所述处理器执行所述计算机程序时实现前述用于gpu资源池的指令执行方法实施例的步骤。
129.本说明书实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现前述所述用于gpu资源池的指令执行方法实施例的步骤。
130.本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述用于gpu资源池的指令执行方法实施例的步骤。
131.上述用于gpu资源池的指令执行装置中各个模块的功能和作用的实现过程,具体详见上述用于gpu资源池的指令执行方法中对应步骤的实现过程,在此不再赘述。
132.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
133.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
134.上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该申请的保护范围内。
135.其中,“具体示例”、或“一些示例”等的描述意指结合所述实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,
对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
136.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
137.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
138.本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
139.应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
140.以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1