CN101639788B - 一种基于tbb线程构建块的连续系统仿真多核并行方法 - Google Patents
一种基于tbb线程构建块的连续系统仿真多核并行方法 Download PDFInfo
- Publication number
- CN101639788B CN101639788B CN2009100924070A CN200910092407A CN101639788B CN 101639788 B CN101639788 B CN 101639788B CN 2009100924070 A CN2009100924070 A CN 2009100924070A CN 200910092407 A CN200910092407 A CN 200910092407A CN 101639788 B CN101639788 B CN 101639788B
- Authority
- CN
- China
- Prior art keywords
- tbb
- value
- parallel
- derivative
- paraodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于TBB的连续系统仿真多核并行方法,主要包括以下步骤:步骤一,搭建TBB并行计算平台;步骤二,构造并行ParaODES模版类;步骤三,模型初始化;步骤四,TBB任务调度初始化;步骤五,仿真时间范围判断;步骤六,调用并行模版类ParaODES;步骤七,仿真结果传递;步骤八,结束TBB任务调度。本发明利用TBB实现连续系统仿真的并行化处理,提高了仿真运算的速度,从而满足仿真的实时性要求,缩短了仿真研究周期;利用TBB进行并行化处理,过程简单灵活,易于操作,具有很好的扩展性;TBB采用多核架构,符合当今并行技术向多核平台发展的方向。
Description
技术领域
本发明涉及一种基于TBB线程构建块(Thread Building Blocking)的连续系统仿真多核并行方法,属于计算机仿真与算法优化领域。
背景技术
连续系统仿真广泛应用于航空、航天、气象和电子等领域。随着这些学科技术的发展,由此建立的仿真模型也日益复杂,仿真计算量不断加大。
连续系统仿真通常使用微分方程组来建立数学模型,微分方程组有成熟的数值解法,如龙格-库塔法,亚当姆斯法等。但传统的串行方法在解决大规模问题时计算时间过长,难以满足仿真的实时性要求,有的复杂问题使用串行算法甚至无法求解。
提高连续系统仿真速度的一种有效方法是采用并行技术,人们在连续系统微分方程组的并行化上做了大量工作,在串行算法的基础上提出了各种各样的并行算法。在早期的研究工作中,Nievergelt提出设置多个初始值进行并行计算,然后对计算结果进行修正的并行算法,Shampine和Watts提出了隐式板块方法和预估-校正执行方式,Miranker和Liniger也做了预估-校正法的并行研究工作,此外还给出了龙格-库塔法二阶、三阶的计算格式,并推导出了MIMD型龙格-库塔法计算公式,具体做法是采用逼近法来计算导数值以打断差值之间的相关链,并适当选择参数构造出稳定的并行计算格式。但是传统的并行算法实现方式繁杂,线程管理、数据交换等过程需要程序员管理,这使得并行程序的编写需要耗费大量的时间和精力,这就阻碍了并行技术在仿真计算中的应用。
随着计算机技术向着多处理器及多核架构发展,单机上的并行数据处理成为可能。TBB是最新推出的多核处理器并行计算平台,基于任务的算法、容器和同步基元可简化并行应用程序的开发工作,它提供完善的提取模板、容器和类别支持并行处理器,可以和MPI、OpenMP等结合使用,是一种简单高效的并行方法。但是,TBB和连续系统仿真结合的相关研究工作还处于初始阶段。
发明内容
本发明的目的是为了解决上述问题,提出一种基于TBB线程构建块的连续系统仿真多核并行方法,提高连续系统仿真计算的速度,以缩短仿真研究的周期,满足仿真的实时性要求。
连续系统仿真一般采用微分方程组建立模型,仿真计算的时间主要花费在微分方程组的求解上。本发明采用基于TBB的预估-校正并行算法,在该算法中,预估计算和校正计算是每一步积分计算中的主要内容,他们占据了仿真计算时间中的绝大部分。通过使用TBB并行技术,将预估计算和校正计算作为两个并行的子任务,为它们各分配一个线程,两个子任务在各自的线程上并行执行。
TBB采用基于任务概念的封装,这使得并行方法的实现更为简易。通过相关的模版类,将并行计算的部分分配到各个单独的线程,预估计算和校正计算两个子任务分别在两个单独的线程中执行,这样可以充分利用多个处理器内核的资源,达到加快计算速度的目的。
一种基于TBB线程构建块的连续系统仿真多核并行方法,主要包括以下步骤:
步骤一:搭建TBB并行计算平台;
步骤二:构造并行ParaODES模版类;
步骤三:模型初始化;
步骤四:TBB任务调度初始化;
步骤五:仿真时间范围判断;
步骤六:调用并行模版类ParaODES;
步骤七:仿真结果传递;
步骤八:结束TBB任务调度。
本发明的优点在于:
(1)本发明利用TBB实现连续系统仿真的并行化处理,提高了仿真运算的速度,从而满足仿真的实时性要求,缩短了仿真研究周期;
(2)本发明利用TBB进行并行化处理,过程简单灵活,易于操作,具有很好的扩展性;
(3)TBB采用多核架构,符合当今并行技术向多核平台发展的方向。
附图说明
图1是本发明的方法流程图;
图2是本发明在两个处理内核P1、P2上并行执行示意图;
图3是传统的串行方法和本发明所述的基于TBB的并行方法的运行时间曲线比较图。
具体实施方式
下面将结合附图和实例对本发明作进一步的详细说明。
本发明的一种基于TBB线程构建块的连续系统仿真多核并行方法,流程如图1所示,包括以下步骤:
步骤一:搭建TBB并行计算平台;
在计算机中置入TBB文件包,在VC目录中添加TBB的包含文件、库文件及可执行文件,最后添加TBB20_INSTALL_DIR的值为C:\Program files\Intel\TBB\2.0到系统环境变量。
步骤二:构造并行ParaODES模版类;
预估计算和校正计算是可以并行处理的子任务,根据并行化处理对象的特点选择使用parallel_for模版类。parallel_for模版类是TBB中最常用的一个并行模版类,它把一个循环划分为多个块,然后在不同的线程中并行处理,它要求循环中不存在循环依赖。根据parallel_for模版编写需要的并行类,并将其命名为ParaODES模版类,该名称是由用户自己定义的,名称的异同对结果没有影响。ParaODES模版类的调用最终完成预估计算和校正计算。
具体步骤为:
1、编写预估计算和校正计算的程序。
模版类ParaODES中的预估计算和校正计算按以下公式进行:
预估计算:
校正计算:
其中:
式中:yi+1 p表示状态变量下一步的估计值,yi c表示状态变量当前步的校正值,yi-1 c表示状态变量上一步的校正值,fi p表示状态变量导数当前步的估计值,fi+1 p表示状态变量导数下一步的估计值,fi c、fi-1 c、fi-2 c、fi-3 c分别表示状态变量导数当前步、前一步、前两步和前三步的校正值,ti表示当前时刻,ti-1表示上一时刻。
如图2所示,将式(1)、(2)和式(3)、(4)分别在两个处理内核P1、P2上并行执行,在P1中计算yi+1 p,然后根据yi+1 p的值计算fi+1 p;在P2中计算yi c,然后根据yi c的值计算fi c。P1、P2在结束了一步计算之后进行通讯,而没有在计算过程中进行通讯,从而提高了计算速度。
根据上述的ParaODES模版类中的预估计算和校正计算,编写预估计算和校正计算程序,程序中预估计算和校正计算的部分必须是循环体结构,预估计算和校正计算本来不是循环结构,但可以改写为循环结构。例如:在预估计算和校正计算程序前各自增加一个i=1或i=2的执行条件语句,通过判断循环变量i的值分别执行即可。预估计算和校正计算为循环体结构,是为了方便使用parallel_for模版类。循环体结构中的代码要尽量使用局部变量或模版类ParaODES的成员变量,而不能使用全局变量,否则不仅不能加快运行速度,反而会增加程序运行时间。
2、在模版类ParaODES的operator接口中将循环参数修改为blocked_range模板类。
在模版类ParaODES中,operator接口是并行处理的主要部分,它对并行循环进行优化,将最外层循环参数修改成TBB中定义的blocked_range模板类,使之能够支持循环体内任务的并行划分,在调用并行计算的模板类ParaODES时,由模板类参数指定循环处理的数值范围以及任务粒度参数,循环体内实现预估计算和校正计算过程。
并行计算模版类ParaODES构造完成。
步骤三:模型初始化;
在仿真开始时,首先对仿真模型进行初始化,即设置连续系统微分方程组右函数、问题规模n,n为方程组中方程的数目、仿真总时间Tmax、积分步长h;导数、状态量、中间量的变量声明以及各变量赋初值。
步骤四:TBB任务调度初始化;
TBB由任务调度器对象task_scheduler_init实现多任务的分配和并行计算,支持对多线程的划分。由于TBB任务调度的初始化会带来相对较大的额外开销,因此,只需进行一次初始化。在任务调度初始化以后,才可能进行连续系统仿真多核并行计算。
步骤五:仿真时间范围判断;
判断当前时间t是否超出仿真时间范围Tmax,若t<Tmax,则执行步骤六,否则执行步骤八。
步骤六:调用并行模版类ParaODES;
调用步骤二中的ParaODES模版类完成预估-校正的并行计算,通过ParaODES模版类创建一个线程计算yi+1 p的估计值,并根据yi+1 p计算导数的估计值fi+1 p;通过ParaODES模版类创建另一个线程并行计算yi c的精确值,并根据yi c计算导数的精确值fi c;最终得到仿真结果yi c。
在上述过程中,需要用到的导数值:当前步导数估计值fi p、前一步导数校正值fi-1 c、前两步导数校正值fi-2 c和前三步导数校正值fi-3 c,并得到新的导数估计值fi+1 p和导数校正值fi c,计算fi+1 p和fi c是为了能进行下一步仿真而进行的。
在连续系统仿真中,一般需要进行多步积分计算,通过循环调用ParaODES模版类来实现。
步骤七:仿真结果传递;
将步骤六中的当前步导数估计值fi p、前一步导数校正值fi-1 c、前两步导数校正值fi-2 c、前三步导数校正值fi-3 c和状态变量当前步的校正值yi c这五个参数的值传递给当前变量的后一步,即将fi-2 c的值传递给fi-3 c,将fi-1 c的值传递给fi-2 c,将fi c的值传递给fi-1 c,将fi+1 p的值传递给fi p,将yi c的值传递给yi-1 c,时间t增加一个单位长度。返回步骤五。
步骤八:结束TBB任务调度。
完成并行计算任务,结束TBB任务调度。和TBB任务调度初始化一样,TBB任务调度的结束也会带来较大的额外开销,所以本方法只进行一次TBB的初始化和结束,否则额外的时间开销会降低并行程序的运行速度。
实施例:并行处理的对象是如下所示的连续系统一阶微分方程组:
yi(t0)=yi0,i=1,2,...n。
式中:y1,y2,...yn为状态变量,yi0为状态变量初始值,yi(t0)为t0时刻的状态变量值,t0为初始时间,t为时间,n代表方程组规模,即方程组所含方程数目。积分步长h设为0.01,仿真时间范围从0.04到20。
分别采用传统的串行方法和本发明的TBB并行方法,在Intel酷睿2双核1.83GHz处理器上,进行连续系统仿真,结果如表1所示:
表1连续系统仿真结果
方程组规模 | 串行方法费时/(ms) | 并行方法费时/(ms) | 并行方法加速比 |
200 | 4458 | 4300 | 1.04 |
400 | 5354 | 4387 | 1.22 |
600 | 6846 | 4812 | 1.42 |
800 | 8882 | 5139 | 1.73 |
从表1可以看出分别采用传统的串行方法和本发明的TBB并行方法,在方程组规模分别为200、400、600、800的时候,并行方法加速比分别为1.04、1.22、1.42、1.73,并行方法加速比随着方程组规模的增大而增大。本发明的TBB并行方法微分方程的解算速度比传统的串行方法速度快。
运行时间如图3所示,横坐标为方程数目,纵坐标为解算时间,从图中可以看出在方程组数目相同的情况下,本发明的TBB并行方法的解算时间要少,当方程数目扩大到800后,本发明的TBB并行方法的解算时间缩短到原来的57.58%,大大加快了方程的求解速度。
通过对CPU利用情况的比较,可以得出:并行化处理后,CPU的使用率得到了提高。串行算法的CPU最大使用率为70%,没有充分利用两个处理核心的资源,而使用TBB并行化处理后,以方程组规模为400时为例,CPU的最大使用率达到了100%,这就充分利用了多核CPU的计算能力,从而提高了连续系统仿真的速度。
Claims (3)
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表示上一时刻;
二、在模版类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任务调度。
2.根据权利要求1所述的一种基于TBB线程构建块的连续系统仿真多核并行方法,其特征在于:步骤二中所述的编写预估计算和校正计算程序,程序中预估计算和校正计算的部分是循环体结构,循环体结构中的代码使用局部变量或模版类ParaODES的成员变量。
3.根据权利要求1所述的一种基于TBB线程构建块的连续系统仿真多核并行方法,其特征在于:步骤四所述的TBB任务调度初始化具体为:TBB由任务调度器对象task_scheduler_init实现多任务的分配和并行计算,支持对多线程的划分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100924070A CN101639788B (zh) | 2009-09-10 | 2009-09-10 | 一种基于tbb线程构建块的连续系统仿真多核并行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100924070A CN101639788B (zh) | 2009-09-10 | 2009-09-10 | 一种基于tbb线程构建块的连续系统仿真多核并行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101639788A CN101639788A (zh) | 2010-02-03 |
CN101639788B true CN101639788B (zh) | 2012-07-25 |
Family
ID=41614781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100924070A Expired - Fee Related CN101639788B (zh) | 2009-09-10 | 2009-09-10 | 一种基于tbb线程构建块的连续系统仿真多核并行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101639788B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101980166B (zh) * | 2010-10-09 | 2013-03-13 | 北京航空航天大学 | 一种用于机群系统并行模拟的时间序列控制方法 |
CN102486727B (zh) * | 2010-12-03 | 2014-10-22 | 同济大学 | 基于线程构造块的超大规模矩阵多核并行克劳特分解方法 |
CN104516717A (zh) * | 2013-09-30 | 2015-04-15 | 中国石油化工股份有限公司 | 一种针对地震数据块的并行循环方法 |
CN104200022B (zh) * | 2014-08-28 | 2017-08-04 | 北京航空航天大学 | 一种连续系统模型的分布式交互方法 |
CN104238372B (zh) * | 2014-09-11 | 2017-10-27 | 北京经纬恒润科技有限公司 | 多个模型并行仿真的调度方法和装置 |
CN104820636B (zh) * | 2015-04-09 | 2017-11-07 | 北京轩宇信息技术有限公司 | 一种并行的基于蚁群算法的测试用例序列生成方法 |
CN105785789A (zh) * | 2015-12-29 | 2016-07-20 | 上海科梁信息工程股份有限公司 | 高空飞艇的仿真系统 |
CN107025335B (zh) * | 2017-03-13 | 2019-12-10 | 清华大学 | 基于状态变量离散化的仿真计算方法和仿真系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464965A (zh) * | 2009-01-16 | 2009-06-24 | 北京航空航天大学 | 一种基于tbb的多核并行蚁群设计方法 |
-
2009
- 2009-09-10 CN CN2009100924070A patent/CN101639788B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464965A (zh) * | 2009-01-16 | 2009-06-24 | 北京航空航天大学 | 一种基于tbb的多核并行蚁群设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101639788A (zh) | 2010-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101639788B (zh) | 一种基于tbb线程构建块的连续系统仿真多核并行方法 | |
US10565019B2 (en) | Processing in a multicore processor with different cores having different execution times | |
Lastovetsky et al. | Model-based optimization of EULAG kernel on Intel Xeon Phi through load imbalancing | |
CN105487838A (zh) | 一种动态可重构处理器的任务级并行调度方法与系统 | |
CN103246541B (zh) | 一种自动并行化多级并行代价评估方法 | |
Yamazaki et al. | Improving performance of GMRES by reducing communication and pipelining global collectives | |
CN101464965B (zh) | 一种基于tbb的多核并行蚁群设计方法 | |
Maroosi et al. | Parallel and distributed computing models on a graphics processing unit to accelerate simulation of membrane systems | |
Wu et al. | Using hybrid MPI and OpenMP programming to optimize communications in parallel loop self-scheduling schemes for multicore PC clusters | |
Clarke et al. | Fupermod: A framework for optimal data partitioning for parallel scientific applications on dedicated heterogeneous hpc platforms | |
CN112559053A (zh) | 可重构处理器数据同步处理方法及装置 | |
Silva et al. | Task scheduling in sucuri dataflow library | |
Brown et al. | Agricultural reform: more efficient farming using advanced parallel refactoring tools | |
He et al. | A multiple-GPU based parallel independent coefficient reanalysis method and applications for vehicle design | |
Clarke et al. | FuPerMod: a software tool for the optimization of data-parallel applications on heterogeneous platforms | |
CN103810041A (zh) | 一种支持动态伸缩的并行计算的方法 | |
Luecke et al. | Fast epistasis detection in large-scale GWAS for Intel Xeon Phi clusters | |
Ilic et al. | Simultaneous multi-level divisible load balancing for heterogeneous desktop systems | |
Garcia et al. | A dynamic load balancing approach with SMPSuperscalar and MPI | |
CN114356550A (zh) | 一种面向三级并行中间件的计算资源自动分配方法及系统 | |
CN111090508B (zh) | 一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法 | |
Al Maruf et al. | Optimizing DNNs Model Partitioning for Enhanced Performance on Edge Devices. | |
Terzer et al. | Parallel extreme ray and pathway computation | |
Muraraşu et al. | Workload balancing on heterogeneous systems: A case study of sparse grid interpolation | |
Xu et al. | Generalized GPU acceleration for applications employing finite-volume methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120725 Termination date: 20130910 |