[发明专利]一种基于TBB线程构建块的连续系统仿真多核并行方法无效

专利信息
申请号: 200910092407.0 申请日: 2009-09-10
公开(公告)号: CN101639788A 公开(公告)日: 2010-02-03
发明(设计)人: 李妮;唐力勇 申请(专利权)人: 北京航空航天大学
主分类号: G06F9/46 分类号: G06F9/46;G06F17/50
代理公司: 北京永创新实专利事务所 代理人: 周长琪
地址: 100083*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种基于TBB的连续系统仿真多核并行方法,主要包括以下步骤:步骤一,搭建TBB并行计算平台;步骤二,构造并行ParaODES模版类;步骤三,模型初始化;步骤四,TBB任务调度初始化;步骤五,仿真时间范围判断;步骤六,调用并行模版类ParaODES;步骤七,仿真结果传递;步骤八,结束TBB任务调度。本发明利用TBB实现连续系统仿真的并行化处理,提高了仿真运算的速度,从而满足仿真的实时性要求,缩短了仿真研究周期;利用TBB进行并行化处理,过程简单灵活,易于操作,具有很好的扩展性;TBB采用多核架构,符合当今并行技术向多核平台发展的方向。
搜索关键词: 一种 基于 tbb 线程 构建 连续 系统 仿真 多核 并行 方法
【主权项】:
1、一种基于TBB线程构建块的连续系统仿真多核并行方法,其特征在于,包括以下步骤:步骤一:搭建TBB并行计算平台;在计算机中置入TBB文件包,在VC目录中添加TBB的包含文件、库文件及可执行文件,最后添加TBB20_INSTALL_DIR的值为C:\Program files\Intel\TBB\2.0到系统环境变量;步骤二:构造并行ParaODES模版类;预估计算和校正计算使用parallel_for模版类,根据parallel_for模版构造并行类,并将其命名为ParaODES模版类;具体步骤为:一、编写预估计算和校正计算的程序;模版类ParaODES中的预估计算和校正计算按以下公式进行:预估计算: <mrow> <msubsup> <mi>y</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> <mi>p</mi> </msubsup> <mo>=</mo> <msubsup> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>c</mi> </msubsup> <mo>+</mo> <mfrac> <mi>h</mi> <mn>3</mn> </mfrac> <mrow> <mo>(</mo> <mn>8</mn> <msubsup> <mi>f</mi> <mi>i</mi> <mi>p</mi> </msubsup> <mo>-</mo> <mn>5</mn> <msubsup> <mi>f</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>c</mi> </msubsup> <mo>+</mo> <mn>4</mn> <msubsup> <mi>f</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>2</mn> </mrow> <mi>c</mi> </msubsup> <mo>-</mo> <msubsup> <mi>f</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>3</mn> </mrow> <mi>c</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msubsup> <mi>f</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> <mi>p</mi> </msubsup> <mo>=</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>t</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>,</mo> <msubsup> <mi>y</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> <mi>p</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>校正计算: <mrow> <msubsup> <mi>y</mi> <mi>i</mi> <mi>c</mi> </msubsup> <mo>=</mo> <msubsup> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>c</mi> </msubsup> <mo>+</mo> <mfrac> <mi>h</mi> <mn>24</mn> </mfrac> <mrow> <mo>(</mo> <mn>9</mn> <msubsup> <mi>f</mi> <mi>i</mi> <mi>p</mi> </msubsup> <mo>+</mo> <mn>19</mn> <msubsup> <mi>f</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>c</mi> </msubsup> <mo>-</mo> <mn>5</mn> <msubsup> <mi>f</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>2</mn> </mrow> <mi>c</mi> </msubsup> <mo>+</mo> <msubsup> <mi>f</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>3</mn> </mrow> <mi>c</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msubsup> <mi>f</mi> <mi>i</mi> <mi>c</mi> </msubsup> <mo>=</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>t</mi> <mi>i</mi> </msub> <mo>,</mo> <msubsup> <mi>y</mi> <mi>i</mi> <mi>c</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>其中: <mrow> <msubsup> <mi>f</mi> <mi>i</mi> <mi>p</mi> </msubsup> <mo>=</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>t</mi> <mi>i</mi> </msub> <mo>,</mo> <msubsup> <mi>y</mi> <mi>i</mi> <mi>p</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msubsup> <mi>f</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>c</mi> </msubsup> <mo>=</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>t</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>,</mo> <msubsup> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>c</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>式中:yi+1p表示状态变量下一步的估计值,yic表示状态变量当前步的校正值,yi-1c表示状态变量上一步的校正值,fip表示状态变量导数当前步的估计值,fi+1p表示状态变量导数下一步的估计值,fic、fi-1c、fi-2c、fi-3c分别表示状态变量导数当前步、前一步、前两步和前三步的校正值,ti表示当前时刻,ti-1表示上一时刻;式(1)、(2)和式(3)、(4)分别在两个处理内核P1、P2上并行执行,在P1中计算yi+1p,然后根据yi+1p的值计算fi+1p;在P2中计算yic,然后根据yic的值计算fic;P1、P2在结束了一步计算之后进行通讯;二、在模版类ParaODES的operator接口中将循环参数修改为blocked_range模板类;将operator接口的最外层循环参数修改成TBB中定义的blocked_range模板类,使之能够支持循环体内任务的并行划分;并行计算模版类ParaODES构造完成;步骤三:模型初始化;在仿真开始时,首先对仿真模型进行初始化,即设置连续系统微分方程组右函数、问题规模n、仿真总时间Tmax、积分步长h;导数、状态量、中间量的变量声明以及各变量赋初值,其中n为方程组中方程的数目;步骤四:TBB任务调度初始化;步骤五:仿真时间范围判断;判断当前时间t是否超出仿真时间范围Tmax,若t<Tmax,则执行步骤六,否则执行步骤八;步骤六:调用并行模版类ParaODES;调用步骤二中的ParaODES模版类完成预估-校正的并行计算,通过ParaODES模版类创建一个线程计算yi+1p的估计值,并根据yi+1p计算导数的估计值fi+1p;通过ParaODES模版类创建另一个线程并行计算yic的精确值,并根据yic计算导数的精确值fic;最终得到仿真结果yic;在上述过程中,需要用到的导数值:当前步导数估计值fip、前一步导数校正值fi-1c、前两步导数校正值fi-2c和前三步导数校正值fi-3c,并得到新的导数估计值fi+1p和导数校正值fic;步骤七:仿真结果传递;将步骤六中的当前步导数估计值fip、前一步导数校正值fi-1p、前两步导数校正值fi-2c、前三步导数校正值fi-3c和状态变量当前步的校正值yic这五个参数的值传递给当前变量的后一步,即将fi-2c的值传递给fi-3c,将fi-1c的值传递给fi-2c,将fic的值传递给fi-1c,将fi+1p的值传递给fip,将yic的值传递给yi-1c;时间t增加一个单位长度;返回步骤五;步骤八:结束TBB任务调度;完成并行计算任务,结束TBB任务调度。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

本文链接:http://www.vipzhuanli.com/patent/200910092407.0/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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