基于kernel函数的时间开销模型构建方法及系统与流程

文档序号:12123231阅读:311来源:国知局
基于kernel函数的时间开销模型构建方法及系统与流程

本发明涉及并行与分布式计算领域,具体涉及一种基于kernel函数的时间开销模型构建方法及系统。



背景技术:

随着GPU性能和可编程性的不断提高,GPU越来越多地被应用于通用计算,具备这类特点的GPU被称为通用GPU。使用通用GPU加速的系统越来越多,这种CPU和通用GPU相互配合的异构系统在高性能计算领域已经受到越来越多的关注。

异构系统上用户程序的应用开发和执行效率一直是制约其发展的瓶颈。GPU的性能与很多要素密切相关,包括程序本身的特性和GPU的特性。其中程序的特性包括并行性、占用的寄存器资源等,GPU本身的特性包括计算延迟、访存延迟、支持的线程数量等。在程序优化时,单靠经验无法确定最佳优化方案,因此需要对GPU性能进行建模,在此基础上辅助编程人员完成优化策略的选择。

此外,并行机系统的结构也越来越复杂。人们逐渐发现,通常在理论上具有较好性能的并行算法,在实际并行机系统实现时不一定高效;另外有些在某类并行机上高效的算法在另一类并行机系统中不一定高效,这一现象引起了对并行计算运行时间模型的重点研究。

运行时间是并行算法最基本的度量方法,其他的评价准则都应以缩短运行时间为目的。并行计算运行时间模型的研究主要是结合并行机结构的特点和通信机制,揭示影响运行时间的关键因素,将运行时间精确到若干参数,用来辅助用户改进程序或算法,并正确估计算法的运行时间和性能,以获得最优性能。

目前的时间开销模型都只涉及了kernel函数的执行时间,并没有考虑kernel函数中线程块的分配时间,这在一定程度上影响了用户对并行算法运行时间的估算;另外在移植并行程序时,由于对线程块大小的选择主观性和随意性较大,会导致算法并行性能得不到最大发挥。

因此,亟需一种能综合考虑kernel函数开销的时间模型,使用户能够准确的度量并行程序的运行时间,以避免不必要的损失;另外可以减小在线程块大小选择时的主观性和随意性,更加充分利用GPU的高性能,为学术界和工业界等需要高效率的领域提供理论借鉴。



技术实现要素:

针对现有技术存在的不足和缺陷,本发明提供一种基于kernel函数的时间开销模型构建方法及系统。

时间开销模型是一种性能评估模型,作为并行系统性能评价的一种解决方法,得到学术界和工业界的广泛重视,在系统设计、优化和维护中发挥着重要作用,对理解并行系统的性能有其他技术手段无法比拟的优势。并行系统的性能不仅与并行计算机的系统结构、组成与实现相关,还与具体的应用程序特征相关。

为了达到上述目的,本发明综合考虑了GPU编程模型中的kernel函数在执行应用程序时的各种开销,并将流水的概念应用到模型中。该模型是在程序静态分析的基础上,只需设定合理的执行配置就可以估算出该应用程序在GPU上的性能,从而可以选择一种较优的执行配置用于指导应用程序在GPU平台上的并行化。本发明首先将并行程序kernel函数的开销时间分为线程块的分配时间和kernel函数的执行时间两个部分,然后分别对这两部分时间进行分析,构建相应的时间方程;其中执行时间又分为计算时间和访存时间两部分,并提出两个并行度参数对kernel函数执行过程中可能出现的三种情况进行表示;最后将几部分时间方程叠加,得到最终的kernel函数时间开销模型。本发明通过以上步骤实现对并行程序运行时间的估算,为用户提供算法的时间开销信息,合理规划与设计并行实验。如图2所示,该系统(方法与系统所涉及的执行步骤一致,以系统为例进行说明)具体包括:并行度参数构建模块、分配时间计算模块、执行时间计算模块。

并行度参数构建模块,用于提出并构造两个并行度参数:warp访存并行度(WMPD,Warp Memory Parallelism Degree)和warp计算并行度(WCPD,Warp Computation Parallelism Degree)。由于GPU的执行是一种特殊的流水方式,这种方式的不同在于流水线的深度和长度都是不固定的,与GPU的架构以及待处理的数据规模相关,因此提出这两个并行度参数以便于描述GPU的处理过程。

分配时间计算模块,用于计算并行程序在GPU上并行运行之前,kernel函数中的线程块block分配到GPU架构中流多处理器(SM,Streaming Multiprocessor)上的时间。

执行时间计算模块,用于计算并行程序在GPU上的实际执行时间,该模块分为执行warp中所有指令的计算时间和执行warp时所需的访存时间两部分,并对可能出现的三种情况进行了分析。

上述的基于GPU编程模型中kernel函数的时间开销模型构建系统中,所述的并行度参数构建模块不仅需要考虑GPU的硬件结构,还与具体的应用程序有关。具体涉及到:线程簇的大小,GPU架构中流多处理器(SM)的数量,每个流多处理器中寄存器的数量、共享存储器的大小、最大活动线程块的数量,执行一条指令所需的访存时间和计算时间;并行应用程序中线程的数量,执行每个线程需要的寄存器数量、共享内存的大小,访存指令的数量和计算指令的数量。通过对以上各部分参数的分析,构造出warp访存并行度和warp计算并行度两个并行度参数,为后面的计算模块提供基础。

上述的基于GPU编程模型中kernel函数的时间开销模型构建系统中,所述的分配时间计算模块,分析了当kernel函数被调用时将其中包含的尺寸信息从CPU传递到GPU上的这一过程,在GPU中进行该传递工作的部件称为GPU任务分配单元(global block scheduler)。GPU任务分配单元采用轮询方法将尺寸信息分配到流多处理器上,轮询方法是指一个接一个的对线程块进行分配。具体来说,在分配一个线程块时,首先判断一个流多处理器上是否有足够多的资源(需要的寄存器数量和共享存储器大小)来运行该线程块,如果有就分配给这个流多处理器,否则对下一个流多处理器进行判断。因此,这一轮询过程会带来一定的时间损耗。

上述的基于GPU编程模型中kernel函数的时间开销模型构建方法及系统中,所述的执行时间计算模块,分析了可能出现的三种情况:warp的计算时间小于warp的访存时间、warp的计算时间大于等于warp的访存时间和分配到SM上的线程块小于WMPD。对于可能出现的每种情况,详细分析了计算与访存的重叠,最终得到并行程序在GPU上执行的时间方程。

本发明具有如下有益效果:

1、考虑多方面因素对应用程序的并行度进行分析,使得构建出的并行度参数能够满足并行表示的基本要求,保证了对并行程序时间开销预测的有效性,使得预测结果更为真实。

2、通过分析GPU任务分配单元在进行尺寸信息分配时的一系列过程,了解轮询机制下可能引起的时间损耗,使并行程序时间开销模型的构造更加全面合理,提高模型的预测精度和运行效率。

3、采用分类讨论的思想,对并行程序在GPU上执行时可能出现的三种情况进行详细分析,使得时间开销模型能够反映真实情况,提高时间预测的准确度。

附图说明

图1为本发明基于kernel函数的时间开销模型构建方法一实施例的流程示意图;

图2为本发明基于kernel函数的时间开销模型构建系统一实施例的整体框架示意图;

图3为WCPD大于WMPD时的执行时间示意图;

图4为WCPD小于WMPD时的执行时间示意图;

图5为计算时间大于访存时间时的执行时间示意图;

图6为warp数量不足时的执行时间示意图;

图7为本发明基于kernel函数的时间开销模型构建系统另一实施例的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参看图1,本实施例公开一种基于kernel函数的时间开销模型构建方法,包括:

S1、根据GPU的硬件结构和待移植的并行程序构造warp访存并行度WMPD,并计算所述并行程序在GPU上并行运行之前,kernel函数中的线程块block分配到GPU架构中流多处理器SM上的时间,记为分配时间;

在具体应用中,首先对实际应用到的GPU和并行应用程序进行分析,得到构成两个并行度WMPD和WCPD的一系列相关参数,具体的含义及获取方式如下表所示。

然后分别对warp的访存并行度(WMPD)和计算并行度(WCPD)进行分析,具体如下:

(1)WMPD代表一个流多处理器上可以同时运行的warp数量,WMPDM则代表一个流多处理器上最多可以同时运行的warp数量。其中WMPD小于等于WMPDM,并且可由公式(6)计算得到。WMPDM不能大于硬件限制下的流多处理器上最多可同时运行的warp数量,此外还受到每个线程块对资源需求的限制,如所需的寄存器个数和共享内存的大小,可由公式(1)(2)(3)计算得到。

WMPDM=min(WMPDMax,WMPDReg,WMPDSmem) (3)

WMPDMax:在硬件限制下一个SM上可同时运行的warp数量。

WMPDReg:SM中寄存器数量的限制下可同时运行的warp数量。

WMPDSmem:SM中共享内存大小的限制下可同时运行的warp数量。

(2)WCPD代表当一个warp访存的时间内,可以完成计算过程的warp数量,可由公式(7)计算得到。

TM:每个warp的访存时间,可由公式(8)得到。

TC:每个warp的计算时间,可由公式(9)得到。

TM=Mem_Cycle×Mem_insts (8)

TC=Comp_Cycle×Comp_insts (9)

其中,TC一般用于判断一个并行应用程序的时间开销主要由计算时间决定还是由访存时间决定。当TC小于TM时,主要由访存时间决定时间开销,而当TC大于TM时,则主要由计算时间决定时间开销。对于分配时间,由于轮询机制的存在,可以设置一个参数Tallo,来表示每个线程块被分配到SM上的时间,这样可由公式(10)计算得到并行程序中线程块的分配时间。

Tinit=dGrid×Tallo (10)

S2、根据所述warp访存并行度WMPD计算所述并行程序在GPU上的实际执行时间,记为执行时间;

对于执行时间的计算,本发明对可能出现的三种情况进行了讨论,其中用一个参数N来表示每个流多处理器SM上分配到的线程块个数,由公式(11)可以计算得到。

下面分别对可能出现的三种情况进行详细的分析与说明:

(1)TC<TM

对于图3和图4中可能出现的两种情况,并行程序在kernel函数上的执行时间都可由公式(12)计算得到:

可以发现,此时warp的计算时间总是可以被访存时间所隐藏,总的执行时间被访存时间主要决定。

(2)TC≥TM

图5展示了一种极端的情况,此时一个warp的计算时间要大于其访存时间,并行应用程序无法利用warp的访存并行度,其在kernel函数上的执行时间都可由公式(13)计算得到:

TGPU=N×TC+TM (13)

(3)N不大于WMPD时

前两种情况都描述了当流多处理器上有足够多warp的情况。但如果一个应用程序没有足够多的warp,那么就无法充分利用GPU的并行度,图6就展示了这样一种情况,此时的执行时间同样可由公式(13)计算得到。

S3、根据所述分配时间和执行时间构建基于GPU编程模型中kernel函数的时间开销模型。

最后对以上各部分的时间方程进行归纳整理,可得到最终的基于GPU编程模型中kernel函数的时间开销模型,如下公式所示:

本发明实施例提供的基于kernel函数的时间开销模型构建方法,考虑多方面因素对应用程序的并行度进行分析,使得构建出的并行度参数能够满足并行表示的基本要求,保证了对并行程序时间开销预测的有效性,使得预测结果更为真实;通过分析GPU任务分配单元在进行尺寸信息分配时的一系列过程,了解轮询机制下可能引起的时间损耗,使并行程序时间开销模型的构造更加全面合理,提高模型的预测精度和运行效率;采用分类讨论的思想,对并行程序在GPU上执行时可能出现的三种情况进行详细分析,使得时间开销模型能够反映真实情况,提高时间预测的准确度。

参看图7,本实施例公开一种基于kernel函数的时间开销模型构建系统,包括:

第一计算单元1,用于根据GPU的硬件结构和待移植的并行程序构造warp访存并行度WMPD,并计算所述并行程序在GPU上并行运行之前,kernel函数中的线程块block分配到GPU架构中流多处理器SM上的时间,记为分配时间;

本实施例中,所述WMPD的计算公式可以为

所述分配时间Tinit的计算公式可以为

Tinit=dGrid×Tallo

第二计算单元2,用于根据所述warp访存并行度WMPD计算所述并行程序在GPU上的实际执行时间,记为执行时间;

具体地,所述执行时间TGPU的计算公式可以为

构建单元3,用于根据所述分配时间和执行时间构建基于GPU编程模型中kernel函数的时间开销模型。

具体地,所述时间开销模型CostGPU的计算公式可以为

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

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