CN109933430B - 分配图形处理器的方法和装置 - Google Patents

分配图形处理器的方法和装置 Download PDF

Info

Publication number
CN109933430B
CN109933430B CN201910176102.1A CN201910176102A CN109933430B CN 109933430 B CN109933430 B CN 109933430B CN 201910176102 A CN201910176102 A CN 201910176102A CN 109933430 B CN109933430 B CN 109933430B
Authority
CN
China
Prior art keywords
graphics processor
graphics
processors
idle
task
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
CN201910176102.1A
Other languages
English (en)
Other versions
CN109933430A (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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910176102.1A priority Critical patent/CN109933430B/zh
Publication of CN109933430A publication Critical patent/CN109933430A/zh
Application granted granted Critical
Publication of CN109933430B publication Critical patent/CN109933430B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本发明实施例提出一种分配图形处理器的方法和装置,其中方法包括:确定多个空闲图形处理器及获取每两个空闲图形处理器间的链路带宽;确定至少两个待选择图形处理器组,其中每个待选择图形处理器组中包含的空闲图形处理器的数量等于运行任务所需的图形处理器的数量;根据每两个空闲图形处理器间的链路带宽,计算至少两个待选择图形处理器组各自的链路带宽和;根据链路带宽和,将至少两个待选择图形处理器组中的一个待选择图形处理器组分配给任务。本发明实施例能够根据链路带宽和为任务分配图形处理器组,用于运行任务;因此无需了解各图形处理器间的详细链路连接关系,从而减少了为任务分配图形处理器的时间。

Description

分配图形处理器的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种分配图形处理器的方法和装置。
背景技术
人工智能计算等应用领域中越来越依赖并行结构,各行各业中的多GPU(GraphicsProcessing Unit,图形处理器)和多CPU(Central Processing Unit,中央处理器)系统愈发普及。然而,在多GPU系统层面,AI(Artificial Intelligence,人工智能)计算性能瓶颈在于通信带宽,因此需要高效的链路感知技术为任务分配通信最优的GPU。在背景技术中,GPU的分配策略为按照各GPU的使用状态,将空闲的各GPU顺序分配给任务。因此,为了实现该分配策略则需要完全了解各GPU的链路连接关系,从而才能够确定如何分配各GPU处理任务。然而,当GPU数量较多且链路连接关系复杂时,完全了解各GPU的链路连接关系则较为困难,因此增加了为任务分配GPU的时间。
在背景技术中公开的上述信息仅用于加强对本发明的背景的理解,因此其可能包含没有形成为本领域普通技术人员所知晓的现有技术的信息。
发明内容
本发明实施例提供一种分配图形处理器的方法和装置,以解决现有技术中的一个或多个技术问题。
第一方面,本发明实施例提供了一种分配图形处理器的方法,包括:
确定多个空闲图形处理器及获取每两个空闲图形处理器间的链路带宽;
确定至少两个待选择图形处理器组,其中每个所述待选择图形处理器组中包含的所述空闲图形处理器的数量等于运行任务所需的图形处理器的数量;
根据所述每两个空闲图形处理器间的链路带宽,计算所述至少两个待选择图形处理器组各自的链路带宽和;
根据所述链路带宽和,将所述至少两个待选择图形处理器组中的一个待选择图形处理器组分配给所述任务。
在一个实施方式中,确定多个空闲图形处理器,包括:
检测各个图形处理器的当前工作状态,其中,当前工作状态的可能取值包括正在运行任务和未在运行任务;
将所述当前工作状态为未在运行任务的图形处理器确定为所述空闲图形处理器。
在一个实施方式中,获取两个空闲图形处理器间的链路带宽,包括:
所述两个空闲图形处理器中的第一图形处理器向第二图形处理器发送第一数据;获取所述第一数据发送完成所用的第一时长;基于所述第一时长及所述第一数据的数据量,确定所述第一图形处理器向第二图形处理器的链路带宽;和/或,
所述第二图形处理器向第一图形处理器发送第二数据;获取所述第二数据发送完成所用的第二时长;基于所述第二时长及所述第二数据的数据量,确定所述第二图形处理器向第一图形处理器的链路带宽。
在一个实施方式中,确定至少两个待选择图形处理器组,包括:
基于所述运行任务所需的图形处理器的数量,将各所述空闲图形处理器按所有可能的组合方式进行组合,将每种组合确定为一个所述待选择图形处理器组。
在一个实施方式中,计算待选择图形处理器组的链路带宽和,包括:
获取所述待选择图形处理器组中任意两个图形处理器间的链路带宽;
将获取的链路带宽相加,得到所述待选择图形处理器组的链路带宽和。
在一个实施方式中,根据所述链路带宽和,将所述至少两个待选择图形处理器组中的一个待选择图形处理器组分配给所述任务,包括:
基于每个所述待选择图形处理器组的链路带宽和,选择其中链路带宽和最高的待选择图形处理器组;
将所述链路带宽和最高的待选择图形处理器组中的各空闲图形处理器分配给所述任务。
第二方面,本发明实施例提供了一种分配图形处理器的装置,包括:
带宽获取模块,用于确定多个空闲图形处理器及获取每两个空闲图形处理器间的链路带宽;
确定模块,用于确定至少两个待选择图形处理器组,其中每个所述待选择图形处理器组中包含的所述空闲图形处理器的数量等于运行任务所需的图形处理器的数量;
计算模块,用于根据所述每两个空闲图形处理器间的链路带宽,计算所述至少两个待选择图形处理器组各自的的链路带宽和;
分配模块,用于根据所述链路带宽和,将所述至少两个待选择图形处理器组中的一个待选择图形处理器组分配给所述任务。
在一个实施方式中,所述带宽获取模块包括:
检测子模块,用于检测各个图形处理器的当前工作状态,其中,当前工作状态的可能取值包括正在运行任务和未在运行任务;
确定子模块,用于将所述当前工作状态为未在运行任务的图形处理器确定为所述空闲图形处理器。
在一个实施方式中,所述带宽获取模块包括:
链路带宽子模块,用于控制所述两个空闲图形处理器中的第一图形处理器向第二图形处理器发送第一数据;获取所述第一数据发送完成所用第一时长;基于所述第一时长及所述第一数据的数据量,确定所述第一图形处理器向第二图形处理器的链路带宽;和/或,
用于控制所述第二图形处理器向第一图形处理器发送第二数据;获取所述第二数据发送完成所用第二时长;基于所述第二时长及所述第二数据的数据量,确定所述第二图形处理器向第一图形处理器的链路带宽。
在一个实施方式中,所述确定模块,用于基于所述运行任务所需的图形处理器的数量,将各所述空闲图形处理器按所有可能的组合方式进行组合,将每种组合确定为一个所述待选择图形处理器组。
在一个实施方式中,所述计算模块包括:
获取子模块,用于获取所述待选择图形处理器组中任意两个图形处理器间的链路带宽;
计算子模块,用于将获取的所述链路带宽相加,得到所述待选择图形处理器组的链路带宽和。
在一个实施方式中,所述分配模块包括:
选择子模块,用于基于每个所述待选择图形处理器组的带宽和,选择其中带宽和最高的待选择图形处理器组;
分配子模块,用于将所述带宽和最高的待选择图形处理器组中的各空闲图形处理器分配给所述任务。
第三方面,本发明实施例提供了一种分配图形处理器的终端,包括:
所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,分配图形处理器的终端的结构中包括处理器和存储器,所述存储器用于存储支持分配图形处理器的终端执行上述第一方面中分配图形处理器的方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。分配图形处理器的终端还可以包括通信接口,用于分配图形处理器的终端与其他设备或通信网络通信。
第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储分配图形处理器的终端所用的计算机软件指令,其包括用于执行上述第一方面中分配图形处理器的方法为分配图形处理器的终端所涉及的程序。
上述技术方案中的一个技术方案具有如下优点或有益效果:本发明实施例能够根据链路带宽和为任务分配图形处理器组运行任务,因此无需了解各图形处理器间的详细链路连接关系,从而减少了为任务分配图形处理器的时间。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。
图1为本发明实施方式提供的分配图形处理器的方法的流程图。
图2为本发明另一实施方式提供的分配图形处理器的方法的流程图。
图3为本发明另一实施方式提供的分配图形处理器的方法的流程图。
图4为本发明另一实施方式提供的分配图形处理器的方法的流程图。
图5为本发明实施方式提供的分配图形处理器的方法的步骤S300的流程图。
图6为本发明另一实施方式提供的分配图形处理器的方法的流程图。
图7为本发明实施方式提供的CPU-GPU的异构计算系统的结构框图。
图8为本发明实施方式提供的分配图形处理器的装置结构示意图。
图9为本发明实施方式提供的分配图形处理器的装置的带宽获取模块结构示意图。
图10为本发明实施方式提供的分配图形处理器的装置的计算模块结构示意图。
图11为本发明实施方式提供的分配图形处理器的装置的分配模块结构示意图。
图12为本发明实施方式提供的分配图形处理器的终端结构示意图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
本发明实施例提供了一种分配图形处理器的方法,如图1所示,包括以下步骤:
S100:确定多个空闲图形处理器,以及获取每两个空闲图形处理器间的链路带宽。
需要说明的是,空闲图形处理器可以包括在接收到任务请求的一段预设时间内,处于未运行任务状态的图形处理器。每两个空闲图形处理器间的链路带宽可以包括两个图形处理器之间的单向链路带宽,和/或两个图形处理器之间的双向链路带宽。获取每两个空闲图形处理器间的链路带宽可以理解为,获取每一个空闲图形处理器与其余的所有空闲图形处理器之间的单向和/或双向带宽。
在一个示例中,若两个空闲图形处理器中的第一空闲图形处理器是通过第一链路向第二空闲图形处理器发送数据,第二空闲图形处理器是通过第二链路向第一空闲图形处理器发送数据的,则需要分别获取第一链路和第二链路的链路带宽。即获取第一空闲图形处理器和第二空闲图形处理器之间的双向链路带宽。
在一个示例中,若空闲图形处理器的个数为四个,具体包括空闲图形处理器A、B、C、D,则获取每两个空闲图形处理器间的链路带宽包括:获取空闲图形处理器A到B的链路带宽、空闲图形处理器B到A的链路带宽、空闲图形处理器A到C的链路带宽、空闲图形处理器C到A的链路带宽、空闲图形处理器A到D的链路带宽、空闲图形处理器D到A的链路带宽、空闲图形处理器B到C的链路带宽、空闲图形处理器C到B的链路带宽、空闲图形处理器B到D的链路带宽、空闲图形处理器D到B的链路带宽、空闲图形处理器C到D间的链路带宽以及空闲图形处理器D到C的链路带宽。
S200:确定至少两个待选择图形处理器组。每个待选择图形处理器组由至少两空闲图形处理器组成。其中,每个待选择图形处理器组中包含的空闲图形处理器的数量等于运行任务所需的图形处理器的数量。优选的,基于运行任务所需的图形处理器的数量,确定出各空闲图形处理器所有可能组合方式的待选择图形处理器组。
S300:根据每两个空闲图形处理器间的链路带宽,计算至少两个待选择图形处理器组各自的链路带宽和。
S400:根据链路带宽和,将至少两个待选择图形处理器组中的一个待选择图形处理器组分配给任务。其中,基于链路带宽分配待选择图形处理器组给任务的规则可根据用户需要进行定义。
在一个实施方式中,如图2所示,在步骤S100之前,还包括步骤:
S500:根据任务请求确定运行任务所需的图形处理器的数量。任务请求中可以包括请求分配的图形处理器数量信息,还可以包括请求分配的图形处理器的其他分配需求信息。
在一个示例中,任务可以包括机器学习训练任务。机器学习训练任务可以部署在多个图形处理器中进行同时运算,从而加速机器学习的速度。例如,机器学习训练任务将不同的训练样本发送至各个图形处理器中进行训练。在训练过程中,各图形处理器之间还存在数据交换,各图形处理器需要等待这些数据就绪之后才能进行下一步运算操作。本实施例所提供的分配图形处理器的方法可以为机器学习训练任务分配最优的图形处理器,从而提升机器学习训练任务的学习效率。
在一个实施方式中,如图3所示,步骤S100中的确定多个空闲图形处理器,包括步骤:
S110:检测各个图形处理器的当前工作状态,其中,当前工作状态的可能取值包括正在运行任务和未在运行任务。
S120:将当前工作状态为未在运行任务的图形处理器确定为空闲图形处理器。
在一个实施方式中,如图3所示,步骤S100中的获取每两个空闲图形处理器间的链路带宽,包括步骤:
S130:两个空闲图形处理器中的第一图形处理器向第二图形处理器发送第一数据。获取第一数据发送完成所用第一时长。基于第一时长及第一数据的数据量,确定第一图形处理器向第二图形处理器的链路带宽。和/或,
第二图形处理器向第一图形处理器发送第二数据。获取第二数据发送完成所用第二时长。基于第二时长及第二数据的数据量,确定第二图形处理器向第一图形处理器的链路带宽。
在一个具体的实施方式中,确定第一图形处理器向第二图形处理器的链路带宽,包括:
记录系统的当前时间a;
调用编程函数cudaMemcpyPeerAsync,从第一图形处理器拷贝一段数据到第二图形处理器中,拷贝的数据量为1MB(MByte,兆);
记录系统的数据拷贝结束时间b;
计算数据发送完成所用的时长为b-a;
计算第一图形处理器向第二图形处理器的链路带宽为1MB/(b-a)。
在一个实施例中,任意两个空闲图形处理器间的链路带宽可以采用矩阵形式或列表等方式记录,以便后续使用时便于查找。例如,表1所示为采用矩阵形式进行的每两个空闲图形处理器间的链路带宽(单位,GB/s)的记录。
表1
GPU名称 GPU0 GPU1 GPU2
GPU0 509.85(GB/s) 36.82(GB/s) 17.58(GB/s)
GPU1 36.82(GB/s) 508.90(GB/s) 17.00(GB/s)
GPU2 17.38(GB/s) 16.98(GB/s) 508.78(GB/s)
在一个实施方式中,如图4所示,步骤S200中包括:
S210:基于运行任务所需的图形处理器的数量,将各空闲图形处理器按所有可能的组合方式进行组合,将每种组合确定为一个待选择图形处理器组。
在一个示例中,当空闲图形处理器为A、B、C、D四个,运行任务所需的图形处理器的数量为三个,则所有可能组合方式的待选择图形处理器组包括:由空闲图形处理器A、B、C组成的待选择图形处理器组,由空闲图形处理器A、B、D组成的待选择图形处理器组,由空闲图形处理器B、C、D组成的待选择图形处理器组,以及由空闲图形处理器A、C、D组成的待选择图形处理器组。
在一个实施方式中,如图5所示,步骤S300中计算待选择图形处理器组的链路带宽和,包括步骤:
S310:获取待选择图形处理器组中任意两个图形处理器间的链路带宽。其中,待选择图形处理器组中任意两个图形处理器间的链路带宽数据可以在步骤S100中所获取的每两个空闲图形处理器间的链路带宽中得到。
S320:将获取的链路带宽相加,得到待选择图形处理器组的链路带宽和。
需要说明的是,获取待选择图形处理器组中任意两个图形处理器间的链路带宽可以理解为,将待选择图形处理器组中的各空闲图形处理器以两个为一组,进行所有可能组合方式的组合,然后确定每一种可能组合方式中的两个空闲图形处理器的链路带宽。
在一个示例中,若待选择图形处理器组包括空闲图形处理器A、B、C,则需要基于步骤S100中所获取的每两个空闲图形处理器间的链路带宽,得到空闲处理器A到B的链路带宽、空闲处理器B到A的链路带宽、空闲处理器A到C的链路带宽、空闲处理器C到A的链路带宽、空闲处理器B到C的链路带宽以及空闲处理器C到B的链路带宽。然后将以上获取到的各链路带宽相加,得到待选择图形处理器组的链路带宽和。
在一个实施方式中,如图6所示,步骤S400包括步骤:
S410:基于每个待选择图形处理器组的带宽和,选择其中带宽和最高的待选择图形处理器组。
S420:将带宽和最高的待选择图形处理器组中的各空闲图形处理器分配给任务。
通过上述方式,能够实现图形处理器的最优拓扑自动发现及分配,节省了针对不同异构资源的静态拓扑重复代码开发的工作。
需要说明的是,选择链路带宽和最高的待选择图形处理器是一种优选的方案,根据任务需求的不同,也可以选择带宽和非最高的待选择图形处理器组进行分配。
在一个实施方式中,各空闲图形处理器之间进行数据通信的链路方式可以不同。例如,任意两个空闲图形处理器之间可以通过NVlink(NVIDIA link,英伟达总线及其通信协议)、PCIe(peripheral component interconnect express,高速串行计算机扩展总线标准)或QPI(Quick Path Interconnect,快速通道互联)等链路方式进行数据通信。
在一个示例中,如图7所示,提供了一种CPU-GPU的异构计算系统,包括中央处理器1、2,图形处理器1、2、3、4、5、6、7、8,网络适配器1、2、3、4。其中,各图形处理器分别通过NVlink、PCIe以及QPI进行互联。图8中的粗实线表示NVlink的链路方式,细实线表示PCIe的链路方式,空心线表示QPI的链路方式。
在一个实施方式中,以图8提供的CPU-GPU的异构计算系统为应用场景,确定任务请求中所需的GPU的数量为3个,本发明实施例的分配图形处理器的方法包括以下过程:
根据各GPU的当前工作状态,确定空闲图形处理器为图形处理器1、2、3、4。获取图形处理器1、2,图形处理器1、3,图形处理器1、4,图形处理器2、3,图形处理器2、4以及图形处理器3、4的双向链路带宽。
基于任务请求中所需的GPU的数量为3个,确定处待选择图形处理器组包括:空闲图形处理器1、2、3组成的待选择图形处理器组,由空闲图形处理器1、2、4组成的待选择图形处理器组,由空闲图形处理器2、3、4组成的待选择图形处理器组,以及由空闲图形处理器1、3、4组成的四个待选择图形处理器组。
确定每个待选择图形处理器组的带宽和。以空闲图形处理器1、2、3组成的待选择图形处理器组为例,基于每两个空闲图形处理器之间的双向链路带宽,得到空闲处理器1到2的链路带宽、空闲处理器2到1的链路带宽、空闲处理器1到3的链路带宽、空闲处理器3到1的链路带宽、空闲处理器2到3的链路带宽以及空闲处理器3到2的链路带宽。然后将以上获取到的各链路带宽相加,得到以空闲图形处理器1、2、3组成的待选择图形处理器组的链路带宽和。其余三个待选择图形处理器组的带宽和的计算方式同上,在此不再赘述。
根据计算出的四个待选择图形处理器组的带宽和,若空闲图形处理器1、2、3组成的待选择图形处理器组的带宽和最高,则将其分配给任务请求对应的任务。即利用空闲图形处理器1、2、3运行任务。
本发明实施例提供了一种分配图形处理器的装置,如图8所示,包括:
带宽获取模块10,用于确定多个空闲图形处理器及获取每两个空闲图形处理器间的链路带宽。
确定模块20,用于确定至少两个待选择图形处理器组,其中每个待选择图形处理器组中包含的空闲图形处理器的数量等于运行任务所需的图形处理器的数量。
计算模块30,用于根据每两个空闲图形处理器间的链路带宽,计算至少两个待选择图形处理器组各自的链路带宽和。
分配模块40,用于根据链路带宽和,将至少两个待选择图形处理器组中的一个待选择图形处理器组分配给任务。
在一个实施方式中,如图9所示,带宽获取模块10包括:
检测子模块11,用于检测各个图形处理器的当前工作状态,其中,当前工作状态的可能取值包括正在运行任务和未在运行任务。
确定子模块12,用于将当前工作状态为未在运行任务的图形处理器确定为空闲图形处理器。
在一个实施方式中,如图9所示,带宽获取模块10还包括:
链路带宽子模块13,用于两个空闲图形处理器中的第一图形处理器向第二图形处理器发送第一数据。获取第一数据发送完成所用第一时长。基于第一时长及第一数据的数据量,确定第一图形处理器向第二图形处理器的链路带宽。和/或,
用于第二图形处理器向第一图形处理器发送第二数据。获取第二数据发送完成所用第二时长。基于第二时长及第二数据的数据量,确定第二图形处理器向第一图形处理器的链路带宽。
在一个实施方式中,确定模块20用于基于运行任务所需的图形处理器的数量,将各空闲图形处理器按所有可能的组合方式进行组合,将每种组合确定为一个待选择图形处理器组。
在一个实施方式中,如图10所示,计算模块30包括:
获取子模块31,用于获取待选择图形处理器组中任意两个图形处理器间的链路带宽。
计算子模块32,用于将获取的链路带宽相加,得到待选择图形处理器组的链路带宽和。
在一个实施方式中,如图11所示,分配模块40包括:
选择子模块41,用于基于每个待选择图形处理器组的带宽和,选择其中带宽和最高的待选择图形处理器组。
分配子模块42,用于将带宽和最高的待选择图形处理器组中的各空闲图形处理器分配给任务。
本发明实施例提供了一种分配图形处理器的终端,如图12所示,包括:
存储器910和处理器920,存储器910内存储有可在处理器920上运行的计算机程序。处理器920执行计算机程序时实现上述实施例中的分配图形处理器的方法。存储器910和处理器920的数量可以为一个或多个。
通信接口930,用于存储器910和处理器920与外部进行通信。
存储器910可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器910、处理器920、以及通信接口930独立实现,则存储器910、处理器920以及通信接口930可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,PeripheralComponent Interconnect)总线或扩展工业标准体系结构(EISA,Extended IndustryStandard Component)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器910、处理器920以及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。
本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现如实施例一包括的任一所述的分配图形处理器的方法。
本发明的上述实施例具有以下优点:1、能够根据链路带宽和为任务分配待选择图形处理器组,以采用分配的待选择图形处理器组运行任务。因此无需了解各图形处理器间的详细链路连接关系,从而减少了为任务分配图形处理器的时间。2、为任务分配链路带宽和最高的待选择图形处理器组,即分配通信效率最高的各空闲图形处理器给任务,从而加快处理任务的效率,即加快AI计算的速度。3、在多元异构计算芯片和链路拓扑架构下可以做到图形处理器的最优拓扑自动发现及分配,节省了针对不同异构资源的静态拓扑重复代码开发的工作。4、在无任何机器先验知识的情况下,上述方法可以适用于所有不同类型的多元异构计算芯片和链路拓扑架构。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种分配图形处理器的方法,其特征在于,包括:
确定多个空闲图形处理器及获取每两个空闲图形处理器间的链路带宽;
确定至少两个待选择图形处理器组,其中每个所述待选择图形处理器组中包含的所述空闲图形处理器的数量等于运行任务所需的图形处理器的数量;
根据所述至少两个待选择图形处理器组中的所述每两个空闲图形处理器间的链路带宽,计算所述至少两个待选择图形处理器组各自的链路带宽和;所述每两个空闲图形处理器间的链路带宽包括两个图形处理器之间的单向和/或双向链路带宽;
根据所述至少两个待选择图形处理器组各自的链路带宽和,将所述至少两个待选择图形处理器组中的一个分配给所述任务;
其中,获取两个空闲图形处理器间的链路带宽,包括:
所述两个空闲图形处理器中的第一图形处理器向第二图形处理器发送第一数据;获取所述第一数据发送完成所用的第一时长;基于所述第一时长及所述第一数据的数据量,确定所述第一图形处理器向第二图形处理器的链路带宽;和/或,
所述第二图形处理器向第一图形处理器发送第二数据;获取所述第二数据发送完成所用的第二时长;基于所述第二时长及所述第二数据的数据量,确定所述第二图形处理器向第一图形处理器的链路带宽。
2.如权利要求1所述的方法,其特征在于,确定多个空闲图形处理器,包括:
检测各个图形处理器的当前工作状态,其中,当前工作状态的可能取值包括正在运行任务和未在运行任务;
将所述当前工作状态为未在运行任务的图形处理器确定为所述空闲图形处理器。
3.如权利要求1所述的方法,其特征在于,确定至少两个待选择图形处理器组,包括:
基于所述运行任务所需的图形处理器的数量,将各所述空闲图形处理器按所有可能的组合方式进行组合,将每种组合确定为一个所述待选择图形处理器组。
4.如权利要求1所述的方法,其特征在于,计算待选择图形处理器组的链路带宽和,包括:
获取所述待选择图形处理器组中任意两个图形处理器间的链路带宽;
将获取的链路带宽相加,得到所述待选择图形处理器组的链路带宽和。
5.如权利要求1至4任一项权利要求所述的方法,其特征在于,根据所述至少两个待选择图形处理器组各自的链路带宽和,将所述至少两个待选择图形处理器组中的一个待选择图形处理器组分配给所述任务,包括:
基于每个所述待选择图形处理器组的链路带宽和,选择其中链路带宽和最高的待选择图形处理器组;
将所述链路带宽和最高的待选择图形处理器组中的各空闲图形处理器分配给所述任务。
6.一种分配图形处理器的装置,其特征在于,包括:
带宽获取模块,用于确定多个空闲图形处理器及获取每两个空闲图形处理器间的链路带宽;
确定模块,用于确定至少两个待选择图形处理器组,其中每个所述待选择图形处理器组中包含的所述空闲图形处理器的数量等于运行任务所需的图形处理器的数量;
计算模块,用于根据所述至少两个待选择图形处理器组中的所述每两个空闲图形处理器间的链路带宽,计算所述至少两个待选择图形处理器组各自的链路带宽和;所述每两个空闲图形处理器间的链路带宽包括两个图形处理器之间的单向和/或双向链路带宽;
分配模块,用于根据所述至少两个待选择图形处理器组各自的链路带宽和,将所述至少两个待选择图形处理器组中的一个待选择图形处理器组分配给所述任务;
其中,所述带宽获取模块包括:
链路带宽子模块,用于控制所述两个空闲图形处理器中的第一图形处理器向第二图形处理器发送第一数据;获取所述第一数据发送完成所用第一时长;基于所述第一时长及所述第一数据的数据量,确定所述第一图形处理器向第二图形处理器的链路带宽;和/或,
用于控制所述第二图形处理器向第一图形处理器发送第二数据;获取所述第二数据发送完成所用第二时长;基于所述第二时长及所述第二数据的数据量,确定所述第二图形处理器向第一图形处理器的链路带宽。
7.如权利要求6所述的装置,其特征在于,所述带宽获取模块包括:
检测子模块,用于检测各个图形处理器的当前工作状态,其中,当前工作状态的可能取值包括正在运行任务和未在运行任务;
确定子模块,用于将所述当前工作状态为未在运行任务的图形处理器确定为所述空闲图形处理器。
8.如权利要求6所述的装置,其特征在于,所述确定模块,用于基于所述运行任务所需的图形处理器的数量,将各所述空闲图形处理器按所有可能的组合方式进行组合,将每种组合确定为一个所述待选择图形处理器组。
9.如权利要求6所述的装置,其特征在于,所述计算模块包括:
获取子模块,用于获取所述待选择图形处理器组中任意两个图形处理器间的链路带宽;
计算子模块,用于将获取的所述链路带宽相加,得到所述待选择图形处理器组的链路带宽和。
10.如权利要求6至9任一所述的装置,其特征在于,所述分配模块包括:
选择子模块,用于基于每个所述待选择图形处理器组的带宽和,选择其中带宽和最高的待选择图形处理器组;
分配子模块,用于将所述带宽和最高的待选择图形处理器组中的各空闲图形处理器分配给所述任务。
11.一种分配图形处理器的终端,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5中任一项所述的方法。
CN201910176102.1A 2019-03-08 2019-03-08 分配图形处理器的方法和装置 Active CN109933430B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910176102.1A CN109933430B (zh) 2019-03-08 2019-03-08 分配图形处理器的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910176102.1A CN109933430B (zh) 2019-03-08 2019-03-08 分配图形处理器的方法和装置

Publications (2)

Publication Number Publication Date
CN109933430A CN109933430A (zh) 2019-06-25
CN109933430B true CN109933430B (zh) 2022-02-25

Family

ID=66986453

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910176102.1A Active CN109933430B (zh) 2019-03-08 2019-03-08 分配图形处理器的方法和装置

Country Status (1)

Country Link
CN (1) CN109933430B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110543362B (zh) * 2019-07-31 2022-10-21 北京奇艺世纪科技有限公司 一种图形处理器管理方法、装置及服务器
KR20210020570A (ko) 2019-08-16 2021-02-24 삼성전자주식회사 전자 장치 및 이의 제어 방법
CN114285766B (zh) * 2021-08-20 2023-06-13 腾讯科技(深圳)有限公司 一种网络带宽检测方法、装置、电子设备和存储介质
CN114356818A (zh) * 2022-03-17 2022-04-15 苏州浪潮智能科技有限公司 一种多通道数据传输方法、装置和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035751A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
CN108694688A (zh) * 2017-04-07 2018-10-23 英特尔公司 用于在图形处理架构中管理数据偏置的设备和方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8330762B2 (en) * 2007-12-19 2012-12-11 Advanced Micro Devices, Inc. Efficient video decoding migration for multiple graphics processor systems
US8982136B2 (en) * 2011-05-16 2015-03-17 Qualcomm Incorporated Rendering mode selection in graphics processing units
US8645585B2 (en) * 2011-06-10 2014-02-04 Nvidia Corporation System and method for dynamically configuring a serial data link in a display device
KR102053351B1 (ko) * 2013-08-12 2019-12-06 삼성전자주식회사 테셀레이션 데이터 생성 방법과 상기 방법을 수행할 수 있는 장치들
CN105117170A (zh) * 2015-08-24 2015-12-02 浪潮(北京)电子信息产业有限公司 一种计算机系统架构
CN108600115A (zh) * 2018-05-03 2018-09-28 北京中普达技术有限公司 网络带宽资源优化的方法及装置
CN109033001B (zh) * 2018-07-17 2021-08-27 北京百度网讯科技有限公司 用于分配gpu的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035751A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
CN108694688A (zh) * 2017-04-07 2018-10-23 英特尔公司 用于在图形处理架构中管理数据偏置的设备和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向众核GPU加速系统的网络编码并行化及优化;唐绍华;《计算机工程与应用》;20140711;第79-84页 *

Also Published As

Publication number Publication date
CN109933430A (zh) 2019-06-25

Similar Documents

Publication Publication Date Title
CN109933430B (zh) 分配图形处理器的方法和装置
US9965324B2 (en) Process grouping for improved cache and memory affinity
US5784698A (en) Dynamic memory allocation that enalbes efficient use of buffer pool memory segments
CN112068957B (zh) 资源分配方法、装置、计算机设备及存储介质
CN107391285B (zh) 内存共享方法和系统
CN111309644B (zh) 一种内存分配方法、装置和计算机可读存储介质
CN111314401B (zh) 资源配置方法、装置、系统、终端和计算机可读存储介质
CN109840149B (zh) 任务调度方法、装置、设备及存储介质
CN108615077B (zh) 一种应用于深度学习网络的缓存优化方法及装置
CN113703975A (zh) 模型分配方法、装置、电子设备及计算机可读存储介质
CN110489356B (zh) 信息处理方法、装置、电子设备及存储介质
CN105511959A (zh) 虚拟资源分配方法和装置
CN109783220B (zh) 内存分配方法、装置、计算机系统及存储介质
CN116302327A (zh) 资源调度方法及相关设备
US20210334144A1 (en) Resource allocation
CN114780230A (zh) 一种内存分配方法、部署方法及相关装置
CN111352710B (zh) 进程管理方法及装置、计算设备、存储介质
CN115878517A (zh) 存储器装置、存储器装置的操作方法和电子装置
CN114546618A (zh) 基于cnn矩阵分块的调度方法、装置、设备及存储介质
CN115563050A (zh) 众核计算芯片及数据访问方法
KR101989033B1 (ko) 플랫폼 관리 장치 및 방법
CN111597052B (zh) 芯片管控方法、装置、服务器及可读存储介质
CN116450055B (zh) 一种多处理卡间的存储区域分配方法和系统
CN116991595B (zh) 一种基于Bitmap的内存分配方法、装置、设备及介质
CN111767148B (zh) 一种基于多核dsp的嵌入式系统资源管理方法

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