CN105718998A - 一种基于移动终端gpu运行的粒子群优化方法和系统 - Google Patents
一种基于移动终端gpu运行的粒子群优化方法和系统 Download PDFInfo
- Publication number
- CN105718998A CN105718998A CN201610040738.XA CN201610040738A CN105718998A CN 105718998 A CN105718998 A CN 105718998A CN 201610040738 A CN201610040738 A CN 201610040738A CN 105718998 A CN105718998 A CN 105718998A
- Authority
- CN
- China
- Prior art keywords
- particle
- speed
- thread
- gpu
- cpu
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Telephone Function (AREA)
Abstract
本发明公开一种基于移动终端GPU运行的粒子群优化方法,所述方法包括:在CPU端初始化粒子群中粒子的位置和速度;将粒子的位置和速度发送到GPU端;根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置;根据更新的粒子的速度和位置更新全局最优粒子;若当前的全局最优粒子满足迭代条件,则GPU端将最优粒子发送至CPU端。利用粒子群优化算法提高GPU的运算速度和运算效率,大大提高GPU的性能,从而大大提高了GPU作为协同处理器协助CPU进行运算的能力,提高了整体的运算能力和运算效率。
Description
技术领域
本发明涉及计算机领域,更具体的说,涉及一种基于移动终端GPU运行的粒子群优化方法。
背景技术
目前,CPU(中央处理器)核心频率已达极至,海量数据的实时处理,已经远远超出了CPU的负荷,这一发展无疑为大数据问题的解决带来新途径,GPU(图形处理器)起初只是负责图形渲染,直到NVIDIA公布了GeForce系列GPU,GPU才开始应用于通用计算;CUDA(ComputeUnifiedDeviceArchitecture,统一计算设备架构)的推出使得开发可以很快地从CPU过渡到GPU。GPU和CPU的协同工作,现已被广泛应用于石油勘探,天文计算,流体力学模拟,生物计算等领域,都取得了几倍甚至几十倍的加速比。
然而,在现有的移动终端中,GPU作为协同处理的效率提升有限,协助CPU进行处理的工作效率并不理想,因此,亟需一种更加高效率的运行方法。
发明内容
本发明所要解决的技术问题是提供一种基于移动终端GPU运行的粒子群优化方法,该方法可提高GPU的处理效率,进而提高GPU协同CPU的处理效率。
本发明的目的是通过以下技术方案来实现的:
一种基于移动终端GPU运行的粒子群优化方法,所述方法包括:
在CPU端初始化粒子群中粒子的位置和速度;
将粒子的位置和速度发送到GPU端;
根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置;
根据更新的粒子的速度和位置更新全局最优粒子;
若当前的全局最优粒子满足迭代条件,则GPU端将最优粒子发送至CPU端。
优选的,所述粒子群的计算模型为星型拓扑结构,所述星型拓扑结构中,所述粒子群中的每个粒子均相互连接。
优选的,所述粒子群的计算模型为环型拓扑结构,所述环形拓扑结构中,所述粒子群中的每个粒子与其相邻的粒子连接。
优选的,所述粒子群中的粒子的速度和位置更新方程如下:
vij(t+1)=ωvij(t)+c1*r1*(pij(t)-xij(t))+c2*r2*(pgj(t)-xij(t))
xij(t+1)=xij(t)+vij(t+1)
其中,vi(t)=(vi1,vi2,...,vid)为第i个粒子在第t代的速度,vij(t)表示第i个粒子的第j维速度;w为惯性权重0.2~0.9;c1为认知系数,c2为社会系数;r1和r2为服从均匀分布的[0,1]之间的随机数;pi(t)=(pi1,pi2,...,pid)为第i个粒子的历史最优位置;xi(t)=(xi1,xi2,...,xid)为第i个粒子在第t代的位置;pgj(t)=(pg1,pg2,...,pgd)为群体历史最优位置。
优选的,所述方法基于CUDA编程模型运行,所述CUDA编程模型包括:线程、线程块以及线程格;每个线程都有一个唯一的线程编号和一个私有寄存器;每个线程块拥有一个共享存储器,每个线程块中所有线程均可访问共享内存,至少两个线程块构成一个线程格。
优选的,所述历史最优粒子和全局最优粒子通过所述CUDA编程模型获取,在CUDA编程模型上获取历史最优时,一个线程对应一个粒子,各线程同时调用预设函数。
优选的,所述更新粒子的速度和位置通过所述CUDA编程模型完成,更新位置和速度时,一个线程对应粒子的每一维;均按线程索引来读取数据并处理。
优选的,所述粒子群优化方法的运行效率和收敛性的确定包括使用以下七种函数的一种或几种确定:
(1)Sphere函数
(2)Ackley函数
(3)Schwefel函数
(4)Levy函数
(5)Griewank函数
(6)Rastrigin函数
(7)Rosenbrock函数
其中D表示粒子的维数,xi的范围表示搜索空间。
优选的,若当前的全局最优粒子不满足迭代条件,则进入到所述根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置的步骤。
本发明还公开一种基于移动终端GPU运行的粒子群优化系统,所述系统包括:
初始化模块,用于在CPU端初始化粒子群中粒子的位置和速度;
发送模块,用于将粒子的位置和速度发送到GPU端;
第一更新模块,根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置;
第二更新模块,根据更新的粒子的速度和位置更新全局最优粒子;
判定模块,用于若当前的全局最优粒子满足迭代条件,则GPU端将最优粒子发送至CPU端。
现有技术中,GPU作为协同处理器让CPU的运算能力增强,但是GPU的性能受限算法结构,没有得到最大限度的发挥,本实施例中,利用粒子群优化算法提高GPU的运算速度和运算效率,大大提高GPU的性能,从而大大提高了GPU作为协同处理器协助CPU进行运算的能力,提高了整体的运算能力和运算效率,特别的,在移动终端中,因为受限于体积和散热等,通常移动终端中使用的CPU计算效率都较低,而将本方法运用在移动终端如手机、平板等电子设备上,能够显著的提高移动终端计算效率,让移动终端的运算速度和效率得到大幅度提高,也可以解决在传统移动终端CPU平台运行效率低及收敛速度慢的问题。
附图说明
图1是本发明实施例一的基于移动终端GPU运行的粒子群优化方法的流程图;
图2是本发明实施例一另一种方式的基于移动终端GPU运行的粒子群优化方法的流程图;
图3是本发明实施例的星型拓扑结构和环型拓扑结构示意图;
图4是本发明实施例的CUDA编程模型示意图;
图5是本发明实施例的PSO方法的寻优流程图;
图6是本发明实施例的星型拓扑结构和环型拓扑结构PSO方法的CPU和GPU+CPU上的函数f1收敛曲线图;
图7是本发明实施例的星型拓扑结构和环型拓扑结构PSO方法的CPU和GPU+CPU上的函数f2收敛曲线图;
图8是本发明实施例二的基于移动终端GPU运行的粒子群优化系统的示意图;
图9是本发明实施例二另一种方式的基于移动终端GPU运行粒子群优化系统的示意图。
其中:201、初始化模块,202、发送模块,203、第一更新模块,204、第二更新模块,205、判定模块,206、输出模块。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备或客户端包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(CloudComputing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述用户设备、客户端、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图和较佳的实施例对本发明作进一步说明。
其中,本实施例的方法主要通过移动终端或电子设备来实现;移动终端或电子设备如手机、平板等,也可以具有网络功能,可以与其他终端进行通讯连接,但并限于上述几种。
需要说明的是,移动终端或电子设备仅为举例,其他现有的或今后可能出现的网络设备和客户端如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。另外,本发明中的实施例仅为举例说明,实施例与实施例之间可以自由组合,多个实施例之间也可以组合,只要能够实现本发明中的效果即可。
下面结合附图和较佳的实施例对本发明作进一步说明。
实施例一
如图1所示,本实施例中公开一种基于移动终端GPU运行的粒子群优化方法,所述方法包括:
S101、在CPU端初始化粒子群中粒子的位置和速度;
S102、将粒子的位置和速度发送到GPU端;
S103、根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置;
S104、根据更新的粒子的速度和位置更新全局最优粒子;
S105、若当前的全局最优粒子满足迭代条件,则GPU端将最优粒子发送至CPU端。
现有技术中,GPU作为协同处理器让CPU的运算能力增强,但是GPU的性能受限算法结构,没有得到最大限度的发挥,本实施例中,利用粒子群优化算法提高GPU的运算速度和运算效率,大大提高GPU的性能,从而大大提高了GPU作为协同处理器协助CPU进行运算的能力,提高了整体的运算能力和运算效率,特别的,在移动终端中,因为受限于体积和散热等,通常移动终端中使用的CPU计算效率都较低,而将本方法运用在移动终端如手机、平板等电子设备上,能够显著的提高移动终端计算效率,让移动终端的运算速度和效率得到大幅度提高,也可以解决在传统移动终端CPU平台运行效率低及收敛速度慢的问题。
本实施例中,根据一个示例,如图2所示,若当前的全局最优粒子不满足迭代条件,则进入到所述步骤S103,根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置,接下来继续进行步骤S104、S105,直到当前的全局最优粒子满足迭代条件。迭代条件可以是粒子的速度达到预设的阈值,或者位置到达预设条件,或者速度和位置都达到预设的条件等。另外,本实施例中,在GPU端将最优粒子发送至CPU端后,CPU端即可将结果进行输出。具体阐述如下,一种基于移动终端GPU运行的粒子群优化方法,所述方法包括:
S101、在CPU端初始化粒子群中粒子的位置和速度;
S102、将粒子的位置和速度发送到GPU端;
S103、根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置;
S104、根据更新的粒子的速度和位置更新全局最优粒子;
S105、判断当前的全局最优粒子是否满足迭代条件,若满足则GPU端将最优粒子发送至CPU端;否则进入到所述步骤S103进行下一次迭代;
S106、将发送至CPU端的最优粒子进行输出。
根据另一个示例,如图3所示,为提高PSO(ParticleSwarmOptimization,粒子群优化算法)方法的性能,本发明选取星型拓扑结构和环型拓扑结构中的其中一种或两种。图中左边的是星型拓扑结构,右边是环型拓扑结构。星型PSO方法中,粒子群中所有粒子全部相联,即所述星型拓扑结构中,粒子群中的每个粒子均相互连接,每个粒子都可以同除自己以外的其他所有粒子通信,以共享整个粒子群的最佳解。所述环形拓扑结构中,环形拓扑结构中粒子群中的每个粒子跟它的n(n≥1)个邻居粒子相通信,即环形拓扑结构中,粒子群中的每个粒子与其相邻的粒子连接,每个粒子向邻域内的最优位置靠拢,来更新自己的位置,每个粒子只是共享所在邻域内的最优解。
现有的PSO方法易陷入局部极值的缺点,为了改进PSO方法,包括参数调整,改变搜索网络空间,混合其它算法等。PSO方法性能对网络结构具有强烈的依赖性,因此拓扑结构的改变对PSO算法的收敛性有重要作用,本实施例中对环型拓扑结构和星型拓扑结构的PSO方法进行了改进,结合PSO算法的并行性,解决在传统移动终端CPU平台运行效率低及收敛速度慢的技术问题,对于星型拓扑结构PSO算法,GPU显著地加快了粒子群的收敛速度。
根据另一个示例,如图4所示,本实施例中粒子群优化算法是在基于CUDA(ComputeUnifiedDeviceArchitecture,统一计算设备架构)编程模型的,所述CUDA编程模型包括:线程、线程块以及线程格;每个线程都有一个唯一的线程编号和一个私有寄存器;每个线程块拥有一个共享存储器,每个线程块中所有线程均可访问共享内存,至少两个线程块构成一个线程格。所述历史最优粒子和全局最优粒子通过所述CUDA编程模型获取,在CUDA编程模型上获取历史最优时,一个线程对应一个粒子,各线程同时调用预设函数。所述更新粒子的速度和位置通过所述CUDA编程模型完成,更新位置和速度时,一个线程对应粒子的每一维;均按线程索引来读取数据并处理。
在CUDA编程模型中,CPU作为主机,称为Host端,GPU作为协处理器,称为Device端,通过执行大量线程来处理任务,二者各自拥有独立的存储器,和各自的编译器。一个完整的CUDA编程模型。Kernel并行处理部分基于单指令多线程(SingleInstructionMultipleThread,SIMD)计算模型,CUDA利用三个向量将线程组织成为三个不同的层次:线程(thread)、线程块(block)以及线程格(grid)。thread和block的启动数量由用户设置,本实施例中启动了16*16个线程块,每个块中启动了16*16个线程。每个线程都有一个唯一的线程编号和一个容量较小但速度快的私有寄存器;每个线程块拥有一个共享存储器,块中所有线程均可快速访问共享内存,若干个块构成一个线程格。
PSO算法寻优过程,各粒子只是在更新全局最优时互相交换信息,其他步骤均相互独立。在CUDA上获取历史最优时,一个线程对应一个粒子,各线程同时调用预设函数;更新位置和速度时,一个线程对应粒子的每一维;均按线程索引来读取数据并处理。
CUDA编程模型中,主机端初始化粒子的位置和速度,将数据从CPU复制到GPU上,在设备上迭代寻优,最后将最优解复制到CPU输出。GPU性能虽然出色,但其发挥在很大程度上受限于算法结构。在CUDA的使用中,数据结构和对内存的访问对GPU性能的发挥有极大的影响。性能优化主要从四个方面考虑:1)最大优化并行执行;2)优化内存以获得最大的内存带宽;3)优化指令使用以获得最大指令的吞吐量;4)线程块和线程的数量设置。
根据另一个示例,标准PSO方法的速度和位置更新方程如下:
vij(t+1)=ωvij(t)+c1*r1*(pij(t)-xij(t))+c2*r2*(pgj(t)-xij(t))(1)
xij(t+1)=xij(t)+vij(t+1)(2)
其中,vi(t)=(vi1,vi2,...,vid)为第i个粒子在第t代的速度,vij(t)表示第i个粒子的第j维速度;w为惯性权重0.2~0.9,本实施例中取w=0.5;c1为认知系数,c2为社会系数,常取c1=c2=2;r1和r2为服从均匀分布的[0,1]之间的随机数;pi(t)=(pi1,pi2,...,pid)为第i个粒子的历史最优位置;xi(t)=(xi1,xi2,...,xid)为第i个粒子在第t代的位置;pgj(t)=(pg1,pg2,...,pgd)为群体历史最优位置,PSO方法的寻优过程如图5所示。
本实施例中,设计的并行PSO算法,用以下几个常用benchmark函数进行了测试,以分析和计算,便于比较各种方法的运行速度和运行效率,同时,粒子群优化方法的运行效率和收敛性的确定可以使用以下七种函数的一种或几种确定。其中D表示粒子的维数,xi的范围表示搜索空间,本实施例主要从计算效率和收敛性两方面与串行PSO算法作了比较分析。
(1)Sphere函数
(2)Ackley函数
(3)Schwefel函数
(4)Levy函数
(5)Griewank函数
(6)Rastrigin函数
(7)Rosenbrock函数
星型结构PSO算法在CPU和CPU+GPU上的运行时间如表一所示,测试时令N=1000,D=50,M=5000。环型结构PSO算法在CPU和CPU+GPU上的运行时间如表二所示,测试时令N=1000,D=50,M=5000。
表一N=1000,D=50,M=5000时星型结构PSO算法求解函数f1~f7的时间
表二N=1000,D=50,M=5000时环型结构PSO算法求解函数f1~f7的时间
计算效率和收敛性对比
上述表一和表二可以看到计算效率的对比,当各参数设置一致的情况下,比较两算法性能,对比表一和表二中加速比部分,可以看到星型算法要好于环型算法。在CPU上的运行时间,二种算法差距并不明显,而在CPU+GPU上,星型算法效率明显高于环型算法。
图6和图7描绘了两种拓扑结构的PSO算法分别在CPU和GPU上求解f1和f2收敛曲线,图6和图7可以看出收敛性的对比,参数取值情况为:N=500,D=50,M从0逐渐增大。
实现了环型和星型拓扑结构的PSO算法在统一计算设备架构(CUDA,ComputeUnifiedDeviceArchitecture)上的寻优过程,通过几个benchmark函数的求解,对比了与在手机CPU上的计算时间和计算结果。本发明结果显示,两种拓扑结构的PSO方法在计算效率均高于CPU,对于星型结构PSO方法,GPU显著地加快粒子群的收敛速度。
随着人类物质生活水平的提高,计算机技术的应用日益普遍,在解决最优化问题的过程中,最优化理论和算法得以迅速发展,形成了如今一系列经典的传统优化理论,广泛应用于科学研究、工程技术、分子生物学、控制系统、金融、交通运输、网络通信、能源等众多领域。
实施例二
如图8所示,本实施例中公开一种基于移动终端GPU运行的粒子群优化系统,该系统用于运行实施例一中的方法,所述系统包括:
初始化模块201,用于在CPU端初始化粒子群中粒子的位置和速度;
发送模块202,用于将粒子的位置和速度发送到GPU端;
第一更新模块203,根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置;
第二更新模块204,根据更新的粒子的速度和位置更新全局最优粒子;
判定模块205,用于若当前的全局最优粒子满足迭代条件,则GPU端将最优粒子发送至CPU端。
现有技术中,GPU作为协同处理器让CPU的运算能力增强,但是GPU的性能受限算法结构,没有得到最大限度的发挥,本实施例中,利用粒子群优化算法提高GPU的运算速度和运算效率,大大提高GPU的性能,从而大大提高了GPU作为协同处理器协助CPU进行运算的能力,提高了整体的运算能力和运算效率,特别的,在移动终端中,因为受限于体积和散热等,通常移动终端中使用的CPU计算效率都较低,而将本方法运用在移动终端如手机、平板等电子设备上,能够显著的提高移动终端计算效率,让移动终端的运算速度和效率得到大幅度提高,也可以解决在传统移动终端CPU平台运行效率低及收敛速度慢的问题。
本实施例中,根据一个示例,如图9所示,判定模块205还用于,若当前的全局最优粒子不满足迭代条件,则进入到第一更新模块203,根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置,接下来继续进行入到第二更新模块204、判定模块205,直到当前的全局最优粒子满足迭代条件。迭代条件可以是粒子的速度达到预设的阈值,或者位置到达预设条件,或者速度和位置都达到预设的条件等。本实施例中,所示系统还包括输出模块206,输出模块206用于在GPU端将最优粒子发送至CPU端后,CPU端即可将结果进行输出。具体阐述如下,一种基于移动终端GPU运行的粒子群优化系统,该系统用于运行实施例一中的方法,所述系统包括:
初始化模块201,用于在CPU端初始化粒子群中粒子的位置和速度;
发送模块202,用于将粒子的位置和速度发送到GPU端;
第一更新模块203,根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置;
第二更新模块204,根据更新的粒子的速度和位置更新全局最优粒子;
判定模块205,用于判断当前的全局最优粒子是否满足迭代条件,若满足则GPU端将最优粒子发送至CPU端;否则进入到所述第一更新模块203进行下一次迭代;
输出模块106、将发送至CPU端的最优粒子进行输出。
根据另一个示例,为提高PSO(ParticleSwarmOptimization,粒子群优化算法)方法的性能,本发明选取星型拓扑结构和环型拓扑结构中的其中一种或两种,可结合图3所示,图中左边的是星型拓扑结构,右边是环型拓扑结构。。星型PSO方法中,粒子群中所有粒子全部相联,即所述星型拓扑结构中,粒子群中的每个粒子均相互连接,每个粒子都可以同除自己以外的其他所有粒子通信,以共享整个粒子群的最佳解。所述环形拓扑结构中,环形拓扑结构中粒子群中的每个粒子跟它的n(n≥1)个邻居粒子相通信,即环形拓扑结构中,粒子群中的每个粒子与其相邻的粒子连接,每个粒子向邻域内的最优位置靠拢,来更新自己的位置,每个粒子只是共享所在邻域内的最优解。
现有的PSO方法易陷入局部极值的缺点,为了改进PSO方法,包括参数调整,改变搜索网络空间,混合其它算法等。PSO方法性能对网络结构具有强烈的依赖性,因此拓扑结构的改变对PSO算法的收敛性有重要作用,本实施例中对环型拓扑结构和星型拓扑结构的PSO方法进行了改进,结合PSO算法的并行性,解决在传统移动终端CPU平台运行效率低及收敛速度慢的技术问题,对于星型拓扑结构PSO算法,GPU显著地加快了粒子群的收敛速度。
根据另一个示例,可结合图4所示,本实施例中粒子群优化算法是在基于CUDA(ComputeUnifiedDeviceArchitecture,统一计算设备架构)编程模型的,所述CUDA编程模型包括:线程、线程块以及线程格;每个线程都有一个唯一的线程编号和一个私有寄存器;每个线程块拥有一个共享存储器,每个线程块中所有线程均可访问共享内存,至少两个线程块构成一个线程格。所述历史最优粒子和全局最优粒子通过所述CUDA编程模型获取,在CUDA编程模型上获取历史最优时,一个线程对应一个粒子,各线程同时调用预设函数。所述更新粒子的速度和位置通过所述CUDA编程模型完成,更新位置和速度时,一个线程对应粒子的每一维;均按线程索引来读取数据并处理。
在CUDA编程模型中,CPU作为主机,称为Host端,GPU作为协处理器,称为Device端,通过执行大量线程来处理任务,二者各自拥有独立的存储器,和各自的编译器。如图3所示,一个完整的CUDA编程模型。Kernel并行处理部分基于单指令多线程(SingleInstructionMultipleThread,SIMD)计算模型,CUDA利用三个向量将线程组织成为三个不同的层次:线程(thread)、线程块(block)以及线程格(grid)。thread和block的启动数量由用户设置,本实施例中启动了16*16个线程块,每个块中启动了16*16个线程。每个线程都有一个唯一的线程编号和一个容量较小但速度快的私有寄存器;每个线程块拥有一个共享存储器,块中所有线程均可快速访问共享内存,若干个块构成一个线程格。
PSO算法寻优过程,各粒子只是在更新全局最优时互相交换信息,其他步骤均相互独立。在CUDA上获取历史最优时,一个线程对应一个粒子,各线程同时调用预设函数;更新位置和速度时,一个线程对应粒子的每一维;均按线程索引来读取数据并处理。
CUDA编程模型中,主机端初始化粒子的位置和速度,将数据从CPU复制到GPU上,在设备上迭代寻优,最后将最优解复制到CPU输出。GPU性能虽然出色,但其发挥在很大程度上受限于算法结构。在CUDA的使用中,数据结构和对内存的访问对GPU性能的发挥有极大的影响。性能优化主要从四个方面考虑:1)最大优化并行执行;2)优化内存以获得最大的内存带宽;3)优化指令使用以获得最大指令的吞吐量;4)线程块和线程的数量设置。
根据另一个示例,标准PSO方法的速度和位置更新方程如下:
vij(t+1)=ωvij(t)+c1*r1*(pij(t)-xij(t))+c2*r2*(pgj(t)-xij(t))(1)
xij(t+1)=xij(t)+vij(t+1)(2)
其中,vi(t)=(vi1,vi2,...,vid)为第i个粒子在第t代的速度,vij(t)表示第i个粒子的第j维速度;w为惯性权重0.2~0.9,本实施例中取w=0.5;c1为认知系数,c2为社会系数,常取c1=c2=2;r1和r2为服从均匀分布的[0,1]之间的随机数;pi(t)=(pi1,pi2,...,pid)为第i个粒子的历史最优位置;xi(t)=(xi1,xi2,...,xid)为第i个粒子在第t代的位置;pgj(t)=(pg1,pg2,...,pgd)为群体历史最优位置,PSO方法的寻优过程可以结合图5所示。
本实施例中,设计的并行PSO算法,用以下几个常用benchmark函数进行了测试,以分析和计算,便于比较各种方法的运行速度和运行效率,同时,粒子群优化方法的运行效率和收敛性的确定可以使用以下七种函数的一种或几种确定。其中D表示粒子的维数,xi的范围表示搜索空间,本实施例主要从计算效率和收敛性两方面与串行PSO算法作了比较分析,具体函数如下:
(1)Sphere函数
(2)Ackley函数
(3)Schwefel函数
(4)Levy函数
(5)Griewank函数
(6)Rastrigin函数
(7)Rosenbrock函数
星型结构PSO算法在CPU和CPU+GPU上的运行时间如表一所示,测试时令N=1000,D=50,M=5000。环型结构PSO算法在CPU和CPU+GPU上的运行时间如表二所示,测试时令N=1000,D=50,M=5000。
表一N=1000,D=50,M=5000时星型结构PSO算法求解函数f1~f7的时间
表二N=1000,D=50,M=5000时环型结构PSO算法求解函数f1~f7的时间
计算效率和收敛性对比
上述表一和表二可以看到计算效率的对比,当各参数设置一致的情况下,比较两算法性能,对比表一和表二中加速比部分,可以看到星型算法要好于环型算法。在CPU上的运行时间,二种算法差距并不明显,而在CPU+GPU上,星型算法效率明显高于环型算法。
可结合图6和图7描绘了两种拓扑结构的PSO算法分别在CPU和GPU上求解f1和f2收敛曲线,图6和图7可以看出收敛性的对比,参数取值情况为:N=500,D=50,M从0逐渐增大。
实现了环型和星型拓扑结构的PSO算法在统一计算设备架构(CUDA,ComputeUnifiedDeviceArchitecture)上的寻优过程,通过几个benchmark函数的求解,对比了与在手机CPU上的计算时间和计算结果。本发明结果显示,两种拓扑结构的PSO方法在计算效率均高于CPU,对于星型结构PSO方法,GPU显著地加快粒子群的收敛速度。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种基于移动终端GPU运行的粒子群优化方法,其特征在于,所述方法包括:
在CPU端初始化粒子群中粒子的位置和速度;
将粒子的位置和速度发送到GPU端;
根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置;
根据更新的粒子的速度和位置更新全局最优粒子;
若当前的全局最优粒子满足迭代条件,则GPU端将最优粒子发送至CPU端。
2.根据权利要求1所述的一种方法,其特征在于,所述粒子群的计算模型为星型拓扑结构,所述星型拓扑结构中,所述粒子群中的每个粒子均相互连接。
3.根据权利要求1所述的一种方法,其特征在于,所述粒子群的计算模型为环型拓扑结构,所述环形拓扑结构中,所述粒子群中的每个粒子与其相邻的粒子连接。
4.根据权利要求1所述的一种方法,其特征在于,所述粒子群中的粒子的速度和位置更新方程如下:
vij(t+1)=ωvij(t)+c1*r1*(pij(t)-xij(t))+c2*r2*(pgj(t)-xij(t))
xij(t+1)=xij(t)+vij(t+1)
其中,vi(t)=(vi1,vi2,...,vid)为第i个粒子在第t代的速度,vij(t)表示第i个粒子的第j维速度;w为惯性权重0.2~0.9;c1为认知系数,c2为社会系数;r1和r2为服从均匀分布的[0,1]之间的随机数;pi(t)=(pi1,pi2,...,pid)为第i个粒子的历史最优位置;xi(t)=(xi1,xi2,...,xid)为第i个粒子在第t代的位置;pgj(t)=(pg1,pg2,...,pgd)为群体历史最优位置。
5.根据权利要求1所述的一种方法,其特征在于,所述方法基于CUDA编程模型运行,所述CUDA编程模型包括:线程、线程块以及线程格;每个线程都有一个唯一的线程编号和一个私有寄存器;每个线程块拥有一个共享存储器,每个线程块中所有线程均可访问共享内存,至少两个线程块构成一个线程格。
6.根据权利要求5所述的一种方法,其特征在于,所述历史最优粒子和全局最优粒子通过所述CUDA编程模型获取,在CUDA编程模型上获取历史最优时,一个线程对应一个粒子,各线程同时调用预设函数。
7.根据权利要求5所述的一种方法,其特征在于,所述更新粒子的速度和位置通过所述CUDA编程模型完成,更新位置和速度时,一个线程对应粒子的每一维;均按线程索引来读取数据并处理。
8.根据权利要求1所述的一种方法,其特征在于,所述粒子群优化方法的运行效率和收敛性的确定包括使用以下七种函数的一种或几种确定:
(1)Sphere函数
(2)Ackley函数
(3)Schwefel函数
(4)Levy函数
(5)Griewank函数
(6)Rastrigin函数
(7)Rosenbrock函数
其中D表示粒子的维数,xi的范围表示搜索空间。
9.根据权利要求1所述的一种方法,其特征在于,若当前的全局最优粒子不满足迭代条件,则进入到所述根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置的步骤。
10.一种基于移动终端GPU运行的粒子群优化系统,其特征在于,所述系统包括:
初始化模块,用于在CPU端初始化粒子群中粒子的位置和速度;
发送模块,用于将粒子的位置和速度发送到GPU端;
第一更新模块,根据获取的历史最优粒子和全局最优粒子更新粒子的速度和位置;
第二更新模块,根据更新的粒子的速度和位置更新全局最优粒子;
判定模块,用于若当前的全局最优粒子满足迭代条件,则GPU端将最优粒子发送至CPU端。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610040738.XA CN105718998A (zh) | 2016-01-21 | 2016-01-21 | 一种基于移动终端gpu运行的粒子群优化方法和系统 |
PCT/CN2016/103892 WO2017124809A1 (zh) | 2016-01-21 | 2016-10-29 | 一种基于移动终端gpu运行的粒子群优化方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610040738.XA CN105718998A (zh) | 2016-01-21 | 2016-01-21 | 一种基于移动终端gpu运行的粒子群优化方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105718998A true CN105718998A (zh) | 2016-06-29 |
Family
ID=56153722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610040738.XA Pending CN105718998A (zh) | 2016-01-21 | 2016-01-21 | 一种基于移动终端gpu运行的粒子群优化方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105718998A (zh) |
WO (1) | WO2017124809A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502632A (zh) * | 2016-10-28 | 2017-03-15 | 武汉大学 | 一种基于自适应线程束的gpu并行粒子群优化方法 |
WO2017124809A1 (zh) * | 2016-01-21 | 2017-07-27 | 上海斐讯数据通信技术有限公司 | 一种基于移动终端gpu运行的粒子群优化方法和系统 |
CN108564213A (zh) * | 2018-04-10 | 2018-09-21 | 中国水利水电科学研究院 | 一种基于gpu加速的并联水库群防洪优化调度方法 |
CN108845828A (zh) * | 2018-05-29 | 2018-11-20 | 深圳市国微电子有限公司 | 一种协处理器、矩阵运算加速方法及系统 |
CN111815749A (zh) * | 2019-09-03 | 2020-10-23 | 厦门雅基软件有限公司 | 粒子计算方法、装置、电子设备及计算机可读存储介质 |
CN113362425A (zh) * | 2021-06-18 | 2021-09-07 | 中科三清科技有限公司 | 图像融合方法、装置、电子设备及存储介质 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112183008B (zh) * | 2019-06-18 | 2022-07-22 | 北京理工大学 | 一种can总线网络的终端电阻匹配方法 |
CN111177874B (zh) * | 2019-12-17 | 2023-06-09 | 北京航空航天大学杭州创新研究院 | 一种利用gpu快速设计航路网络拓扑结构的方法 |
CN111337050B (zh) * | 2020-03-20 | 2023-03-28 | 深圳市汇泰科电子有限公司 | 一种基于多条件融合的零速判断条件及计步方法 |
CN111858029B (zh) * | 2020-06-16 | 2023-06-27 | 国网福建省电力有限公司信息通信分公司 | 基于离散粒子群的Storm集群负载均衡方法及系统 |
CN114078177A (zh) * | 2020-08-10 | 2022-02-22 | 北京字节跳动网络技术有限公司 | 动态流体效果处理方法、装置、电子设备和可读介质 |
CN112395090B (zh) * | 2020-11-19 | 2023-05-30 | 华侨大学 | 一种移动边缘计算中服务放置的智能混合优化方法 |
CN113011097B (zh) * | 2021-03-26 | 2024-03-22 | 云南电网有限责任公司电力科学研究院 | 一种多种群自适应协作优化方法 |
CN114172541B (zh) * | 2021-12-02 | 2023-04-07 | 广东电网有限责任公司 | 一种电力线通信网络的能耗均衡控制方法、装置及系统 |
CN114356526A (zh) * | 2022-01-05 | 2022-04-15 | 青岛农业大学 | 基于人工蜂群算法的多维函数优化加速方法 |
CN114944999B (zh) * | 2022-04-08 | 2023-10-10 | 北京遥测技术研究所 | 一种基于gpu和粒子群优化算法的高速路由通信系统及方法 |
CN118519789B (zh) * | 2024-07-24 | 2024-10-01 | 山东浪潮科学研究院有限公司 | Gpgpu并行数据处理优化方法、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100076913A1 (en) * | 2008-09-24 | 2010-03-25 | Nec Laboratories America, Inc. | Finding communities and their evolutions in dynamic social network |
CN102999756A (zh) * | 2012-11-09 | 2013-03-27 | 重庆邮电大学 | 基于gpu实现pso-svm对道路标志的识别方法 |
CN103646281A (zh) * | 2013-12-13 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种基于多种群的粒子群算法模型 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100354894C (zh) * | 2005-11-10 | 2007-12-12 | 北京航空航天大学 | 基于图形处理单元gpu的粒子系统实现方法 |
CN101685530B (zh) * | 2008-09-23 | 2011-12-14 | 中国科学院过程工程研究所 | 一种在gpu上利用多体作用模型进行粒子计算的方法 |
CN101727653B (zh) * | 2008-10-31 | 2012-03-07 | 中国科学院过程工程研究所 | 一种基于图形处理器的多组分系统离散模拟计算方法 |
CN102243770B (zh) * | 2011-07-19 | 2013-02-20 | 南昌航空大学 | 一种基于osg的虚拟海战场真实感图形快速绘制方法 |
CN102982506A (zh) * | 2012-11-13 | 2013-03-20 | 沈阳信达信息科技有限公司 | 基于gpu的粒子系统优化 |
CN105718998A (zh) * | 2016-01-21 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种基于移动终端gpu运行的粒子群优化方法和系统 |
-
2016
- 2016-01-21 CN CN201610040738.XA patent/CN105718998A/zh active Pending
- 2016-10-29 WO PCT/CN2016/103892 patent/WO2017124809A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100076913A1 (en) * | 2008-09-24 | 2010-03-25 | Nec Laboratories America, Inc. | Finding communities and their evolutions in dynamic social network |
CN102999756A (zh) * | 2012-11-09 | 2013-03-27 | 重庆邮电大学 | 基于gpu实现pso-svm对道路标志的识别方法 |
CN103646281A (zh) * | 2013-12-13 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种基于多种群的粒子群算法模型 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017124809A1 (zh) * | 2016-01-21 | 2017-07-27 | 上海斐讯数据通信技术有限公司 | 一种基于移动终端gpu运行的粒子群优化方法和系统 |
CN106502632A (zh) * | 2016-10-28 | 2017-03-15 | 武汉大学 | 一种基于自适应线程束的gpu并行粒子群优化方法 |
CN106502632B (zh) * | 2016-10-28 | 2019-01-18 | 武汉大学 | 一种基于自适应线程束的gpu并行粒子群优化方法 |
CN108564213A (zh) * | 2018-04-10 | 2018-09-21 | 中国水利水电科学研究院 | 一种基于gpu加速的并联水库群防洪优化调度方法 |
CN108564213B (zh) * | 2018-04-10 | 2022-05-13 | 中国水利水电科学研究院 | 一种基于gpu加速的并联水库群防洪优化调度方法 |
CN108845828A (zh) * | 2018-05-29 | 2018-11-20 | 深圳市国微电子有限公司 | 一种协处理器、矩阵运算加速方法及系统 |
CN111815749A (zh) * | 2019-09-03 | 2020-10-23 | 厦门雅基软件有限公司 | 粒子计算方法、装置、电子设备及计算机可读存储介质 |
CN113362425A (zh) * | 2021-06-18 | 2021-09-07 | 中科三清科技有限公司 | 图像融合方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2017124809A1 (zh) | 2017-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718998A (zh) | 一种基于移动终端gpu运行的粒子群优化方法和系统 | |
Li et al. | Quantum supremacy circuit simulation on Sunway TaihuLight | |
Khorasani et al. | CuSha: vertex-centric graph processing on GPUs | |
Cano et al. | High performance evaluation of evolutionary-mined association rules on GPUs | |
Xia et al. | A high-performance cellular automata model for urban simulation based on vectorization and parallel computing technology | |
US20140136555A1 (en) | Appliance for accelerating graph database management and analytics systems | |
Armejach et al. | Using Arm’s scalable vector extension on stencil codes | |
CN112446471B (zh) | 基于异构众核处理器的卷积加速方法 | |
Jeon et al. | Parallel exact inference on a CPU-GPGPU heterogenous system | |
Bosilca et al. | Distibuted dense numerical linear algebra algorithms on massively parallel architectures: DPLASMA | |
Afanasyev et al. | VGL: a high-performance graph processing framework for the NEC SX-Aurora TSUBASA vector architecture | |
Li et al. | Research and implementation of parallel artificial fish swarm algorithm based on ternary optical computer | |
Klemm et al. | High Performance Parallel Runtimes: Design and Implementation | |
Kogge et al. | A case for migrating execution for irregular applications | |
Xu et al. | Domino: Graph processing services on energy-efficient hardware accelerator | |
Guan et al. | Using data compression for optimizing FPGA-based convolutional neural network accelerators | |
Jiang et al. | Swiftspatial: Spatial joins on modern hardware | |
Zheng et al. | Linked data processing for human-in-the-loop in cyber–physical systems | |
Aminof et al. | Formal analysis of online algorithms | |
Sun et al. | Particle swarm algorithm: convergence and applications | |
Che et al. | Programming GPGPU graph applications with linear algebra building blocks | |
Khan et al. | Efficient compute at the edge: Optimizing energy aware data structures for emerging edge hardware | |
Zhuang et al. | Deep fusion: A software scheduling method for memory access optimization | |
Rechkalov | Partition Around Medoids Clustering on the Intel Xeon Phi Many-Core Coprocessor | |
He et al. | Efficient parallelization of multilevel fast multipole algorithm for electromagnetic simulation on many-core SW26010 processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160629 |