GPU编程模型中核函数最优尺寸求解方法及装置与流程

文档序号:11144613阅读:498来源:国知局
GPU编程模型中核函数最优尺寸求解方法及装置与制造工艺

本发明涉及并行与分布式计算处理领域,尤其涉及一种GPU编程模型中核函数最优尺寸求解方法及装置。



背景技术:

自本世纪初以来,图形处理单元(GPU)逐渐开始从特定的图形加速器向通用计算设备进行演变。近年来,GPU被设计为对计算机图像的高效处理,其计算能力也有了极大提高,且与CPU相比有着更高的计算能力。因此,越来越多的用户开始利用高性能的GPU来解决复杂的应用问题。

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

为最大限度发挥GPU的高性能计算能力,一般有三种优化方案:(1)全局存储优化;(2)共享存储优化;(3)工作流划分优化。其中,前两种优化方案可被归为GPU的存储访问优化,目前已有很多该方面的相关研究。对GPU存储访问的优化可以极大提升CPU与GPU之间的通信效率,但在存储访问优化之后,对kernel函数尺寸的工作流划分优化方法直接影响着GPU的性能。同时,对一个确定的并行程序来说,其线程总数是确定的,因此对kernel函数最优尺寸的选择是很有必要的。其中,kernel函数尺寸是由网格尺寸和线程块尺寸两部分组成的,即kernel函数中的两个尺寸参数。

目前用户通常根据他们的经验和多次尝试来决定kernel函数中网格尺寸和线程块尺寸大小,而并没有一种指导性的方法,这使用户在移植并行程序时,对尺寸划分的主观性和随意性较大,在一定程度上使GPU的高性能无法得到最大发挥。



技术实现要素:

本发明提供一种GPU编程模型中核函数最优尺寸求解方法及装置,用于解决现有技术中核函数尺寸的不合理划分给GPU的高性能带来影响的问题。

第一方面,本发明提供一种GPU编程模型中核函数最优尺寸求解方法,包括:

获取GPU硬件结构的结构参数;

获取并行应用程序中预设的分析参数;

根据所述结构参数和所述分析参数建立时间开销模型;

根据所述时间开销模型建立尺寸优化模型;

对所述尺寸优化模型进行求解获得核函数最优尺寸并输出。

优选地,根据所述结构参数和所述分析参数建立时间开销模型,包括:

根据所述所述结构参数和所述分析参数获得线程簇访存并行度和线程簇计算并行度;

根据所述结构参数、分析参数、线程簇访存并行度和线程簇计算并行度获得线性块在核函数上的分配时间模型和执行时间模型;

将所述分配时间模型和所述执行时间模型进行整合获得时间开销模型。

优选地,根据所述所述结构参数和所述分析参数获得线程簇访存并行度和线程簇计算并行度,包括:

线程簇访存并行度的计算包括:

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

其中,WMPD为线程簇访存并行度,WMPDReg为在流多处理器中寄存器数量的限制下可同时运行的线程簇数量,WMPDSmem为在流多处理器中共享内存大小的限制下可同时运行的线程簇数量,WMPDM为在硬件限制下一个流多处理器上可同时运行的最大线程簇数量,WMDPMax为在硬件限制下一个流多处理器上可同时运行的线程簇数量;

NReg_per_SM为每个流多处理器中寄存器的数量,NReg_per_Thread为每个线程所需寄存器的数量,warpSize为每个线程簇中的线程数目,NSmem_per_SM为每个流多处理器中共享内存的大小,NSmem_per_Thread为每个线程所需共享内存的数量,NActive_Blocks_per_SM为每个流多处理器上活动线程块的数量,NMax_Active_Blocks_per_SM为每个流多处理器上最大活动线程块数量,dGrid为线程块的总数量,NSMs为GPU结构中流多处理器的数量,dBlock为每个线程块中线程的数量,NThreads为线程的总数量,dGrid.x为x维度上线程块的数量,dGrid.y为y维度上线程块的数量;

线程簇计算并行度的计算包括:

TM=Mem_Cycle×Mem_insts (8)

TC=Comp_Cycle×Comp_insts (9)

其中,WCPD为线程簇计算并行度,TM为每个线程簇的访存时间,TC为每个warp的计算时间。

优选地,根据所述结构参数、分析参数、线程簇访存并行度和线程簇计算并行度获得线性块在核函数上的分配时间模型和执行时间模型,包括:

分配时间模型的建立包括:设置一个参数Tallo,其为每个线程块被分配到流多处理器上的时间,则根据线程块的总数量和每个线程块被分配到流多处理器上的时间建立分配时间模型:

Tinit=dGrid×Tallo (10)

执行时间模型的建立包括:

若Tc<TM,则执行时间模型为:

若Tc≥TM或N不大于WMPD,则执行时间模型为:

TGPU=N×TC+TM (13)

其中,N为每个流多处理器上分配到的线程块个数,

Tinit为线性块在核函数上的分配时间,TGPU为线性块在核函数上的执行时间。

优选地,将所述分配时间模型和所述执行时间模型进行整合获得时间开销模型,包括:

所述时间开销模型为:

优选地,根据所述时间开销模型建立尺寸优化模型,包括:

设置一约束条件,使所述约束条件与所述时间开销模型结合转化为核函数的尺寸优化模型;

所述约束条件为:

优选地,对所述尺寸优化模型进行求解获得核函数最优尺寸并输出,包括:

若N<WMDP,根据库恩-卡特条件将尺寸优化模型进行整理得到:

dGrid.x×dGrid.y=K (20)

根据公式(20)得到核函数最优尺寸;

若N>WMDP,根据库恩-卡特条件将尺寸优化模型整理得到:

根据公式(23)得到核函数最优尺寸;

若N=WMDP,所述尺寸优化模型是一个分段函数,则分段函数的转折点为:

dGrid.x×dGrid.y=NSMs×NMax_Active_Blocks_per_SM (24)

根据公式(24)得到核函数最优尺寸。

优选地,所述结构参数包括:每个线程簇中的线程数目、GPU结构中流多处理器的数量、每个流多处理器中寄存器的数量、每个流多处理器中共享内存的大小、每个流多处理器上最大活动线程块数量、执行每条访存语句的时间和执行每条计算语句的时间。

优选地,所述分析参数包括:每个线程所需寄存器的数量、每个线程所需共享内存的数量、线程的总数量、x维度上线程块的数量、y维度上线程块的数量、每个流多处理器上活动线程块的数量、每个线程中访存指令数和每个线程中计算指令数。

第二方面,本发明提供一种GPU编程模型中核函数最优尺寸求解装置,包括:

第一获取模块,用于获取GPU硬件结构的结构参数;

第二获取模块,用于获取并行应用程序中预设的分析参数;

第一建立模块,用于根据所述结构参数和所述分析参数建立时间开销模型;

第二建立模块,用于根据所述时间开销模型建立尺寸优化模型;

计算输出模块,用于对所述尺寸优化模型进行求解获得核函数最优尺寸并输出。

由上述技术方案可知,本发明提供的GPU编程模型中核函数最优尺寸求解方法及装置,通过构建时间开销模型能够满足并行应用程序的基本要求,保证对时间开销预测的有效性,且预测结果更为真实。通过分析时间开销模型中的参数,增设约束条件,构造尺寸优化模型,使对kernel函数尺寸的分析更全面合理,提高模型的精度和运行效率。采用分类讨论的思想,对并行程序在GPU上执行时可能出现的三种情况进行详细分析,对每种情况下kernel函数的尺寸进行求解,得到简单易操作的公式来指导用户进行尺寸的快速选择。可在不运行并行应用程序的情况下,通过静态分析得到kernel函数的最优尺寸,大大的提高工作与生产效率。

附图说明

图1为本发明实施例1提供的GPU编程模型中核函数最优尺寸求解方法的流程示意图;

图2为本发明实施例所述方法的整体框架流程图;

图3为本发明实施例WCPD大于WMPD时的执行时间示意图;

图4为本发明实施例WCPD小于WMPD时的执行时间示意图;

图5为本发明实施例计算时间大于访存时间时的执行时间示意图;

图6为本发明实施例warp数量不足时的执行时间示意图;

图7为本发明实施例2提供的GPU编程模型中核函数最优尺寸求解装置的结构示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

图1示出了本发明一种GPU编程模型中核函数最优尺寸求解方法,包括:

S11、获取GPU硬件结构的结构参数;

S12、获取并行应用程序中预设的分析参数;

S13、根据所述结构参数和所述分析参数建立时间开销模型;

S14、根据所述时间开销模型建立尺寸优化模型;

S15、对所述尺寸优化模型进行求解获得核函数最优尺寸并输出。

下面对上述方法的各个步骤进行解释说明:

如图2为本发明实施例所述方法的整体框架流程图,从图2中可知,需针对GPU硬件结构和并行应用程序进行分析以获取到所需的结构参数和分析参数。通过获得的参数得到线程簇(warp)访存并行度和线程簇(warp)计算并行度。根据线程簇(warp)访存并行度和线程簇(warp)计算并行度对线程块的分配时间和执行时间进行分析,以建立时间开销模型。对时间开销模型增加约束条件形成尺寸优化模型,对尺寸优化模型进行求解得到核函数最优尺寸并输出,使系统按照最优尺寸进行设置,达到最大发挥GDP高性能的目的。

如下表所示为结构参数和分析参数的获取列表:

其中,SM为流多处理器,warp为线程簇,GPU为图像处理器。

步骤S13:根据所述结构参数和所述分析参数建立时间开销模型,包括:

S131、根据所述所述结构参数和所述分析参数获得线程簇访存并行度和线程簇计算并行度;

S132、根据所述结构参数、分析参数、线程簇访存并行度和线程簇计算并行度获得线性块在核函数上的分配时间模型和执行时间模型;

S133、将所述分配时间模型和所述执行时间模型进行整合获得时间开销模型。

下面对各个步骤进行解释说明:

线程簇访存并行度采用以下计算方式进行处理:

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

其中,WMPD为线程簇访存并行度,WMPDReg为在流多处理器中寄存器数量的限制下可同时运行的线程簇数量,WMPDSmem为在流多处理器中共享内存大小的限制下可同时运行的线程簇数量,WMPDM为在硬件限制下一个流多处理器上可同时运行的最大线程簇数量,WMDPMax为在硬件限制下一个流多处理器上可同时运行的线程簇数量;

NReg_per_SM为每个流多处理器中寄存器的数量,NReg_per_Thread为每个线程所需寄存器的数量,warpSize为每个线程簇中的线程数目,NSmem_per_SM为每个流多处理器中共享内存的大小,NSmem_per_Thread为每个线程所需共享内存的数量,NActive_Blocks_per_SM为每个流多处理器上活动线程块的数量,NMax_Active_Blocks_per_SM为每个流多处理器上最大活动线程块数量,dGrid为线程块的总数量,NSMs为GPU结构中流多处理器的数量,dBlock为每个线程块中线程的数量,NThreads为线程的总数量,dGrid.x为x维度上线程块的数量,dGrid.y为y维度上线程块的数量。

线程簇计算并行度采用以下计算公式进行处理:

TM=Mem_Cycle×Mem_insts (8)

TC=Comp_Cycle×Comp_insts (9)

其中,WCPD为线程簇计算并行度,TM为每个线程簇的访存时间,TC为每个warp的计算时间。

需要说明的是,分配时间计算部分由于轮询机制的存在,需设置一个参数Tallo,来表示每个线程块被分配到SM上的时间,这样可由公式(10)计算得到并行程序中线程块的分配时间。

Tinit=dGrid×Tallo (10)

执行时间计算部分则对可能出现的三种情况进行讨论:

(1)Tc<TM

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

(2)Tc≥TM

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

TGPU=N×TC+TM (13)

(3)N不大于WMPD

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

其中,N为每个流多处理器上分配到的线程块个数,

Tinit为线性块在核函数上的分配时间,TGPU为线性块在核函数上的执行时间。

最后对以上公式(10)(12)(13)进行归纳整理,可得到最终的基于GPU编程模型中kernel函数的时间开销模型,如公式(14)所示:

步骤S14:根据所述时间开销模型建立尺寸优化模型。

设置一约束条件,使所述约束条件与所述时间开销模型结合转化为核函数的尺寸优化模型;

所述约束条件为:

第一个约束条件表示kernel函数的线程块大小要在GPU架构的限制内,不能小于其最低限制,也不能超过其最高限制;第二个约束条件表示线程块的数目要尽可能的比GPU上流多处理器个数多,这样才能使GPU得到充分的利用;后两个约束条件表示线程块的大小应尽量是warp大小的倍数,以避免并行度的浪费。

步骤S15:对所述尺寸优化模型进行求解获得核函数最优尺寸并输出。

根据N和WMPD之间可能存在的三种关系:大于、等于和小于,进行分类讨论,来求解kernel函数最优尺寸,具体分析如下:

(1)N<WMDP。

根据库恩-卡特条件将尺寸优化模型进行整理得到:

其中,

Nouter_loop为外层循环的循环上限,Ninner_loop为内层循环的循环上限。

然后,可计算得到梯度函数,如公式(18)所示:

接着,可得到如公式(19)的四元一次方程组:

其中,γ1,γ2为系数。

根据上述公式(16)(17)(18)(19)可以得到这种情况下的最优解,如公式(20)所示,利用该公式可直接得到kernel函数的最优尺寸。

dGrid.x×dGrid.y=K (20)

(2)N>WMDP

根据库恩-卡特条件将尺寸优化模型整理得到:

根据公式(21)(22)得到得到三个解,如公式(23)所示:

这种情况下,把dGrid.x×dGrid.y看作一个整体,此时函数图像为一个开口朝上的抛物线。最优解的选取取决于dGrid.x×dGrid.y的值。公式(23)中的(a)表示抛物线的极小值点,当该点在抛物线取值范围中的时候,可用该公式来计算kernel函数的最优尺寸;公式(23)中的(b)表示抛物线取值的下边界,此时抛物线的极小值点在取值范围的左侧,抛物线的有效部分为单调递增函数,可用该公式来计算kernel函数的最优尺寸;公式(23)中的(c)表示抛物线取值的上边界,此时抛物线的极小值点在取值范围的右侧,抛物线的有效部分为单调递减函数,可用该公式来计算kernel函数的最优尺寸。

(3)N=WMDP

尺寸优化模型是一个分段函数,因为参数NActive_Blocks_per_SM的取值是不确定的,当其取值为公式(4)中的第二个值时,可用(1)中的方法来计算kernel函数的最优尺寸;而当其取值为公式(4)中的第一个值时,可用(2)中的方法来计算kernel函数的最优尺寸。公式(24)代表该分段函数的转折点:

dGrid.x×dGrid.y=NSMs×NMax_Active_Blocks_per_sM (24)

通过上述方法即可直接对不同情况下kernel函数的最优尺寸进行求解,方便用户的静态使用。

本发明实施例1所述的GPU编程模型中核函数最优尺寸求解方法,通过构建时间开销模型能够满足并行应用程序的基本要求,保证对时间开销预测的有效性,且预测结果更为真实。通过分析时间开销模型中的参数,增设约束条件,构造尺寸优化模型,使对kernel函数尺寸的分析更全面合理,提高模型的精度和运行效率。采用分类讨论的思想,对并行程序在GPU上执行时可能出现的三种情况进行详细分析,对每种情况下kernel函数的尺寸进行求解,得到简单易操作的公式来指导用户进行尺寸的快速选择。可在不运行并行应用程序的情况下,通过静态分析得到kernel函数的最优尺寸,大大的提高工作与生产效率。

图7示出了本发明实施例2提供一种GPU编程模型中核函数最优尺寸求解装置,包括第一获取模块21、第二获取模块22、第一建立模块23、第二建立模块24和计算输出模块25,其中:

第一获取模块,用于获取GPU硬件结构的结构参数;

第二获取模块,用于获取并行应用程序中预设的分析参数;

第一建立模块,用于根据所述结构参数和所述分析参数建立时间开销模型;

第二建立模块,用于根据所述时间开销模型建立尺寸优化模型;

计算输出模块,用于对所述尺寸优化模型进行求解获得核函数最优尺寸并输出。

在执行过程中,第一获取模块获取GPU硬件结构的结构参数,并将结构参数发送给第一建立模块。第二获取模块获取并行应用程序中预设的分析参数,并将分析参数发送给第一建立模块。第一建立模块根据所述结构参数和所述分析参数建立时间开销模型。第二建立模块根据所述时间开销模型建立尺寸优化模型。计算输出模块对所述尺寸优化模型进行求解获得核函数最优尺寸并输出。

在本发明实施例2中一种GPU编程模型中核函数最优尺寸求解装置的具体工作过程,可以参考上述的一种GPU编程模型中核函数最优尺寸求解方法所描述的内容,在此不再一一赘述。

需要说明的是,本发明实施例中可以通过硬件处理器(hardware processor)来实现相关功能模块。

本发明实施例2所述的GPU编程模型中核函数最优尺寸求解装置,通过构建时间开销模型能够满足并行应用程序的基本要求,保证对时间开销预测的有效性,且预测结果更为真实。通过分析时间开销模型中的参数,增设约束条件,构造尺寸优化模型,使对kernel函数尺寸的分析更全面合理,提高模型的精度和运行效率。采用分类讨论的思想,对并行程序在GPU上执行时可能出现的三种情况进行详细分析,对每种情况下kernel函数的尺寸进行求解,得到简单易操作的公式来指导用户进行尺寸的快速选择。可在不运行并行应用程序的情况下,通过静态分析得到kernel函数的最优尺寸,大大的提高工作与生产效率。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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

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