[发明专利]一种基于插值算法面向计算通信联合优化的负载均衡方法有效

专利信息
申请号: 201410503520.4 申请日: 2014-09-26
公开(公告)号: CN104281494B 公开(公告)日: 2017-05-10
发明(设计)人: 杨广文;刘圣卓;张志远;陈宇澍;姜进磊;韩宝玲 申请(专利权)人: 清华大学
主分类号: G06F9/50 分类号: G06F9/50
代理公司: 北京清亦华知识产权代理事务所(普通合伙)11201 代理人: 廖元秋
地址: 100084*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 算法 面向 计算 通信 联合 优化 负载 均衡 方法
【权利要求书】:

1.一种基于插值算法的面向计算通信联合优化的负载均衡方法,该方法分初始划分和动态调整两个阶段,其特征在于,初始划分阶段包括以运算的实测计算量和通信量作为基础值,利用插值算法以计算时间和责任通信时间的实测值推算计算量累加函数和通信量变化率函数的近似函数,然后以这两个函数为参照通过多次迭代获得最佳的数据划分方案;动态调整阶段包括并行程序运行过程,监视每次运算的计算量和通信量变化,分析处理器的负载均衡状况并预测负载均衡的趋势,当负载均衡的效率或预测值低于设定的阈值时,根据当前的计算量和通信量的实测值再次计算量累加函数和通信量变化率函数的近似函数,并对数据块的划分进行动态调整,所述责任通信时间为通信时间标准,为不包括等待时间和与计算重叠的时间的信通时间。

2.如权利要求1所述方法,其特征在于,所述初始划分阶段具体包括以下步骤:

步骤1-1)采用空间填充曲线法对多维空间分布的数据元素进行排序,对处理器编号;设N个数据元素从多维空间映射到一维空间,映射后的N个数据元素排列记为x1,x2,…,xN;设参与运算的处理器有M个,M<<N,将M个处理器编号,记为p1,p2,…,pM

步骤1-2)对数据元素平均划分的条件下,测量各处理器一个时间步的计算时间和责任通信时间;对平均划分的数据元素进行微调后,测量各处理器一个时间步的责任通信时间;具体包括:

第一次划分,将x1,x2,…,xN平均分成M块,分配到各处理器并启动运行一个时间步,得到各处理器计算时间TCj,责任通信时间TRj1;第二次划分,对第一次划分的各数据块进行微调,依次将第一次划分的数据块的后面k个元素移到下一个数据块,最后一个数据块只接收前一个数据块;将微调后的数据块分配到各处理器并启动运行一个时间步,得到各处理器责任通信时间TRj2

步骤1-3)根据实测的各处理器的计算时间,利用插值法求解计算量累加函数;具体实现为:

设在x1,x2,…,xN排列下,数据元素x的计算量密度函数为f(t,x),t为时间参数;在n个时间步内,n≤3,假设f保持不变,则计算量密度函数表示为与时间无关的函数f(x);

(xj1,xj2)为处理器pj负责的数据块,则处理器的计算时间为TCj表示为

全部处理器的计算时间为:

<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msubsup><mo>&Integral;</mo><msub><mi>x</mi><mn>11</mn></msub><msub><mi>x</mi><mn>12</mn></msub></msubsup><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>T</mi><mrow><mi>C</mi><mn>1</mn></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mo>&Integral;</mo><msub><mi>x</mi><mn>21</mn></msub><msub><mi>x</mi><mn>22</mn></msub></msubsup><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>T</mi><mrow><mi>C</mi><mn>2</mn></mrow></msub></mrow></mtd></mtr><mtr><mtd><mn>...</mn></mtd></mtr><mtr><mtd><mrow><msubsup><mo>&Integral;</mo><msub><mi>x</mi><mrow><mi>M</mi><mn>1</mn></mrow></msub><msub><mi>x</mi><mrow><mi>M</mi><mn>2</mn></mrow></msub></msubsup><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>T</mi><mrow><mi>C</mi><mn>3</mn></mrow></msub></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>

假设函数f(x)在x1,x2,…,xN排列中选取的M个点X1,X2,…,XM上有值;

对于Xi<x<Xi+1,得到f(x)的插值近似函数:

<mrow><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>X</mi><mi>i</mi></msub><mo>)</mo><mi>f</mi><mo>(</mo><msub><mi>X</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo><mo>+</mo><mo>(</mo><msub><mi>X</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><mi>x</mi><mo>)</mo><mi>f</mi><mo>(</mo><msub><mi>X</mi><mi>i</mi></msub><mo>)</mo></mrow><mrow><msub><mi>X</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>X</mi><mi>i</mi></msub></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>

将(2)式代入方程组(1),得到以f(X1),f(X2),…,f(XM)为未知数的线性方程组,求解可得f(x)在X1,X2,…,XM处的值;利用插值算法求得计算量的累加函数F(x),F(x)表示为X1,X2,…,XM之间的分段形式;

步骤1-4)根据实测的各处理器的计算时间,利用插值法求解责任通信时间函数的导函数;具体实现为:

处理器pj的责任通信时间函数为g(t,xj1,xj2),xj1,xj2为处理器所负责的数据元素的起点和终点;在较少的n个时间步内,n≤3,假设g保持不变,则处理器pj的责任通信时间函数表示为g(xj1,xj2);

假设g(x)为连续函数且在x点有导数,求解g(x)在指定点的导数G'(x);

g(xj1,xj2)代表某时间步处理器pj的责任通信时间,元素xj1+Δx为xj1的右邻点,得到:

g(xj1+Δx,xj2)=-G'(xj1)Δx+g(xj1,xj2) (3)

g(xj1,xj2+Δx)=G'(xj2)Δx+g(xj1,xj2) (4)

(xj1,xj2)和(xj3,xj4)分别为处理器pj在两次划分中所负责的数据块,两个数据块划分的大部分数据元素重叠,利用式(3)、(4)分别对处理器负责的数据块的左右两端做近似处理得:

<mrow><mi>g</mi><mrow><mo>(</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>3</mn></mrow></msub><mo>,</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>4</mn></mrow></msub><mo>)</mo></mrow><mo>-</mo><mi>g</mi><mrow><mo>(</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>=</mo><mo>-</mo><msup><mi>G</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mfrac><mrow><msub><mi>x</mi><mrow><mi>j</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>3</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>3</mn></mrow></msub><mo>-</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>+</mo><msup><mi>G</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mfrac><mrow><msub><mi>x</mi><mrow><mi>j</mi><mn>2</mn></mrow></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>4</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>4</mn></mrow></msub><mo>-</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>

为计算通信时间函数,测试两次不同划分的责任通信时间;处理器pj两次划分的责任通信时间分别为TRj1,TRj2,则,

<mrow><msup><mi>G</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mfrac><mrow><msub><mi>x</mi><mrow><mi>j</mi><mn>2</mn></mrow></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>4</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>4</mn></mrow></msub><mo>-</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>-</mo><msup><mi>G</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mfrac><mrow><msub><mi>x</mi><mrow><mi>j</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>3</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>3</mn></mrow></msub><mo>-</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>T</mi><mrow><mi>R</mi><mi>j</mi><mn>2</mn></mrow></msub><mo>-</mo><msub><mi>T</mi><mrow><mi>R</mi><mi>j</mi><mn>1</mn></mrow></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>

假设函数G'(x)在x1,x2,…,xN排列中选取的M个点X1,X2,…,XM上有值;

对于Xi<x<Xi+1,得到G'(x)的插值近似函数:

<mrow><msup><mi>G</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>X</mi><mi>i</mi></msub><mo>)</mo><msup><mi>G</mi><mo>&prime;</mo></msup><mo>(</mo><msub><mi>X</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo><mo>+</mo><mo>(</mo><msub><mi>X</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><mi>x</mi><mo>)</mo><msup><mi>G</mi><mo>&prime;</mo></msup><mo>(</mo><msub><mi>X</mi><mi>i</mi></msub><mo>)</mo></mrow><mrow><msub><mi>X</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>x</mi><mi>i</mi></msub></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>

将式(7)代入形如式(6)的所有处理器的方程组,得到以G'(X1),G'(X2),…,G'(XM)为未知数的线性方程组,求解得到G'(x)在X1,X2,…,XM处的值,利用插值法求得G'(x)的近似函数,G'(x)表示为X1,X2,…,XM之间的分段形式;

步骤1-5)根据计算量密度函数和责任通信时间函数,以及根据指定的数据块的平均计算量和通信量,为每个数据块分配数据元素;当分配不平均时,修改为数据块指定的平均计算量和通信量,迭代求解数据块划分方案;具体实现为:

根据已知的F(x)、G'(x),在x1,x2,…,xN上求一组X'0,X'1,…,X'M其中X'0=x1,X'0=xN,使式(8)最小:

MAX(F(X'j)-F(X'j-1)+g(X'j,X'j-1)) (8)

F(X'j)-F(X'j-1)表示以X'j-1和X'j分别为起点和终点的数据块的计算量,g(X'j,X'j-1)则表示这个数据块的责任通信量;

步骤1-5-1)设为各处理器计算时间的平均值;g0为各处理器责任通信时间的平均值;

步骤1-5-2)使用累加法求X'1在数据元素x1,x2,…,xN中使式(9)成立的最右的元素xi

<mrow><mi>F</mi><mrow><mo>(</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mn>1</mn></msub><mo>)</mo></mrow><mo>-</mo><mi>F</mi><mrow><mo>(</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mn>0</mn></msub><mo>)</mo></mrow><mo>+</mo><mi>g</mi><mrow><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mn>1</mn></msub><mo>)</mo></mrow><mo>&le;</mo><mover><mi>F</mi><mo>&OverBar;</mo></mover><mo>+</mo><mfrac><msub><mi>g</mi><mn>0</mn></msub><mn>2</mn></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow>

其中F(X'0)=0,x11,x12分别为第一个数据块的起点和终点;

由式(9)得到的X'1,则(x1,X'1)为第一个处理器p1的预分配数据块,表示为(X'0,X'1);

步骤1-5-3)根据已求得的X'1,结合式(10)利用递推法依次求得剩余的数据块;

<mrow><mi>F</mi><mrow><mo>(</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mi>j</mi></msub><mo>)</mo></mrow><mo>-</mo><mi>F</mi><mrow><mo>(</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>+</mo><mi>g</mi><mrow><mo>(</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mi>j</mi></msub><mo>)</mo></mrow><mo>&le;</mo><mover><mi>F</mi><mo>&OverBar;</mo></mover><mo>+</mo><mfrac><msub><mi>g</mi><mn>0</mn></msub><mn>2</mn></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow>

其中,

<mrow><mi>g</mi><mrow><mo>(</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mi>j</mi></msub><mo>)</mo></mrow><mo>=</mo><mi>g</mi><mrow><mo>(</mo><msub><mi>x</mi><mrow><mi>i</mi><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>x</mi><mrow><mi>i</mi><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>-</mo><msup><mi>G</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mfrac><mrow><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>i</mi><mn>1</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mrow><mo>(</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>x</mi><mrow><mi>i</mi><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>+</mo><msup><mi>G</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mfrac><mrow><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mi>j</mi></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>i</mi><mn>2</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mrow><mo>(</mo><msub><msup><mi>X</mi><mo>&prime;</mo></msup><mi>j</mi></msub><mo>-</mo><msub><mi>x</mi><mrow><mi>i</mi><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>11</mn><mo>)</mo></mrow></mrow>

式(11)中,g(xi1,xi2)为测试值;

步骤1-5-4)根据具体情况,对参数g0调整后重新进行数据块划分;

第一种情况,当递推法计算到第i步(i<M),x1,x2,…,xN中元素已经取尽,这时计算终止;新的g0设为回到步骤1-5-2),将g'0代入式(9)重新开始迭代计算;

第二种情况,计算进行了M步,但x1,x2,…,xN中的元素还没有取尽,设XM=xk,新的g0设定为回到步骤1-5-2),将g'0代入式(9)重新开始迭代计算;

第三种情况,当计算到第M步,XM取值为x1,x2,…,xN集合的最后一个元素,且小于一定的值(如)时,迭代停止,转步骤1-5-5);

第四种情况,迭代达到设定的次数,说明计算量和通信量无法达到相对均衡,此时迭代停止,转步骤1-5-5);

步骤1-5-5)当迭代停止时,求得一组X'0,X'1,…,X'M,以X'0,X'1,…,X'M作为分割点将数据元素排列x1,x2,…,xN分成M个数据块,由此得到数据划分方案;

步骤1-6)将划分的数据块分配给所有的处理器,启动运行n个时间步,收集的计算时间和通信时间分析负载均衡的效率;如果负载均衡效率低于要求门限,收集最近一个时间步各处理器计算时间TCj,责任通信时间TRj1;对现有划分进行微调后,运行一个时间步,得到各处理器的责任通信时间TRj2;进入步骤1-3)重新进行数据块划分;如果负载均衡效率达到要求门限,则继续运行,进入第二阶段进行动态调整;

所述动态调整阶段,具体包括以下步骤:

步骤2-1)根据设定的时间间隔,定时查看负载均衡效率,收集n个时间步各处理器的计算时间和责任通信时间,n≤20,如果预测未来m个时间步的负载均衡效率平均值高于设定的阈值,则继续运行,等待下个时间间隔再继续检测,否则启动负载动态调整,执行步骤2-2);

步骤2-2)收集最近一个时间步收集的各处理器计算时间TCj,责任通信时间TRj1;在不同划分情况下的通信时间的测试值;求解计算量密度函数f和通信量函数的导数G';采用步骤1-2)相同的数据块划分微调方法对现有划分微调后,运行一个时间步,得到各处理器的责任通信时间TRj2;转入步骤1-3)继续运行,重新进行数据块划分。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410503520.4/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top