一种针对分布式大数据处理的算力动态分配方法与流程

文档序号:15047696发布日期:2018-07-27 23:03阅读:1142来源:国知局

本发明属于大数据处理领域,具体涉及一种针对分布式大数据处理的算力动态分配方法。



背景技术:

分布式运算架构成为一种趋势:在每个房间中配置一台小型的算力设备,数百万甚至上千万用户家中的算力设备构成了庞大的算力网络,可以按需向企业或者个人用户提供算力。这种架构避免了超级计算中心等集中式算力架构的问题:

1.集中的电力能源供应。集中式的计算中心需要大量的能耗,以人工智能运算所需要的gpu单元来说,单个单元的能耗达到100w-200w,上万甚至数十万个gpu所需要的能耗惊人,需要专用的昂贵的电力设备配套。

2.散热问题。大密度的算力设备运算时会产生大量的热量,狭小的空间使散热成为严重的问题,需要专用的制冷设备对机房进行冷却。

3.需要专用的巨大的网络带宽和其他外设进行配套而分散的部署于家庭的分布式运算架构可以有效避免以上问题,但是也带来了新的问题,尤其是对电力的利用问题。

首先,这类架构为了提高部署算力的积极性,通常会根据提供的算力支付一定的报酬,而算力设备平时运行的主要成本就是电费。由于峰谷电分别计费,如果让设备在峰电期间减少提供的算力来减少耗电量,在谷电期间增加提供的算力,可以在一天中提供相同总算力的情况下有效减少电费开销,降低成本。

其次,在一个地区大量的家庭部署了算力设备之后,会影响对电力的需求。在原本的用电高峰期间,加上这些算力设备的电耗,使得该地区的用电峰值明显上升,这会导致原本的电力设备的负载过大。理想的情况下,我们希望在用电高峰期尽量少的使用这些算力设备,使用电峰值跟原先的峰值保持不变,而在用电低谷期间尽量多的使用这些算力设备,达到削峰填谷的效果。

在算力设备中通常可以用软件通过动态调节处理器的工作频率来改变算力的大小,同时也改变了电耗的大小。同时,算力设备可以通过智能电表的wifi或者蓝牙读取到任一时刻家庭的用电量。在这些算力设备上面需要一种针对峰谷电调节的分布式智能硬件算力动态调节算法解决以上两个问题。



技术实现要素:

本发明的目的是针对现有技术的不足,提供一种针对峰谷电的分布式智能硬件算力动态调节方法。

本发明解决其技术问题所采用的技术方案如下:

首先,在算力设备部署完开始运行之后,用一个线程在算力设备整个生命周期都一直监测并记录家庭用电的峰值和每天的峰谷时间。

其次,算力设备运行时,家庭用电的功率不超过记录的峰值。一旦超过则通过降低算力设备的频率来降低家庭用电的功率,直到低于记录的峰值或者频率为零为止。

一种针对峰谷电的分布式智能硬件算力动态调节方法,具体实现包括三个并行的线程:

线程一:记录平均功耗、平均用电峰值,峰值出现时间,谷值出现时间,具体实现如下:

步骤1.初始化记录天数day=0,平均功耗ap=0,平均用电峰值f=0,峰值出现时间ft=0,谷值出现时间gt=0。

步骤2.睡眠5分钟,获取当前时间t,单位为分钟。

步骤3.如果day==0且t的时间不在00:00~00:05之间,跳转到步骤2;

步骤4.获取当前家庭用电功率p。

步骤5.如果t在在00:00~00:05之间,则初始化当天用电峰值df=p,当天峰值出现时间dft=t,当天用电谷值dg=p,当天电谷值出现时间dgt=t,当天功耗累计值dap=0;

步骤6.如果p>df,则df=p,dft=t。

步骤7.如果p<dg,dgt=t。

步骤8.dap=dap+p;

步骤9.如果t在23:55~24:00之间,则f=(f*day+df)/(day+1),ft=(ft*day+dft)/(day+1),gt=(gt*day+dgt)/(day+1);

ap=(ap*day+dap/288)/(day+1);day=day+1;

步骤10.跳转到步骤2。

线程二:计算当前时刻的家庭用电功率的期望值,具体如下:

步骤1.睡眠5分钟,获取当前的时间t,单位分钟;

步骤2.从线程一中获取当前的ap,f,ft和gt;

步骤3.如果t大于等于ft,则lft=t-ft,否则lft=t+1440-ft,其中lft为当前时间距离前一个用电峰值的时间间隔;

步骤4.如果t大于等于gt,则lgt=t-gt,否则lgt=t+1440-gt,其中lgt为当前时间距离前一个用电谷值的时间间隔;

步骤5.如果lft>lgt且ft>gt,fgt=ft-gt,其中fgt表示前一个用电峰值与前一个用电谷值之间的时间间隔;

步骤6.如果lft>lgt且ft<gt,fgt=ft+1440-gt;

步骤7.如果lft<lgt且gt>ft,fgt=gt-ft;

步骤8.如果lft<lgt且gt<ft,fgt=gt+1440-ft;

步骤9.如果lft>lgt,则期望值sp=ap+(f-ap)*(cos(π+π*lgt/fgt)+1)/2,否则期望值sp=ap+(f-ap)*(cos(π*lft/fgt)+1)/2。

步骤10.跳转到步骤1。

线程三:设置当前时刻算力设备运行的频率级别level,具体实现如下:

步骤1.初始化当前频率级别level=0,假设频率级别增加1,算力设备的功率提高k。

步骤2.睡眠5分钟,获取当前的时间t,单位分钟;

步骤3.从线程二获得当前时刻的家庭用电功率的期望值sp;

步骤4.获取当前的家庭用电功率p

步骤5.如果sp-p>k,则level=level+floor((sp-p)/k)

步骤6.如果sp<p,则level=min(0,level-ceil((p-sp)/k))

步骤7.跳转到步骤2。

其中,floor()函数用于取下整,ceil()函数用于取上整。

本发明有益效果如下:

通过使用本发明所述的算法,可以使算力设备的运行不会产生过高的用电峰值,确保算力系统的安全运行,另一方面可以在同样提供算力的情况下减少电费的开支,降低运行的成本。

附图说明

图1为本发明用电的功率分布图。

具体实施方式

下面结合附图对本发明作进一步说明。

一种针对峰谷电的分布式智能硬件算力动态调节方法,具体实现如下:

首先,在算力设备部署完开始运行之后,用一个线程在算力设备整个生命周期都一直监测并记录家庭用电的峰值和每天的峰谷时间。

其次,算力设备运行时,家庭用电的功率不超过记录的峰值。一旦超过则通过降低算力设备的频率来降低家庭用电的功率,直到低于记录的峰值或者频率为零为止。

为了避免每个家庭使用算力设备时整个地区的用电超过原有的峰值,本发明按照家庭原有的用电峰谷规律来进行规划,如图1所示,三角形标记的线条的是原始的两天内用电的功率分布,有两个用电的高峰。在开启算力设备后,期望一天内家庭用电的分布如圆形标记的线条所示。其峰值跟原始峰值相同,谷值等于一天内的平均功率,峰值与谷值之间的波形类似余弦函数。

一种针对峰谷电的分布式智能硬件算力动态调节方法,具体实现包括三个并行的线程:

线程一:记录平均功耗、平均用电峰值,峰值出现时间,谷值出现时间,具体实现如下:

步骤1.初始化记录天数day=0,平均功耗ap=0,平均用电峰值f=0,峰值出现时间ft=0,谷值出现时间gt=0。

步骤2.睡眠5分钟,获取当前时间t,单位为分钟。

步骤3.如果day==0且t的时间不在00:00~00:05之间,跳转到步骤2;

步骤4.获取当前家庭用电功率p。

步骤5.如果t在在00:00~00:05之间,则初始化当天用电峰值df=p,当天峰值出现时间dft=t,当天用电谷值dg=p,当天电谷值出现时间dgt=t,当天功耗累计值dap=0;

步骤6.如果p>df,则df=p,dft=t。

步骤7.如果p<dg,dgt=t。

步骤8.dap=dap+p;

步骤9.如果t在23:55~24:00之间,则f=(f*day+df)/(day+1),ft=(ft*day+dft)/(day+1),gt=(gt*day+dgt)/(day+1);

ap=(ap*day+dap/288)/(day+1);day=day+1;

步骤10.跳转到步骤2。

线程二:计算当前时刻的家庭用电功率的期望值,具体如下:

步骤1.睡眠5分钟,获取当前的时间t,单位分钟;

步骤2.从线程一中获取当前的ap,f,ft和gt;

步骤3.如果t大于等于ft,则lft=t-ft,否则lft=t+1440-ft,其中lft为当前时间距离前一个用电峰值的时间间隔;

步骤4.如果t大于等于gt,则lgt=t-gt,否则lgt=t+1440-gt,其中lgt为当前时间距离前一个用电谷值的时间间隔;

步骤5.如果lft>lgt且ft>gt,fgt=ft-gt,其中fgt表示前一个用电峰值与前一个用电谷值之间的时间间隔;

步骤6.如果lft>lgt且ft<gt,fgt=ft+1440-gt;

步骤7.如果lft<lgt且gt>ft,fgt=gt-ft;

步骤8.如果lft<lgt且gt<ft,fgt=gt+1440-ft;

步骤9.如果lft>lgt,则期望值sp=ap+(f-ap)*(cos(π+π*lgt/fgt)+1)/2,否则期望值sp=ap+(f-ap)*(cos(π*lft/fgt)+1)/2。

步骤10.跳转到步骤1。

线程三:设置当前时刻算力设备运行的频率级别level,具体实现如下:

步骤1.初始化当前频率级别level=0,假设频率级别增加1,算力设备的功率提高k。

步骤2.睡眠5分钟,获取当前的时间t,单位分钟;

步骤3.从线程二获得当前时刻的家庭用电功率的期望值sp;

步骤4.获取当前的家庭用电功率p

步骤5.如果sp-p>k,则level=level+floor((sp-p)/k)

步骤6.如果sp<p,则level=min(0,level-ceil((p-sp)/k))

步骤7.跳转到步骤2。

其中,floor()函数用于取下整,ceil()函数用于取上整。

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