[发明专利]一种基于TBB线程构建块的连续系统仿真多核并行方法无效
申请号: | 200910092407.0 | 申请日: | 2009-09-10 |
公开(公告)号: | CN101639788A | 公开(公告)日: | 2010-02-03 |
发明(设计)人: | 李妮;唐力勇 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F17/50 |
代理公司: | 北京永创新实专利事务所 | 代理人: | 周长琪 |
地址: | 100083*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 tbb 线程 构建 连续 系统 仿真 多核 并行 方法 | ||
1.一种基于TBB线程构建块的连续系统仿真多核并行方法,其特征在于,包括以下步骤:
步骤一:搭建TBB并行计算平台;
在计算机中置入TBB文件包,在VC目录中添加TBB的包含文件、库文件及可执行文 件,最后添加TBB20_INSTALL_DIR的值为C:/Program files/Intel/TBB/2.0到系统环 境变量;
步骤二:构造并行ParaODES模版类;
预估计算和校正计算使用parallel_for模版类,根据parallel_for模版构造并行类,并 将其命名为ParaODES模版类;
具体步骤为:
一、编写预估计算和校正计算的程序;
模版类ParaODES中的预估计算和校正计算按以下公式进行:
预估计算:
校正计算:
其中:
式中:h表示计算步长,表示状态变量下一步的估计值,表示状态变量当前步的校 正值,表示状态变量上一步的校正值,表示状态变量导数当前步的估计值,表示状 态变量导数下一步的估计值,分别表示状态变量导数当前步、前一步、 前两步和前三步的校正值,ti表示当前时刻,ti-1表示上一时刻;
式(1)、(2)和式(3)、(4)分别在两个处理内核P1、P2上并行执行,在P1中计算然后根据的值计算在P2中计算然后根据的值计算P1、P2在结束了一步 计算之后进行通讯;
二、在模版类ParaODES的operator接口中将循环参数修改为blocked_range模板类;
将operator接口的最外层循环参数修改成TBB中定义的blocked_range模板类,使之 能够支持循环体内任务的并行划分;
并行计算模版类ParaODES构造完成;
步骤三:模型初始化;
在仿真开始时,首先对仿真模型进行初始化,即设置连续系统微分方程组右函数、问题 规模n、仿真总时间Tmax、积分步长h;导数、状态量、中间量的变量声明以及各变量赋 初值,其中n为方程组中方程的数目;
步骤四:TBB任务调度初始化;
步骤五:仿真时间范围判断;
判断当前时间t是否超出仿真时间范围Tmax,若t<Tmax,则执行步骤六,否则执行 步骤八;
步骤六:调用并行模版类ParaODES;
调用步骤二中的ParaODES模版类完成预估-校正的并行计算,通过ParaODES模版类 创建一个线程计算的估计值,并根据计算导数的估计值通过ParaODES模版类 创建另一个线程并行计算的精确值,并根据计算导数的精确值最终得到仿真结果
在上述过程中,需要用到的导数值:当前步导数估计值前一步导数校正值前两 步导数校正值和前三步导数校正值并得到新的导数估计值和导数校正值
步骤七:仿真结果传递;
将步骤六中的当前步导数估计值前一步导数校正值前两步导数校正值前 三步导数校正值和状态变量当前步的校正值这五个参数的值传递给当前变量的后一 步,即将的值传递给将的值传递给将的值传递给将的值传递给 将的值传递给时间t增加一个单位长度;返回步骤五;
步骤八:结束TBB任务调度;
完成并行计算任务,结束TBB任务调度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910092407.0/1.html,转载请声明来源钻瓜专利网。