GPU并行计算资源配置方法及装置与流程

文档序号:16401005发布日期:2018-12-25 20:07阅读:336来源:国知局
GPU并行计算资源配置方法及装置与流程

本发明涉及计算机技术领域,具体而言,涉及一种gpu并行计算资源配置方法及装置。

背景技术

随着计算机技术的日新月异,传统cpu设计工艺已经逐渐到触碰物理极限,计算能力的增长速度已经远远落后于“摩尔定律”。计算能力的提高逐步转向于依赖多核、众核等新型并行计算技术上来。近年来,图形处理器gpu作为一种先进的众核异构并行计算设备,开始被广泛应用到加速气候模拟、蛋白质折叠、深度学习等大规模计算密集型任务。以支持nvidiacuda架构的gpu为例,在对计算任务进行处理时,计算任务在被组织为一个或多个包含海量线程的kernel操作系统内核。一个kernel内部的线程又被分组为多个线程块(block),每个block内部,以32各线程为一组形成线程束(warp)。在cuda架构下,计算资源分配的最底层是线程束。

发明人经研究发现,对于海量计算任务,kernelstream并行在任务级层面仅仅为粗粒度并行,不同kernel之间并行度有限,实际加速效果较差。特别地,针对流程串行度较高的计算任务(如稀疏矩阵因子分解、稀疏三角方程求解等基于有向图形式的稀疏算法),上述kernel内部的并行度很低,而kernel间并行度仍有限,在实际计算中存在大量空置的计算资源,使得实际并行效率很低。因此,提供一种在对计算任务进行处理时能够有效提高计算效率的方法是亟待解决的技术问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种gpu并行计算资源配置方法及装置,以有效缓解上述技术问题。

为实现上述目的,本发明实施例采用如下技术方案:

一种gpu并行计算资源配置方法,所述方法包括:

获取一计算流程确定的计算任务;

对所述计算任务采用双层并行计算模型在初始参数下进行处理得到一分层有向无环图模型;

根据所述分层有向无环图模型对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一同构图,其中,所述同构图中包括各所述预设参数分别对应的计算元;

根据所述多个预设参数的数量以及各所述预设参数对应的计算元的数量得到所需的线程块的数量,并根据所述预设参数及各所述预设参数对应的计算元对所述线程块进行标号;

将各所述预设参数对应的计算元根据各所述线程块的标号进行分配,以使各线程块对分配到的计算元进行计算。

可选的,在上述gpu并行计算资源配置方法中,所述双层并行计算模型包括kpn图模型和ldag计算模型,对所述计算任务采用双层并行计算模型在初始参数下进行处理得到一分层有向无环图模型的步骤包括:

对所述计算任务采用kpn图模型进行处理得到计算流程有向图,其中,所述计算流程有向图包括多个子流程;

对所述计算流程有向图中的各子流程进行分层,得到每个分层对应的子流程;

对所述计算流程有向图中的各分层对应的子流程采用ldag计算模型进行处理得到各所述分层对应的子流程的计算元,并根据所述计算流程有向图和各所述分层对应的子流程的计算元得到分层有向无环图模型,以及根据所述初始参数得到各计算元对应的基本指令。

可选的,在上述gpu并行计算资源配置方法中,根据所述分层有向无环图模型对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一同构图的步骤包括:

基于所述无环图模型对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一体化同构计算模型,其中,所述一体化同构计算模型包括各所述预设参数对应的分层有向无环图模型,且各所述预设参数对应的分层有向无环图模型与所述初始参数对应的分层有向无环图模型相同;

将所述预设参数、分层有向无环图模型中各计算元对应的层数以及每层对应的计算元数代入所述一体化同构计算模型中得到一同构图以及该构图中各计算元的向量表示。

可选的,在上述gpu并行计算资源配置方法中,gpu中预存有单个线程块中的最大线程数,根据所述多个预设参数的数量以及各所述预设参数对应的计算元的数量得到所需的线程块的数量的步骤包括:

根据所述多个预设参数的数量、最大线程数以及多个计算元的数量按照公式进行计算得到需要的线程块数量,其中,为计算元的数量,nag为gpu中处理相关操作所需的核心阵列组数,ceil(x)是表示不小于x的最大整数,s为所述多个预设参数的数量,且当所述最大线程数小于所述计算元的数量时,则按照公式进行计算,以将作为所需的线程块,其中,li为gi的层数,nij为gi第j层的计算元总数,tpb为单个线程块的最大线程数量。

可选的,在上述gpu并行计算资源配置方法中,根据所述预设参数及各所述预设参数对应的计算元对所述线程块进行标号的步骤包括:

对于图gi中第h个场景、第j层的第k个计算元的向量表示,其对应的线程块的编号bid和块内线程号tid可用公式以及公式计算得到,其中,为不大于的最大整数,mod(m,n)为整数m与n相除的余数。

可选的,在上述gpu并行计算资源配置方法中,将各所述预设参数对应的计算元根据各所述线程块的标号进行分配的步骤包括:

按照各所述计算元的向量表示和各所述线程块的编号以及块内线程号将各所述计算元分配至各所述线程块。

一种gpu并行计算资源配置装置,所述装置包括:

获取模块,用于获取一计算流程确定的计算任务;

第一处理模块,用于对所述计算任务采用双层并行计算模型在初始参数下进行处理得到一分层有向无环图模型;

第二处理模块,用于根据所述分层有向无环图模型对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一同构图,其中,所述同构图中包括各所述预设参数分别对应的计算元;

计算模块,用于根据所述多个预设参数的数量以及各所述预设参数对应的计算元的数量得到所需的线程块的数量,并根据所述预设参数及各所述预设参数对应的计算元对所述线程块进行标号;

分配模块,用于将各所述预设参数对应的计算元根据各所述线程块的标号进行分配,以使各线程块对分配到的计算元进行计算。

可选的,在上述gpu并行计算资源配置装置中,所述双层并行计算模型包括kpn图模型和ldag计算模型,所述第一处理模块包括:

第一处理子模块,用于对所述计算任务采用kpn图模型进行处理得到计算流程有向图,其中,所述计算流程有向图包括多个子流程;

分层子模块,用于对所述计算流程有向图中的各子流程进行分层,得到每个分层对应的子流程;

第二处理子模块,用于对所述计算流程有向图中的各分层对应的子流程采用ldag计算模型进行处理得到各所述分层对应的子流程的计算元,并根据所述计算流程有向图和各所述分层对应的子流程的计算元得到分层有向无环图模型,以及根据所述初始参数得到各计算元对应的基本指令。

可选的,在上述gpu并行计算资源配置装置中,所述第二处理模块包括:

第三处理子模块,用于基于所述无环图模型对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一体化同构计算模型,其中,所述一体化同构计算模型包括各所述预设参数对应的分层有向无环图模型,且各所述预设参数对应的分层有向无环图模型与所述初始参数对应的分层有向无环图模型相同;

第四处理子模块,用于将所述预设参数、分层有向无环图模型中各计算元对应的层数以及每层对应的计算元数代入所述一体化同构计算模型中得到一同构图以及该构图中各计算元的向量表示。

可选的,在上述gpu并行计算资源配置装置中,所述计算模块还用于根据所述多个预设参数的数量、最大线程数以及多个计算元的数量按照公式进行计算得到需要的线程块数量,其中,为计算元的数量,nag为gpu中处理相关操作所需的核心阵列组数,ceil(x)是表示不小于x的最大整数,s为所述多个预设参数的数量,且当所述最大线程数小于所述计算元的数量时,则按照公式进行计算,以将作为所需的线程块,其中,li为gi的层数,nij为gi第j层的计算元总数,tpb为单个线程块的最大线程数量。

本发明提供的一种gpu并行计算资源配置方法及装置,通过对计算流程确定的计算任务采用双层并行计算模型在初始参数下进行处理得到分层有向无环图模型,并基于该分层有向无环图模型对对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一同构图,根据所述多个预设参数的数量以及所述多个计算元的数量得到所需的线程块的数量,并根据所述预设参数及所述预设参数对应的计算元对所述线程块进行标号,并将所述同构图中的各计算元根据各线程块的标号进行分配,以使各线程块对分配到的计算元进行计算,进而极大地提高了并行计算的效率。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

图1为本发明实施例提供的一种终端设备的连接框图。

图2为本发明实施例提供的gpu并行计算资源配置方法的流程示意图。

图3为步骤s120的流程示意图。

图4为步骤s120的流程示意图。

图5为本发明实施例提供的gpu并行计算资源配置装置的连接框图。

图6为本发明实施例提供的第一处理模块的连接框图。

图7为本发明实施例提供的第二处理模块的连接框图。

图标:10-终端设备;12-存储器;14-处理器;100-gpu并行计算资源配置装置;110-获取模块;120-第一处理模块;122-第一处理子模块;124-分层子模块;126-第二处理子模块;130-第二处理模块;132-第三处理子模块;134-第四处理子模块;140-计算模块;150-分配模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

如图1所示,本发明实施例提供了一种终端设备10,包括处理器14和存储器12,所述存储器12与处理器14相互之间直接或间接地电性连接,以实现数据的传输或交互。存储器12中存储有以软件或固件(firmware)的形式存储于所述存储器12中的软件功能模块,所述处理器14通过运行存储在存储器12内的软件程序以及模块,如本发明实施例中的gpu并行计算资源配置装置100,从而执行各种功能应用以及数据处理,即实现本发明实施例中的gpu并行计算资源配置方法。

所述存储器12可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)等。其中,存储器12用于存储程序,所述处理器14在接收到执行指令后,执行所述程序。

所述处理器14可能是一种集成电路芯片,具有信号的处理能力。在本实施例中,上述的处理器14为gpu。

可以理解,图1所示的结构仅为示意,所述终端设备10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

请结合图2,本发明提供的一种可应用于上述终端设备10的gpu并行计算资源配置方法,所述gpu并行计算资源配置方法应用于上述电子设备时实现步骤s110-s150五个步骤。

步骤s110:获取一计算流程确定的计算任务。

其中,获取所述计算任务的方式可以是接收外部设备发送的计算任务,也可以是获取预存的计算任务,在此不作具体限定,根据实际需求进行设置即可。计算流程确定的计算任务可以是计算任务的计算步骤确定的计算任务。

步骤s120:对所述计算任务采用双层并行计算模型在初始参数下进行处理得到一分层有向无环图模型。

其中,所述无环图模型包括多个计算元,每个计算元分别对应一个计算流程。所述初始参数的具体数值在此不作具体限定,根据实际需求进行设置即可。所述计算任务的计算流程中的每个子流程分别对应于所述分层有向无环图模型中的一个节点。

请结合图3,在本实施例中,所述双层并行计算模型可以包括顶层的kpn图模型和底层的ldag计算模型。步骤s120可以采用以下方式执行:

步骤s122:对所述计算任务采用kpn图模型进行处理得到计算流程有向图,其中,所述计算流程有向图包括多个子流程。

步骤s124:对所述计算流程有向图中的各子流程进行分层,得到每个分层对应的子流程。

需要说明的是,在本实施例中,由于计算任务的计算流程中可能存在并行执行的步骤,通过对所述计算流程有向图中的各子步骤进行分层,以得到每个分层对应的子流程。

步骤s126:对所述计算流程有向图中的各分层对应的子流程采用ldag计算模型进行处理得到各所述分层对应的子流程的计算元,并根据所述计算流程有向图和各所述分层对应的子流程的计算元得到分层有向无环图模型,以及根据所述初始参数得到各计算元对应的基本指令。

需要说明的是,每个子流程对应的子步骤可以采用一个或多个线程块完成计算,因此针对每个子流程进一步借助分层有向无环图(layereddirectedacyclicgraph,ldag)组织细粒度并行计算线程体,即在指令级层面将每个计算流程进一步分解为基本计算元的组合,形成由计算元组成的分层有向无环图模型。

具体的,对于任意一算法a采用kpn图模型得到其计算流程ga由p个子流程图gi,(i=1,…,p)的kpn图表示。对ga中的p个流程进行分层,可得到子流程之间的并行关系,采用利用l(gi),(gi∈ga)表示第i个流程gi的层级,需要说明的是,层级相等的子流程可完全并行。之后采用ldag计算模型对每个子流程进行处理,以使每个子流程图(gi∈ga)均可由计算元构成的ldag图进行描述,如公式gi={lij},j=1,...,li,以及公式lij={oijk},k=1,...,nij,其中,lij为第i个流程gi、第j层计算元构成的集合,li为gi的层数,oijk为lij层中第k个计算元,该层的计算元总数为nij。

步骤s130:根据所述分层有向无环图模型对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一同构图,其中,所述同构图中包括各所述预设参数分别对应的计算元。

需要说明的是,由于参数不同的计算任务的计算流程相同,因此,对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到的同构图中可以包括与所述预设参数数量相同的分层有向无环图模型,且各预设参数对应的分层有向无环图模型相同。

请结合图4,在本实施例中,所述步骤s130包括以下步骤:

步骤s132:基于所述无环图模型对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一体化同构计算模型。

其中,所述一体化同构计算模型包括各所述预设参数对应的分层有向无环图模型,且各所述预设参数对应的分层有向无环图模型与所述初始参数对应的分层有向无环图模型相同。

步骤s134:将所述预设参数、分层有向无环图模型中各计算元对应的层数以及每层对应的计算元数代入所述一体化同构计算模型中得到一同构图以及该构图中各计算元的向量表示。

具体的,在本实施例中,对于一个计算任务,其双层计算模型可用ga={gi}(i=1,...,p)表示。通过改变双层计算模型中的参数,即采用多个预设参数,构建“多场景”计算任务,由表示。由于场景变化仅由预设参数变化而来,故每个场景的双层计算模型结构完全相同,即对多个场景的一体化同构计算模型表示为ga={gi}(i=1,...p),每个子流程的ldag计算模型gi∈ga可进一步表示为:gi={lij}(j=1,...,l),lij={oijk}(k=1,...,nij)以及因此与初始参数对应的ldga图对应的公式比对可见,多场景计算任务中的每个基本计算元变为长度为s的指令向量。每个计算元oijk所依赖的计算数据由:公式oijk=f(inputijk,paramijk),k≠c和公式oijc=f(inputijc,paramijc)进行定义,其中,oijc为控制场景数产生的计算元,表示一般计算元。oijk(k≠c)除场景数控制计算元外,其余全部计算元共用同一套参数向量paramijk。paramijc表示场景控制参数相量。值得注意的是,f(x)是指令函数,可定义为对输入x的向量化操作,其中,f(x)=[f(x)i],i=1,...,s。

步骤s140:根据所述多个预设参数的数量以及各所述预设参数对应的计算元的数量得到所需的线程块的数量,并根据所述预设参数及各所述预设参数对应的计算元对所述线程块进行标号。

可选的,在本实施例中,所述gpu中预存有单个线程块中的最大线程数,所述步骤s140包括以下步骤:

根据所述多个预设参数的数量、最大线程数以及多个计算元的数量按照公式进行计算得到需要的线程块数量,其中,为计算元的数量,nag为gpu中单个流多处理器14中的处理相关操作所需的核心阵列组数,ceil(x)是表示不小于x的最大整数,s为所述多个预设参数的数量,且当所述最大线程数小于所述计算元的数量时,则按照公式进行计算,以将作为所需的线程块,其中,li为gi的层数,nij为gi第j层的计算元总数,tpb为单个线程块的最大线程数量。

其中,单个线程块的最大线程数量可以是1024个,还可以是2048个,在此不作具体限定。

步骤s150:将各所述预设参数对应的计算元根据各所述线程块的标号进行分配,以使各线程块对分配到的计算元进行计算。

在本实施例中,上述步骤s150可以包括:对于图gi中第h个场景、第j层的第k个计算元的向量表示,其对应的线程块的编号bid和块内线程号tid可用公式以及公式计算得到,其中,为不大于的最大整数,mod(m,n)为整数m与n相除的余数。

通过上述设置,以在针对同一计算任务采用多场景计算时,kernel涉及两层计算模型的调度,针对该计算任务采用双层计算图模型进行细粒度建模,从而得多个场景下的子流程、计算指令之间的依赖和并行关系。进而,结合线程体结构和计算kernel实现了在gpu中对海量场景计算任务的批量并行加速。因此,相对于现有的kernel流式并行方法,本方法可以深入利用不同场景间的指令级并行特性,实现进一步加速,以有效提高同一计算任务在多场景下并行计算的效率。

请结合图5,在上述基础上,本发明还提供一种gpu并行计算资源配置方法,包括:获取模块110、第一处理模块120、第二处理模块130、计算模块140以及分配模块150。

所述获取模块110用于获取一计算流程确定的计算任务。在本实施例中,所述获取模块110可用于执行图2所示的步骤s110,关于所述获取模块110的具体描述可以参照前文对步骤s110的描述。

所述第一处理模块120用于对所述计算任务采用双层并行计算模型在初始参数下进行处理得到一分层有向无环图模型。在本实施例中,所述第一处理模块120可用于执行图2所示的步骤s120,关于所述第一处理模块120的具体描述可以参照前文对步骤s120的描述。

请结合图6,可选的,在本实施例中,所述双层并行计算模型包括kpn图模型和ldag计算模型,所述第一处理模块120包括:第一处理子模块122、分层子模块124以及第二处理子模块126。

所述第一处理子模块122用于对所述计算任务采用kpn图模型进行处理得到计算流程有向图,其中,所述计算流程有向图包括多个子流程。在本实施例中,所述第一处理子模块122可用于执行图3所示的步骤s122,关于所述第一处理子模块122的具体描述可以参照前文对步骤s122的描述。

所述分层子模块124用于对所述计算流程有向图中的各子流程进行分层,得到每个分层对应的子流程。在本实施例中,所述分层子模块124可用于执行图3所示的步骤s124,关于所述分层子模块124的具体描述可以参照前文对步骤s124的描述。

所述第二处理子模块126用于对所述计算流程有向图中的各分层对应的子流程采用ldag计算模型进行处理得到各所述分层对应的子流程的计算元,并根据所述计算流程有向图和各所述分层对应的子流程的计算元得到分层有向无环图模型,以及根据所述初始参数得到各计算元对应的基本指令。在本实施例中,所述第二处理子模块126可用于执行图3所示的步骤s126,关于所述第二处理子模块126的具体描述可以参照前文对步骤s126的描述。

所述第二处理模块130用于根据所述分层有向无环图模型对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一同构图,其中,所述同构图中包括各所述预设参数分别对应的计算元。在本实施例中,所述第二处理模块130可用于执行图2所示的步骤s130,关于所述第二处理模块130的具体描述可以参照前文对步骤s130的描述。

请结合图7,可选的,在本实施例中,所述第二处理模块130包括第三处理子模块132和第四处理子模块134。

所述第三处理子模块132,用于基于所述无环图模型对所述计算任务采用所述双层并行计算模型在多个预设参数下进行处理得到一体化同构计算模型,其中,所述一体化同构计算模型包括各所述预设参数对应的分层有向无环图模型,且各所述预设参数对应的分层有向无环图模型与所述初始参数对应的分层有向无环图模型相同。在本实施例中,所述第三处理子模块132可用于执行图4所示的步骤s132,关于所述第三处理子模块132的具体描述可以参照前文对步骤s132的描述。

所述第四处理子模块134用于将所述预设参数、分层有向无环图模型中各计算元对应的层数以及每层对应的计算元数代入所述一体化同构计算模型中得到一同构图以及该构图中各计算元的向量表示。在本实施例中,所述第四处理子模块134可用于执行图4所示的步骤s134,关于所述第四处理子模块134的具体描述可以参照前文对步骤s134的描述。

所述计算模块140用于根据所述多个预设参数的数量以及各所述预设参数对应的计算元的数量得到所需的线程块的数量,并根据所述预设参数及各所述预设参数对应的计算元对所述线程块进行标号。在本实施例中,所述计算模块140可用于执行图2所示的步骤s140,关于所述计算模块140的具体描述可以参照前文对步骤s140的描述。

所述分配模块150用于将各所述预设参数对应的计算元根据各所述线程块的标号进行分配,以使各线程块对分配到的计算元进行计算。在本实施例中,所述分配模块150可用于执行图2所示的步骤s150,关于所述分配模块150的具体描述可以参照前文对步骤s150的描述。

综上,本发明提供的一种gpu并行计算资源配置方法及装置,通过获取一计算流程确定的计算任务,对计算任务采用双层并行计算模型在初始参数下进行处理得到一分层有向无环图模型,根据分层有向无环图模型对计算任务采用双层并行计算模型在多个预设参数下进行处理得到一同构图,根据多个预设参数的数量以及各所述预设参数对应的计算元的数量得到所需的线程块的数量,并根据所述预设参数及所述预设参数对应的计算元对线程块进行标号,将各所述预设参数对应的计算元根据各线程块的标号进行分配,以使各线程块对分配到的计算元进行计算,从而实现了在gpu中对海量场景计算任务的批量并行加速,且相对于现有的kernel流式并行方法,本方法可以深入利用不同场景间的指令级并行特性,实现进一步加速,以有效提高同一计算任务在多场景下并行计算的效率。

在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1