CN102063331B - 用于空间计算并行化的自适应负载平衡方法 - Google Patents
用于空间计算并行化的自适应负载平衡方法 Download PDFInfo
- Publication number
- CN102063331B CN102063331B CN 201110002618 CN201110002618A CN102063331B CN 102063331 B CN102063331 B CN 102063331B CN 201110002618 CN201110002618 CN 201110002618 CN 201110002618 A CN201110002618 A CN 201110002618A CN 102063331 B CN102063331 B CN 102063331B
- Authority
- CN
- China
- Prior art keywords
- startdomain
- enddomain
- space
- load
- computation
- 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.)
- Active
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明揭示了一种用于空间计算并行化的自适应负载平衡方法,包括:并行化空间计算;在计算过程中根据多台处理器之间的负载变化情况动态调整分割线以达到新的平衡;通过将划分的字空间成组的压缩或拉伸来加速空间的重新划分。并行化空间计算中,每台处理机负责计算一块划分出来的子空间,计算量来自于空间内计算对象的数目和复杂度;将每个计算对象的计算复杂度设为相同,那么计算量的大小用对象的数目来表示;在计算过程中,当计算对象在空间内移动时,就认为从一台处理机负责的空间迁移到另一台捶击负责的空间,这就造成了计算负载的变动。本发明可使负责子空间计算的多处理机之间负载快速达到平衡,同时平衡后的主机之间通讯负载小。
Description
技术领域
本发明属于高性能计算技术领域,涉及一种负载平衡方法,尤其涉及一种用于空间计算并行化的自适应负载平衡方法。
背景技术
目前,网络高性能计算的研究受到广泛重视,构建的思路和实现形式也各不相同。按照构建形式,可以将它们分为技术相关的两大类:
(1)机群计算。采用高速网络连接一组工作站或微机,组成一个机群,或在通用网上寻找一组空闲处理机形成一个动态的虚拟机群,使之在中间管理控制下提供具有很高性价比的高性能计算服务。
(2)网格计算。它的目标是通过互联网络将广域范围的计算资源、数据源和其他设备统一组织管理,形成一个可相互利用、相互合作的高性能计算环境,用户可以像登录一台超巨型机一样使用它。
网络高性能计算被广泛的应用于科学的各个领域,如气象、物理、化学等。高性能计算的一个重要问题就是计算任务如何分解并在计算过程中保持各处理器的负载平衡。在现有的方法中多以固定的任务分派方式,在运算过程中缺乏对计算负载的动态调整。这些分派和调整方法在负载分布不均或发生变化时将造成部分处理机负载过高,部分处理机闲置的现象,一方面降低了计算速度,另一方面造成了资源的浪费。
发明内容
本发明所要解决的技术问题是:提供一种用于空间计算并行化的自适应负载平衡方法,可使负责子空间计算的多处理机之间负载快速达到平衡,同时平衡后的主机之间通讯负载小。
为解决上述技术问题,本发明采用如下技术方案:
一种用于空间计算并行化的自适应负载平衡方法,所述方法包括:
并行化空间计算;
在计算过程中根据多台处理器之间的负载变化情况动态调整分割线以达到新的平衡;通过将划分的字空间成组的压缩或拉伸来加速空间的重新划分。
作为本发明的一种优选方案,并行化空间计算中,每台处理机负责计算一块划分出来的子空间,计算量来自于空间内计算对象的数目和复杂度;
将每个计算对象的计算复杂度设为相同,那么计算量的大小用对象的数目来表示;
在计算过程中,当计算对象在空间内移动时,就认为从一台处理机负责的空间迁移到另一台捶击负责的空间,这就造成了计算负载的变动。
作为本发明的一种优选方案,所述方法包括初始任务空间划分步骤:
将二叉树的非叶子节点看成空间中的分割线,叶子节点看成最终的子空间,仿真空间根据二叉树的结构逐层的划分成2N个子空间,相邻两层的分割线的方向不同;
在这种分割条件下,任何一条竖向分割线的左面区域编号小于右面区域,任何一条横向分割线上面的区域标号小于下面的区域;
对于由2N个子区域构成大小为X*Y的仿真空间,设每一个区域的编号由二进制表示成a1、a2、…、aN,则其初始位置,即每个区域的左上角表示如下:
其中,i为奇数,j为偶数;a1、a2、…、aN是每个单元编码的二进制序列,N是这个序列的长度,X和Y是整个空间的宽度和高度。
作为本发明的一种优选方案,所述方法进一步包括负载平衡步骤:
S21、计算整体不平衡度;
S22、判断整体不平衡度是否达到设定要求;若是结束此过程,否则转向步骤S23;
S23、判断是否是最底层定义域DOMAIN;若是转至步骤S21,否则转向步骤S24;
S24、调整分割线一侧的第一部分,而后调整分割线另一侧的第二部分。
作为本发明的一种优选方案,所述负载平衡步骤具体为:
设所有最小的子区域,即所有叶子节点的数目为DOMAIN_NUM,DOMAIN_NUM=2N,N正整数;
对于编码范围为StartDomain到EndDomain的子区域范围,将分成(StartDomain~(EndDomain+StartDomain)/2),和((EndDomain+StartDomain)/2+1~EndDomain)两部分;其中,EndDomain-StartDomain+1==2N,N为正整数;
如果:Log(DOMAIN_NUM/(EndDomain-StartDomain+1))%2=1;则代表两部分将在水平方向上进行调整,否则将在竖直方向上进行调整。
作为本发明的一种优选方案,对两部分的负载差异度定义如下:
设两个区域的X方向界限为(MinX1,MaxX1),(MinX2,MaxX2),Y方向上的界限为(MinY1,MaxY1),(MinY2,MaxY2)那么分割线的调整值为:
根据分割线的调整值offset分别计算对于两边的调整比率per1、per2为:
per1=offset/(MaxX1-MinX1)
per2=offset/(MaxX2-MinX2)
根据调整比率per1、per2,两边区域各自调整对所有子区域进行伸缩。
本发明的有益效果在于:本发明提出的用于空间计算并行化的自适应负载平衡方法,可使负责子空间计算的多处理机之间负载快速达到平衡,同时平衡后的主机之间通讯负载小。通过将划分的字空间成组的压缩或拉伸来加速空间的重新划分;在计算过程中根据多台处理器之间的负载变化情况动态调整分割线以达到新的平衡的方法。
附图说明
图1为基于树形结构的仿真空间分割的示意图。
图2为负载平衡算法的流程图。
图3为划分、平衡算法运行结果示意图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例一
本发明揭示了一种面向空间计算的空间分割方法,并在计算过程中根据多台处理器之间的负载变化情况动态调整分割线以达到新的平衡的方法。其特征是通过将划分的字空间成组的压缩或拉伸来加速空间的重新划分。
并行化空间计算中,每台处理机负责计算一块划分出来的子空间,计算量来自于空间内计算对象的数目和复杂度,不妨将每个计算对象的计算复杂度设为相同,那么计算量的大小可以用对象的数目来表示。在计算过程中,当计算对象在空间内移动时,就有可能从一台处理机负责的空间迁移到另一台捶击负责的空间,这就造成了计算负载的变动。
【初始任务空间的划分】
如图1所示,将二叉树的非叶子节点看成空间中的分割线,叶子节点看成最终的子空间,仿真空间根据二叉树的结构逐层的划分成2N个子空间,相邻两层的分割线的方向不同,如L0为划分(0,1,2,3)和(4,5,6,7)的竖直分割线;L1为划分(0,1)和(2,3)的水平分割线。
在这种分割条件下,任何一条竖向分割线的左面区域编号小于右面区域,任何一条横向分割线上面的区域标号小于下面的区域。对于由2N个子区域构成大小为X*Y(不妨设X>Y)的仿真空间,设每一个区域的编号由二进制表示成a1a2…aN,则其初始位置(每个区域的左上角)表示如下:
在这里,a1a2…aN是每个单元编码的二进制序列,N是这个序列的长度,X和Y是整个空间的宽度和高度。这种编码方式和四叉树编码方式很相似,但是,通常来说四叉树编码用来分割、编码、压缩文件,所有的分割线一旦确定将固定而不移动,在本发明中的分隔线则不同。
【负载平衡算法】
由上面的初始任务划分及区域的编码,不难发现这有利于递归算法的设计。对于子区域间的负载平衡我们仍采用“压力差”的调整思想,以图1为例,对于分割线L0而言,分割的两个子区域为(0,1,2,3)和(4,5,6,7),一个子区域可以由多个子区域构成。本发明介绍的算法采用的是根据分割线两边子区域负载差异,对两个子区域整体伸缩从而调整负载的方法。
根据上面对子区域的编码,对分割线两边区域的伸缩就转化为特定编码范围的子区域的对比和伸缩问题。
设所有最小的子区域(即所有叶子节点)数目为DOMAIN_NUM(DOMAIN_NUM=2N,N正整数)对于编码范围为StartDomain到EndDomain的子区域范围(EndDomain-StartDomain+1==2N,N为正整数),将分成(StartDomain~(EndDomain+StartDomain)/2),和((EndDomain+StartDomain)/2+1~EndDomain)两部分,如果:
Log(DOMAIN_NUM/(EndDomain-StartDomain+1))%2=1
则代表两部分将在水平方向上进行调整,否则将在竖直方向上进行调整。
我们对两部分的负载差异度定义如下:
设两个区域的X方向界限为(MinX1,MaxX1),(MinX2,MaxX2)Y方向上的界限为(MinY1,MaxY1),(MinY2,MaxY2)那么分割线的调整值为:
根据分割线的调整值offset分别计算对于两边的调整比率per1、per2为:
per1=offset/(MaxX1-MinX1)
per2=offset/(MaxX2-MinX2)
根据调整比率per1、per2,两边区域各自调整对所有子区域进行伸缩。
算法的流程如图2所示;所述负载平衡算法包括:
S21、计算整体不平衡度;
S22、判断整体不平衡度是否达到设定要求;若是结束此过程,否则转向步骤S23;
S23、判断是否是最底层定义域DOMAIN;若是转至步骤S21,否则转向步骤S24;
S24、调整分割线一侧的第一部分,而后调整分割线另一侧的第二部分。
实施例二
分子运动仿真是揭示分子运动规律,重现物理、化学反应过程等科学研究中有效的工具。然而分子运动仿真的计算量是巨大的,使用单台计算机和串行的方法很难实现有效的仿真计算。随着网络和并行计算技术的发展,越来越多的由于计算量大而难于解决的问题得到了解决。并行计算是将繁重的计算任务分解成相对小的计算任务,再将它们分别交给多个处理机同时处理,其目的是尽量的减小计算时间。在并行计算中对任务的分配要求尽量的均衡,避免某些计算节点的任务过重而造成整体运算效率低下,从而失去了并行计算的意义。对于分子运动的模拟,我们一般采用划分子空间的方法来分派计算任务,不同的处理机负责不同子空间内的分子模拟。由于分子的运动性,各个子空间的分子数目会随着时间推移而改变,这就造成了各个处理机负载的动态多变性。在这种情况下要继续保持计算的整体效率,就必须动态的对负载进行调整。
本实施例以80000*40000像素的仿真区域为计算对象,仿真分子在某种引力场下的二维运动,系统的开发软件环境为Windows2003 CCS,VisiualStudio2008和mpich2ia64。硬件环境为四DELL OPTIPLEX 330(Dual1.8GHz/1G/160G/Broadcom NetXtreme Gigabit contraller)。
我们将仿真区域划分为32个区域,因此有32个计算进程与此相对应,另外还有一个管理进程负责数据的统计和与前台的数据交互,所以共有33个进程。在程序开始阶段进行任务的分配时,按照面向对象的方法生成不同的类对象。
if(myrank==0)
{
pGlobalTrafficNetWork=new CGlobalTrafficNetwork();
else
{
pLocalTrafficNetWork=new CLocalTrafficNetwork();
【进程间的同步】
由于仿真逻辑的要求,各个进程间要保持一致的虚拟时间,所以在每个仿真周期要进行同步。
MPI_Barrier(MPI_COMM_WORLD);
【进程间数据通信】
系统采用MPICH2中的单方通讯模式,为每个进程创建窗口,通过“窗口”进行通讯;
int res=MPI_Win_create(ControlInfoPool,m_nRankSize*sizeof(struct SubdomainInfoType),1,MPI_INFO_NULL,MPI_COMM_WORLD,&winForControl Info);
当需要进计算对象转移时,只需要向对应进程的窗口进行写入和从自己的窗口读取即可。下面是发送计算对象的例子。
int SendObjects ()
{
int target_rank=-l;
int SendSum=0;
MPI_Win_fence(0,winForVhicleData);
for(int i=0;i<m_nRankSize;i++)
{
target_rank=i;
if(target_rank!=m_nMyRank)
{
MPI_Win_lock(MPI_LOCK_EXCLUSIVE,target_rank,0,winForVhicleData);//加锁
//发送
if(SendDataBuff[i].m_nVehiclesNum>0)
MPI_Put(&SendDataBuff[i],sizeof(struct ExchangDataType),MPI_CHAR,
target_rank,m_nMyRank*sizeof(struct ExchangDataType),sizeof(struct
ExchangDataType),MPI_CHAR,winForVhicleData);
MPI_Win_unlock(target_rank,winForVhicleData);//开锁
SendSum+=SendDataBuff[i].m_nVehiclesNum;
}
}
MPI_Win_fence(0,winForVhicleData);
return SendSum;
}
图3为算法的计算结果。
此外,本方法中所有子空间矩形的周长之和是一固定值,当一部分子空间周长发生变化时,一定有另外一些子空间矩形发生相反地变形,其周长永远等于初始划分周长之和。由于计算对象的随机分布,通讯量的大小和大程度上取决于分割线的总长,因此本方法的划分结果具有较小的通讯开销。
综上所述,本发明提出的用于空间计算并行化的自适应负载平衡方法,可使负责子空间计算的多处理机之间负载快速达到平衡,同时平衡后的主机之间通讯负载小。通过将划分的字空间成组的压缩或拉伸来加速空间的重新划分;在计算过程中根据多台处理器之间的负载变化情况动态调整分割线以达到新的平衡的方法。
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
Claims (1)
1.一种用于空间计算并行化的自适应负载平衡方法,其特征在于,所述方法包括:
并行化空间计算;并行化空间计算中,每台处理机负责计算一块划分出来的子空间,计算量来自于空间内计算对象的数目和复杂度;
将每个计算对象的计算复杂度设为相同,那么计算量的大小用对象的数目来表示;
在计算过程中,当计算对象在空间内移动时,就认为从一台处理机负责的空间迁移到另一台处理机负责的空间,这就造成了计算负载的变动;
在计算过程中根据多台处理器之间的负载变化情况动态调整分割线以达到新的平衡;通过将划分的子空间成组的压缩或拉伸来加速空间的重新划分;
所述方法包括初始任务空间划分步骤:
将二叉树的非叶子节点看成空间中的分割线,叶子节点看成最终的子空间,仿真空间根据二叉树的结构逐层的划分成2N个子空间,相邻两层的分割线的方向不同;
在这种分割条件下,任何一条竖向分割线的左面区域编号小于右面区域,任何一条横向分割线上面的区域标号小于下面的区域;
对于由2N个子区域构成大小为X*Y的仿真空间,设每一个区域的编号由二进制表示成a1、a2、…、aN,则其初始位置,即每个区域的左上角表示如下:
其中,i为奇数,j为偶数;a1、a2、…、aN是每个单元编码的二进制序列,N是这个序列的长度,X和Y是整个空间的宽度和高度;
所述方法进一步包括负载平衡步骤:
S21、计算整体不平衡度;
S22、判断整体不平衡度是否达到设定要求;若是结束此过程,否则转向步骤S23;
S23、判断是否是最底层定义域DOMAIN;若是转至步骤S21,否则转向步骤S24;
S24、调整分割线一侧的第一部分,而后调整分割线另一侧的第二部分;
所述负载平衡步骤具体为:
设所有最小的子区域,即所有叶子节点的数目为DOMAIN_NUM,DOMAIN_NUM=2N,N为正整数;
对于编码范围为StartDomain到EndDomain的子区域范围,将分成(StartDomain~(EndDomain+StartDomain)/2),和((EndDomain+StartDomain)/2+1~EndDomain)两部分;其中,EndDomain-StartDomain+1==2N,N为正整数;
如果:Log(DOMAIN_NUM/(EndDomain-StartDomain+1))%2=1;则代表两部分将在水平方向上进行调整,否则将在竖直方向上进行调整;
对两部分的负载差异度定义如下:
设两个区域的X方向界限为(MinX1,MaxX1),(MinX2,MaxX2),Y方向上的界限为(MinY1,MaxY1),(MinY2,MaxY2)那么分割线的调整值为:
根据分割线的调整值offset分别计算对于两边的调整比率per1、per2为:
Per1=offset/(MaxX1-MinX1)
Per2=offset/(MaxX2-MinX2)
根据调整比率per1、per2,两边区域各自调整对所有子区域进行伸缩。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110002618 CN102063331B (zh) | 2011-01-07 | 2011-01-07 | 用于空间计算并行化的自适应负载平衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110002618 CN102063331B (zh) | 2011-01-07 | 2011-01-07 | 用于空间计算并行化的自适应负载平衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102063331A CN102063331A (zh) | 2011-05-18 |
CN102063331B true CN102063331B (zh) | 2013-04-17 |
Family
ID=43998617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110002618 Active CN102063331B (zh) | 2011-01-07 | 2011-01-07 | 用于空间计算并行化的自适应负载平衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102063331B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840306B (zh) * | 2017-12-28 | 2020-10-23 | 中国科学院计算技术研究所 | 一种基于递归的并行快速傅里叶变换通信优化方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101529425A (zh) * | 2005-04-25 | 2009-09-09 | 国际商业机器公司 | 通过交互中心的空间分区进行的负荷平衡 |
CN101702244A (zh) * | 2009-11-10 | 2010-05-05 | 南京大学 | 一种适用于绘制区域任意划分的并行绘制负载平衡方法 |
CN101788920A (zh) * | 2010-02-05 | 2010-07-28 | 北京航空航天大学 | 一种基于处理器分区技术的cpu虚拟化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU7437600A (en) * | 1999-09-28 | 2001-04-30 | International Business Machines Corporation | Workload management in a computing environment |
-
2011
- 2011-01-07 CN CN 201110002618 patent/CN102063331B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101529425A (zh) * | 2005-04-25 | 2009-09-09 | 国际商业机器公司 | 通过交互中心的空间分区进行的负荷平衡 |
CN101702244A (zh) * | 2009-11-10 | 2010-05-05 | 南京大学 | 一种适用于绘制区域任意划分的并行绘制负载平衡方法 |
CN101788920A (zh) * | 2010-02-05 | 2010-07-28 | 北京航空航天大学 | 一种基于处理器分区技术的cpu虚拟化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102063331A (zh) | 2011-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | Distributed deep learning model for intelligent video surveillance systems with edge computing | |
CN104104621B (zh) | 一种基于非线性降维的虚拟网络资源动态自适应调节方法 | |
Zhang et al. | A fast adaptive load balancing method for parallel particle-based simulations | |
CN108958852A (zh) | 一种基于fpga异构平台的系统优化方法 | |
CN102902742A (zh) | 一种云环境下的空间数据划分方法 | |
CN102063331B (zh) | 用于空间计算并行化的自适应负载平衡方法 | |
Adlerborn et al. | A parallel QZ algorithm for distributed memory HPC systems | |
Zhang et al. | Efficient sparse matrix–vector multiplication using cache oblivious extension quadtree storage format | |
CN111507474A (zh) | 一种动态调整Batch-size的神经网络分布式训练方法 | |
CN109840152A (zh) | 一种合作协同差分进化方法和装置 | |
Jain et al. | Non slicing floorplan representations in VLSI floorplanning: A summary | |
Weinbub et al. | Domain decomposition strategies for the two-dimensional Wigner Monte Carlo method | |
Panja et al. | MND-MST: A Multi-Node Multi-Device Parallel Boruvka's MST Algorithm | |
CN110110158A (zh) | 一种三维网格数据的存储空间划分方法及系统 | |
EP4006736A1 (en) | Connecting processors using twisted torus configurations | |
Gabrieli et al. | Speeding up simulation of diffusion in zeolites by a parallel synchronous kinetic Monte Carlo algorithm | |
CN108717444A (zh) | 一种基于分布式结构的大数据聚类方法和装置 | |
Yamamoto et al. | New approach for pedestrian dynamics by real-coded cellular automata (RCA) | |
CN105956937B (zh) | 电力系统小干扰稳定分析的数据中心求解方法 | |
Shchur et al. | Evolution of time horizons in parallel and grid simulations | |
Datta et al. | Fast parallel algorithm for prefix computation in multi-mesh architecture | |
Li et al. | Optimal data allocation for graph processing in processing-in-memory systems | |
Malik et al. | Topology-aware optimization of communications for parallel matrix multiplication on hierarchical heterogeneous hpc platform | |
CN102200962A (zh) | 一种基于迭代空间条块的并行有限差分模版方法 | |
Ibeid et al. | A performance model for the communication in fast multipole methods on hpc platforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |