当前位置: 首页 > 专利查询>武汉大学专利>正文

一种基于自适应线程束的GPU并行粒子群优化方法技术

技术编号:14836884 阅读:183 留言:0更新日期:2017-03-17 04:13
本发明专利技术公开了一种基于自适应线程束的GPU并行粒子群优化方法,包括以下步骤:1:初始化问题函数参数,初始化粒子群参数;2:定义三个CUDA核函数,分别用于并行计算粒子的速度和位置、粒子的适应度值及下一代粒子自身所找到的最好适应度值及其对应的解、整个粒子群到目前为止找到的最好适应度值及其对应的解;3:根据自适应线程束算法计算并初始化每个核函数的Block及Grid参数;4:调用核函数并行迭代更新粒子群的速度和位置,并求出当前最好适应度值及其对应的解;5:重复执行步骤4直到达到设定的结束条件,GPU输出计算结果;本发明专利技术可以大幅缩短粒子群算法在GPU上的并行求解时间、减少功耗、节约硬件成本。

【技术实现步骤摘要】

本专利技术涉及一种粒子群优化方法,属于计算机数据处理领域,具体涉及一种基于自适应线程束的GPU并行粒子群优化方法
技术介绍
粒子群优化(ParticleSwarmOptimization,PSO)算法是一种演化计算技术,由于其概念简单、易于实现,同时又具备较强的全局搜索及收敛能力等特点,而得到了快速的发展和广泛的应用。目前已出现各种并行PSO算法版本,这其中,针对CUDA并行架构,对线程的分配方案主要有两种:1)一个线程对应一个粒子;2)一个线程对应一个维度,一个Block对应一个粒子。第一种粗粒度并行方法,虽然已经取得了不错的加速比,但由于每个线程中粒子所对应的每个维度仍然是串行执行的,并行程度并不高。第二种细粒度并行方式在第一种的前提下做了改进,将每个粒子对应到每个Block,再将每个Blcok中的线程对应到每个粒子中的一个维度。这样无疑加大了并行程度,但值得注意的是,在CUDA并行程序中,所有的Block是被串行的分配到每一个流多处理器上的,还可以继续提高并行度。GPU是一种专用的图形渲染设备。最初GPU是专用于图形处理的硬件,然而自从2006年以来,越来越多的研究人员研究了利用GPU进行通用计算的GPGPU领域,各大厂商也推出了专用的GPGPU语言,比如CUDA、OPENCL等。
技术实现思路
本专利技术的目的是优化原有基于GPU的计算方法,调整其并行架构使之并行效率更高,设计出一套改进的CUDA并行架构方式,利用图像处理器(GPU)加速执行,使得粒子群算法在单个主机上的并行度进一步的提高,相比前两种方法在CPU加速比的倍数上提高了40之多。为了解决上述问题,本专利技术的方案是:一种基于自适应线程束的GPU并行粒子群优化方法,将每个粒子的维度划分为若干个线程束,使用线程块来包含所述线程束,使得一个线程块中对应一个或多个粒子;其中,所述线程束是SM调度和执行的基本单位。优化的,上述的一种基于自适应线程束的GPU并行粒子群优化方法,基于以下公式调整粒子所对应的线程束的个数WarpNum以及线程块所对应的粒子数ParticleNum:WarpNum=DivUp(D,WarpSize)(8)ThreadNum=WarpNum*WarpSize(9)ParticleNum=DivDown(BlockSize,ThreadNum)(10)式中,D表示求解问题的维度,WarpSize表示CUDA架构中一个线程束的大小;DivUp函数的功能是将D除以WarpSize得到的商做向上取整,以得到粒子所对应Warp的个数WarpNum;ThreadNum用来表示每个粒子实际用到的线程总数;BlockSize表示CUDA架构中一个Block的大小,DivDown函数的功能是将BlockSize除以ThreadNum得到的商做向下取整,以得到Block所对应的粒子数ParticleNum。优化的,上述的一种基于自适应线程束的GPU并行粒子群优化方法,在调用核函数之前,基于自适应线程束算法,利用以下公式计算并初始化每个核函数的线程块的个数BlockNum以及网格的个数GridNum:BlockNum=TreadNum*ParticleNum;GridNum=DivUp(N,ParticleNum);式中,ThreadNum用来表示每个粒子实际用到的线程总数;ParticleNum为线程块所对应的粒子数;N为粒子群中粒子的总个数。优化的,上述的一种基于自适应线程束的GPU并行粒子群优化方法,定义三个CUDA核函数,分别用于并行计算粒子的速度和位置、粒子的适应度值及下一代粒子自身所找到的最好适应度值及其对应的解、整个粒子群到目前为止找到的最好适应度值及其对应的解。优化的,上述的一种基于自适应线程束的GPU并行粒子群优化方法,具体包括以下步骤:步骤2.1:计算粒子的速度和位置内核,每个GPU线程按照分配好的线程块个数BlockNum和网格个数GridNum,通过粒子群算法的计算公式对应的计算每个问题某一维度对应的速度和位置;步骤2.2:计算粒子的适应度值及下一代粒子自身所找到的最好适应度值及其对应的解内核,按照分配好的BlockNum和GridNum并行计算每个粒子每个维度的适应度值,再根据每个维度的适应度值通过并行规约算法,得到每个粒子的适应度值,最后根据得到的适应度值,更新粒子的适应度值及其所对应的解;步骤2.3:计算整个粒子群到目前为止找到的最好适应度值及其对应的解内核,通过使用CUBLAS的cublasI<t>amin()函数(t为操作对象的数据类型)在GPU上求得整个粒子群到目前为止找到的最好适应度值及其对应的解。优化的,上述的一种基于自适应线程束的GPU并行粒子群优化方法,基于以下公式初始化问题函数:其中,fSphere为问题函数Sphere的求解公式,fRastrigrin为问题函数Rastrigrin的求解公式,fRosenbrock为问题函数Rosenbrock的求解公式,x为问题函数变量,D为问题函数的维度。优化的,上述的一种基于自适应线程束的GPU并行粒子群优化方法,基于以下公式更新粒子群的公式:Xid(t+1)=Xid(t)+Vid(t);(5)其中,Vid表示每个粒子的速度,t表示当前的迭代代数,w表示粒子群的惯性权重系数,c1和c2表示粒子群的加速因子,r1和r2是[0,1]区间中均匀分布的随机数,表示该粒子的个体极值,表示整个粒子群的全局极值,Xid表示该粒子的当前位置(解)。基于以下公式更新粒子群参数w和C1/C2:w=1/(2*ln(2));(6)c1=c2=0.5+ln(2);(7)因此,本专利技术具有如下优点:(1)使用本专利技术提供的方法,可以大幅缩短PSO算法求解问题时间,提高相关应用软件响应速度;(2)用本专利技术提供的方法,可以选用低端CPU用于主机,中高端GPU用于计算,达到多CPU甚至集群的性能,从而减少功耗,节约硬件成本。附图说明图1为本专利技术实施例的粒子群算法优化方法流程图。图2为CUDA并行计算模型。图3为本专利技术实施例的GPU端更新架构图。图4为本专利技术实施例的包含GPU端更新架构图的粒子群算法优化方法流程图。具体实施方式下面通过实施例,并结合附图,对本专利技术的技术方案作进一步具体的说明。实施例:如图1所示,为本实施例的一种基于自适应线程束的GPU并行粒子群优化方法,包括以下步骤:步骤1:初始化问题函数参数,初始化粒子群参数;步骤2:定义三个CUDA核函数,分别用于并行计算粒子的速度和位置、粒子的适应度值及下一代粒子自身所找到的最好适应度值及其对应的解、整个粒子群到目前为止找到的最好适应度值及其对应的解;步骤3:根据自适应线程束算法计算并初始化每个核函数的BlockNum及GridNum;步骤4:调用核函数并行迭代更新粒子群的速度和位置,并求出当前最好适应度值及其对应的解;步骤5:重复执行步骤4直到达到设定的结束条件,GPU输出计算结果。其中,步骤1中的问题函数基于如下公式(1)-(3)定义:其中,fSphere为问题函数Sphere的求解公式,fRastrigrin为问题函数Rastrigrin的求解公式,fRosenbrock为问题函数Rosenbrock的求解公式,本文档来自技高网...
一种基于自适应线程束的GPU并行粒子群优化方法

【技术保护点】
一种基于自适应线程束的GPU并行粒子群优化方法,其特征在于,将每个粒子的维度划分为若干个线程束,使用线程块来包含所述线程束,使得一个线程块中对应一个或多个粒子;其中,所述线程束是SM调度和执行的基本单位。

【技术特征摘要】
1.一种基于自适应线程束的GPU并行粒子群优化方法,其特征在于,将每个粒子的维度划分为若干个线程束,使用线程块来包含所述线程束,使得一个线程块中对应一个或多个粒子;其中,所述线程束是SM调度和执行的基本单位。2.根据权利要求1所述的一种基于自适应线程束的GPU并行粒子群优化方法,其特征在于,基于以下公式调整粒子所对应的线程束的个数WarpNum以及线程块所对应的粒子数ParticleNum:WarpNum=DivUp(D,WarpSize)(8)ThreadNum=WarpNum*WarpSize(9)ParticleNum=DivDown(BlockSize,ThreadNum)(10)式中,D表示求解问题的维度,WarpSize表示CUDA架构中一个线程束的大小;DivUp函数的功能是将D除以WarpSize得到的商做向上取整,以得到粒子所对应Warp的个数WarpNum;ThreadNum用来表示每个粒子实际用到的线程总数;BlockSize表示CUDA架构中一个Block的大小,DivDown函数的功能是将BlockSize除以ThreadNum得到的商做向下取整,以得到Block所对应的粒子数ParticleNum。3.根据权利要求1所述的一种基于自适应线程束的GPU并行粒子群优化方法,其特征在于,在调用核函数之前,基于自适应线程束算法,利用以下公式计算并初始化每个核函数的线程块的个数BlockNum以及网格的个数GridNum:BlockNum=TreadNum*ParticleNum;GridNum=DivUp(N,ParticleNum);式中,ThreadNum用来表示每个粒子实际用到的线程总数;ParticleNum为线程块所对应的粒子数;N为粒子群中粒子的总个数。4.根据权利要求1所述的一种基于自适应线程束的GPU并行粒子群优化方法,其特征在于,定义三个CUDA核函数,分别用于并行计算粒子的速度和位置、粒子的适应度值及下一代粒子自身所找到的最好适应度值及其对应的解、整个粒子群到目前为止找到的最好适应度值及其对应的解。5.根据权利要求4所述的一种基于自适应线程束的GPU并行粒子群优化方法,其特征在于,具体包括以下步骤:步骤2.1:计算粒子的速度和位置内核,每个GPU线程按照分配好的线程块个数BlockNum和网格个数GridNum,通过粒子群算法的计算公式对应的计算每个问题某一维度对应的速度和位置;步骤...

【专利技术属性】
技术研发人员:何发智张硕
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1