[发明专利]一种基于Fork/Join框架的梯级水库群优化调度多核并行计算设计方法在审
申请号: | 201611005315.0 | 申请日: | 2016-11-07 |
公开(公告)号: | CN107015861A | 公开(公告)日: | 2017-08-04 |
发明(设计)人: | 王森;马志鹏;李善综;张康;石赟赟;黄燕;严黎;陈娟;朱秋菊;郑江丽;熊静;刘学明;陈丽 | 申请(专利权)人: | 珠江水利委员会珠江水利科学研究院 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F17/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 510000 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于Fork/Join框架的梯级水库群优化调度多核并行计算设计方法,包括以下步骤(1)构建Fork/Join并行框架;(2)实现Fork/Join并行框架;(3)粗粒度模式下典型智能方法并行化设计;(4)细粒度模式下典型动态规划方法并行化设计。通过PSCWAGA、PAHPSO、PDP、PDDDP方法实例测试结果,采用Fork/Join多核并行框架,能充分发挥多核CPU并行性能,大幅度缩减计算耗时,显著提高算法计算效率;并行方法的计算规模越大,缩减计算耗时越多,并行计算的优势越明显;而且随着计算规模逐渐增大,加速比及并行效率逐步增大,加速比更加接近理想加速比。 | ||
搜索关键词: | 一种 基于 fork join 框架 梯级 水库 优化 调度 多核 并行 计算 设计 方法 | ||
【主权项】:
一种基于Fork/Join框架的梯级水库群优化调度多核并行计算设计方法,其特征在于,包括以下步骤:(1)构建Fork/Join并行框架:Fork/Join并行框架的核心继承了“分治法”的特性,通过递归分割原问题,形成若干个规模更小、相互独立且可并行计算的子问题;当各子问题进行独立并行计算后,组合各子问题的子结果即可输出原问题的最终结果;Fork/Join框架设计了独特的线程池技术,当程序开始执行时,默认创建与可用的处理器数目相同的活动线程数;在“分治法”执行过程中,定义了一个可自由设置的控制子问题规模大小的阈值作为子问题规模的上限值,即当子问题规模小于或等于阈值时,“分治法”执行结束,各子问题被平均分配到不同线程中开始并行计算;另外,在子问题并行计算过程中,Fork/Join设计了独特的双端队列排序模式,并采用了“工作窃取”算法,即当一个线程的队列计算任务为空时,将从其它处于工作状态的线程队列尾部“窃取”计算任务;(2)实现Fork/Join并行框架:1)算法实现的代码类需继承Fork/Join应用接口类java.util.concurrent.RecursiveAction或者java.util.concurrent.RecursiveTask;2)选择阈值划分任务;3)实现Fork/Join接口类的void compute()方法;4)设置任务划分方式;(3)粗粒度模式下典型智能方法并行化设计:1)并行自适应混沌整体退火遗传算法:Step 1参数初始化。设定种群规模m、混沌序列个数d、种群最大迭代次数Kmax、初始温度T0以及自适应参数Pc1、Pc2、Pm1、Pm2;Step 2种群初始化。根据Logistic映射公式,在混沌空间随机生成n组混沌序列,映射到解空间内生成m个不同的个体构成种群,种群个体由各电站不同时段的水位值(zi1,zi2,…,zin)构成;Step 3创建线程池,默认生成的线程池的工作线程数目与CPU逻辑线程数目相同,同时设置Fork/Join的计算阈值;Step 4启动并行计算流程;Parallel Step①根据设置的计算阈值将父种群按递归模式划分为多个规模更小的子种群;Parallel Step②划分的子种群集合平均分配到不同逻辑线程。为了保持CPU负载平衡,确保每个逻辑线程分配的子任务数相同;Parallel Step③每个线程分配到的子种群独立运行计算,主要计算步骤如下:A评价个体适应度;B选择运算:采用整体退火选择机制,允许父代参与竞争,并筛选出下一代个体;C交叉运算:采用算术交叉方法执行交叉操作;D变异运算:采用非均匀变异方式执行变异操作;E计算父代和子代个体适应度:当父代个体Xi经过交叉、变异生成子代X′i,若f(X′i)>f(Xi),则用X′i代替Xi;否则,以概率exp[(f(X′i)‑f(Xi))/Tk]保留Xi;F参数更新。迭代次数k=k+1,温度Tk=1/ln(k/T0+1)。G判断子种群迭代是否结束;根据退火温度Tk或最大迭代次数作为收敛条件,当两者任意其一达到初始设置的收敛条件时,返回A;否则,子种群计算收敛结束;Parallel Step④汇总合并各子种群的优化解作为结果集,返回主线程。Step 5从结果集中筛选出最优解,计算结束并销毁线程池。2)并行自适应混合粒子群算法(PAHPSO)Step1参数初始化;Step2种群初始化;Step3创建线程池,默认生成的线程池的工作线程数目与CPU逻辑线程数目相同,同时设置Fork/Join的计算阈值;Step4启动并行计算流程;Parallel Step①根据设置的计算阈值将父种群按递归模式划分为多个规模更小的子种群;Parallel Step②划分的子种群集合平均分配到不同逻辑线程。为了保持CPU负载平衡,确保每个逻辑线程分配的子任务数相同;Parallel Step③每个线程分配到的子种群独立运行计算,主要计算步骤如下:A计算粒子适应度、粒子个体最优解以及种群全局最优解;粒子适应度与其个体最优解比较,若粒子适应度比其个体最优解更优,则当前粒子位置作为个体最优位置;粒子适应度与种群全局最优解比较,若粒子适应度比种群全局最优解更优,则当前粒子位置作为种群全局最优位置;B计算粒子能量以及粒子能量阈值;若粒子能量低于当前粒子能量阈值,对粒子当前位置与速度执行变异操作;C计算粒子相似度以及粒子相似度阈值;若两相邻粒子相似度小于当前粒子相似度阈值,则对较差粒子的历史最优位置执行变异操作;D引入基于邻域的贪心随机搜索策略对粒子的个体最优位置进行更新;若在邻域搜索到的当前位置比搜索前粒子适应度更大,则代替搜索前粒子个体位置,再用搜索后粒子个体位置与粒子历史最优位置以及种群全局最优位置作比较,更新粒子历史最优位置以及种群最优位置;E更新粒子种群的速度和位置;F判断子种群迭代是否结束;若当前迭代次数小于最大迭代次数,返回(1);否则,子种群计算收敛结束;Parallel Step④汇总合并各子种群的计算结果作为结果集,返回主线程;Step5从结果集中筛选出最优解,计算结束并销毁线程池;3)Fork/Join框架粗粒度并行设计模式及方法根据PSCWAGA和PAHPSO方法计算流程,归纳总结Fork/Join框架粗粒度并行设计模式及方法:Step1初始化算法参数及种群规模;Step2创建线程池以及设置计算阈值;Step3利用Fork/Join并行框架按递归模式将父种群划分为多个子种群,并平均分配到各子线程;Step4各子种群按原串行方法流程优化计算,直至各子种群迭代结束;Step5汇总合并各子种群的计算结果作为结果集,返回主线程;Step6从结果集中筛选出最优解,计算结束并销毁线程池;(4)细粒度模式下典型动态规划方法并行化设计:1)并行动态规划方法:Step1数据准备;获取计算所需的电站基础属性特征值及特征曲线,包括电站特征水位、出力系数、水位‑库容曲线、泄流‑尾水位曲线等,并根据水库各时段蓄水上下限、离散个数确定离散状态变量St;Step2创建线程池,默认生成的线程池的工作线程数目与CPU逻辑线程数目相同,同时设置Fork/Join的计算阈值;Step3启动并行计算流程;Parallel Step①构建并行计算的父任务;将迭代周期内所有蓄水状态变量组合在Bt(St,It,Nt)中的求解计算作为父任务,并为计算过程中水位、出力、发电量等指标创建存储空间;Parallel Step②根据设置的计算阈值将父任务按递归模式划分为多个规模更小的子任务;Parallel Step③划分的子任务集合平均分配到不同逻辑线程。为了保持CPU负载平衡,确保每个逻辑线程分配的子任务数相同;Parallel Step④每个线程分配到的子任务独立运行计算,即子任务中的所有状态离散组合在递推公式中求解计算;Parallel Step⑤汇总合并各子任务的计算结果作为结果集,返回主线程;Step4从结果集中筛选出最优解,计算结束并销毁线程池;2)并行离散微分动态规划方法:Step1数据准备;获取计算所需的电站基础属性特征值及特征曲线,包括电站特征水位、出力系数、水位‑库容曲线、泄流‑尾水位曲线等,并根据水库各时段蓄水上下限、离散个数确定离散状态变量St;Step2设置迭代廊道个数,并生成初始可行解作为计算初始轨迹;Step3创建线程池,默认生成的线程池的工作线程数目与CPU逻辑线程数目相同,同时设置Fork/Join的计算阈值;Step4选取最大廊道宽度作为当前廊道;Step5启动并行计算流程;Parallel Step①在当前廊道内构建并行计算的父任务;将廊道内所有蓄水状态变量组合在Bt(St,It,Nt)中的求解计算作为父任务,并为计算过程中水位、出力、发电量等指标创建存储空间;Parallel Step②根据设置的计算阈值将父任务按递归模式划分为多个规模更小的子任务;Parallel Step③划分的子任务集合平均分配到不同逻辑线程;为了保持CPU负载平衡,确保每个逻辑线程分配的子任务数相同;Parallel Step④每个线程分配到的子任务独立运行计算,即子任务中的所有状态离散组合在递推公式中求解计算;Parallel Step⑤汇总合并各子任务的计算结果作为结果集,返回主线程;Step 5根据结果集输出当前最优轨迹,并判断当前最优轨迹是否与初始轨迹相同;若相同,则进入Step 6;若不相同,进入Step 7;Step 6判断当前廊道是否为最后一个廊道;若不是,设置下一个更小的廊道宽度作为当前廊道宽度,进入Step 7;若是,计算终止,输出最优轨迹作为计算最优解并销毁线程池;Step 7设置当前最优轨迹作为下一次迭代的初始轨迹,返回Step 5;3)Fork/Join框架细粒度并行设计模式及方法:根据PDP和PDDDP方法计算流程,归纳总结Fork/Join框架细粒度并行设计模式及方法:Step1数据准备。包括初始化参数以及设置状态离散点数;Step2创建线程池以及设置计算阈值;Step3按串行流程执行直至开始计算状态离散点组合的返回值,进入并行计算;Step4利用Fork/Join并行框架按递归模式将父任务划分为多个子任务,并平均分配到各子线程;Step5各子任务中的状态离散点组合按动态规划递推公式求解运算,直至各子任务计算结束;Step6汇总合并各子任务的计算结果作为结果集,返回主线程;Step7从结果集中筛选出当前最优解,并继续按方法串行流程执行直至计算结束,并销毁线程池。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠江水利委员会珠江水利科学研究院,未经珠江水利委员会珠江水利科学研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201611005315.0/,转载请声明来源钻瓜专利网。