并行模型

关键词: 估算 给出 成本 模型

并行模型(精选十篇)

并行模型 篇1

1 并行处理简介

并行处理(parallel processing)是指,在并行机上,将一个程序分解成多个子任务,分配给不同的处理器,各个处理器之间相互协同,并行地执行子任务,从而达到加速求解速度,或者求解应用问题。

在实际的应用中,并行处理对需要进行处理的程序有一定的要求,并不是所有的程序都适合进行并行处理。下面将从业务和技术的角度来分析这种要求。

1.1 业务上的要求

为了能够并行地处理数据,以满足业务上的需求,程序必须具备以下几个特征:

1)程序中的处理项目可以以不固定的顺序执行。由于在并行的任务中,无法保证每个被处理项目的处理顺序,就必须保证在整个程序执行过程中,没有诸如“处理项目X必须在处理项目Y之后进行处理”的限制。也就是说,如果业务流程必须按照一定的顺序执行,那么它就不能进行并行处理。

2)处理项目可由一定的条件进行划分。为了能够将程序需要处理的任务划分成一个个处理项目以便进行并行处理,就必须要确定对任务进行划分的条件。从业务上看,这个划分条件可以是一个客户,一个日期或任何有意义的情形。一个好的划分条件能够将任务适当的分成多个处理项目的类型,某一类处理项目不会被其他处理项目影响。例如,客户A的处理项目不会受其他客户的处理项目影响

3)保证数据的一致性。必须保证即使在一个程序任务中只有一部分的处理项目被处理,也不会产生不一致的数据。这是因为如果一个并行任务运行失败,这一任务对数据库的任何修改都会被数据库回滚机制取消。但是,由于所有的并行任务都运行在它们各自的逻辑工作单元(LUW)中,由其他并行任务处理所产生的数据库修改都不会受数据库回滚机制的影响。事实上,那些已经完成的并行任务通过事务提交已经确认了数据库的修改,这就会出现某些数据库修改已经完成而另外一些没完成的情况。如果在并行处理中产生了不一致的数据,就必须能够处理它们。如果不一致的数据无法被处理,那么程序就不能进行并行处理。

4)并行任务必须具有重启机制。若某些正在处理的项目由于某种错误而失败,用户必须有办法在错误被修正以后重启当前的并行任务,以保证剩下的处理项目能够被处理。用户也必须保证,在该并行任务中已经被处理的项目不会被重新处理。

1.2 技术上的要求

为了能够并行地处理数据,待处理的程序必须具备以下技术特征:

1)可进行适当的条件划分划分条件具备业务特征和技术特征。在某些情况下,可能已经有几个划分条件作为备选,这时候就需要从这几个被备选的划分条件中选出最优化的条件。从技术的角度来看,划分条件能够:

(1)避免锁冲突。在并行处理的过程中,待处理的任务不能产生死锁,这一点非常的重要。

(2)并行处理任务的载荷接近。载荷接近意味着多个并行处理任务所需要处理的数据量接近,所耗用的时间也大致相同,这样就不会产生许多并行处理任务等待某个并行处理任务完成的情况,这种情况对并行处理的性能影响很大。

(3)产生足量的工作包。如果根据划分条件,仅可产生两三个工作包,那么并行处理的任务数目也是有限的,也就无法充分发挥并行处理的优势。

2)保证优化的吞吐量。根据划分条件,程序必须能够在一定的时间内产生足量的工作包。如果产生工作包的时间过长,那么使用并行处理模块的额外成本就会太高。

3)工作包在并行处理开始时需要准备就绪。如果在并行处理开始时,仅有几个工作包就绪,那么并行处理的效果将无法充分发挥。

2 树状结构的成本估算模型

SAP企业战略管理-数据仓库模块(SEM-BW)下的产品“产品设计成本估算”(Product Design Cost Estimate)是一种在产品设计、开发、报价等阶段进行计划、监测和优化产品成本的工具。它的核心功能有两个:一是进行产品的成本建模,二是基于成本构成模型,参考成本要素的生产或购买价格,对产品进行成本估算。

2.1 用树状结构描述产品成本的构成

首先来了解一下产品成本的组成。通常,产品成本主要由以下几类成本要素构成:

1)原材料(Material)

2)内部人工(Internal Activity)

3)外部人工(External Activity)

4)间接成本(Overhead Cost)

5)业务流程(Business Process)

6)运输成本(Delivery Cost)

对于某一种产品,它的成本可以由以上几类成本要素按照一定的组合方式和数量归结而成。这种组合可以被定义为一个“成本组”(Costing),它表示了这种产品的某个模块的构成情况;而成本组之间以及成本组与成本要素之间按照一定的方式组合成一个“含利润成本估算项”(Cost Estimate with Margin)。这种构成方式可以直观的用树状结构来描述。

其中,节点ACT表示人工,节点MAT表示原材料,BP表示业务流程,OVH表示间接成本,CE表示成本组,CEM表示含利润成本估算项。图2用一个Maxitec-R 3400的个人电脑的例子来说明一个典型的产品成本构成。

由图2可见,一台Maxitec-R 3400的个人电脑的成本可以表示成为一个树状的结构,这棵树的根节点代表这台个人电脑,中间节点代表个人电脑的组成模块,而叶子节点代表个人电脑的零部件。从这个树状结构模型可以看出,这台个人电脑是由以下成本要素和成本组构成的:

1)原材料:1200/R-1120、1200/R-1130、1200/R-1140、1200/R-1150、1200/R-1162、1200/R-1170,每一种原材料都用了一件(PC)。

2)2分钟的内部人工4275/1420;

3)成本组1200/R-1112、1200/R-1180C和1200/R-1190C各一个。

其中,成本组1200/R-1112和1200/R-1190C分别由若干原材料及成本组组成,成本组1200/R-1180C由2分钟的内部人工4278/1420及一件原材料1200/R-1250C组成。

2.2 基于成本构成树状模型进行成本估算

在以上例子中,我们可以看到,当确定了个人电脑的成本构成模型后,就可以计算出成本要素及成本组的价格,从而确认这台个人电脑所对应的含利润成本估算项PDCE/1/1200/R-1004的成本是1352.85欧元。上图树状结构的最后两列标明了每个成本要素或成本组在构成这台个人电脑中所占有的成本金额和货币单位。

也就是说,有了产品的成本构成模型,我们就可以参考使用到的成本要素的价格,确定每一个成本组的价格,进而根据成本组和成本要素或是成本组之间的构成,计算出产品对应的含利润成本估算项的价格,最终完成一个产品的成本及利润的估算。具体的算法如下:

1)对于树状结构的叶子节点,即成本要素,其成本=数量×单价。

2)对于树状结构的中间节点,即成本组,其计算成本为成本要素的成本之和。如果成本组没有指定价格,则其成本为计算成本;如果成本组有指定价格,则其成本=数量×指定价格;其单价=计算成本÷数量。

3)对于树状结构的根节点,即成本及估算项,其计算成本为成本要素、成本组的成本之和。如果成本及估算项没有指定价格,则其成本为计算成本;如果成本及估算项有指定价格,则其成本=数量×指定价格;其单价=计算成本÷数量。

图3直观地描述了一个产品的成本计算方法:

在以上的成本模型中,自下而上分为4层,成本计算由第1层开始,一层一层往树状结构的第4层的根节点进行计算,最终确定产品的成本。该成本模型的成本计算的步骤如下:

1)第1层

原材料Mat.1,成本=数量×单价=3000×5=15000

人工Act.:成本=数量×单价=200×3=600

间接成本的成本与数量无关,故对于经常性项目开支Ovh.:

成本=单价=400

2)第2层

成本项CE1:计算成本由其下的成本要素计算而来,因此其计算成本=原材料Mat.1成本=15000;由于其没有指定价格,因此成本=计算成本=15000;它需要的数量是1500件,因此其单价为10。

3)第3层

成本项CE2:计算成本由其下的成本项计算而来,因此其计算成本=CE1成本=15000。由于其没有指定价格,因此成本=计算成本=15000;它需要的数量是500件,因此其单价=计算成本÷数量=15000÷500=300。

成本项CE3:计算成本由其下的成本要素计算而来,因此其计算成本=Mat.1成本+Act.成本+Ovh.成本=2500;它的指定价格是3,需要的数量是1000件,因此成本=1000×3=3000;其单价=计算成本÷数量=2500÷1000=2.5。

4)第4层

成本及利润项CEM:由于它有指定价格,因此成本=指定价格×数量=200×100=20000;其计算成本=CE2成本+CE3成本=3000+15000=18000;其单价=计算成本÷数量=18000÷100=180。

3 成本估算的并行处理

3.1 并行处理的算法

在现实的应用中,一个产品的实际成本模型往往相当的庞大,例如空中客车公司的一架客机或是大众汽车公司的一部中级轿车等。这类的产品如果需要进行成本估算的话,它的成本要素和成本组的数量是以十万甚至百万计的。传统的方法是将产品分为一个个子模快,负责不同模块的成本计算人员分别对子模快进行成本计算,然后再将一个个子模块的成本聚集起来。对于这类产品的成本计算,往往费时费力,只能当子模块的成本计算完成以后,才能对子模块的组成模块的成本进行计算。对应到树状成本估算模型,计算的顺序是固定的,即从树状结构的叶子节点开始,按层级一层一层的向根节点的方向进行计算的。然后,可以看出,对于每一层的成本组的估算是可以并行进行的,每一层的成本组之间不存在数据的依赖关系,因此可以将同一层上的成本组的估算进行并行的计算处理,其主要的算法步骤是:

1)对树状成本模型进行自下而上的分层,叶子节点为第1层,根节点为第n层。

2)对每一层的成本组的计算进行分包处理:若干个成本组可以分为一个包,每一个成本组及组成它的成本要素(或成本组)为一个单元,当一个包内若干个成本组中包含的成本组及组成它们的成本要素(或成本组)达到一定的数量时,确认该工作包;将该层剩余的成本组继续构建单元和工作包,直到该层所有的成本组都有指定的工作包为止。

3)将待处理的层次按照升序排列,并按照自下而上的顺序处理。对于正在处理的某一层,将工作包分配给并行处理的任务,以便并行地处理工作包,对于每一个工作包,按照成本估算的算法进行计算,并将计算结果存储在数据库中,以便在下一层中读取计算结果,作为成本组成本归集要素。

3.2 并行处理的程序实现

以下将通过对图3表示的成本模型的并行处理举例,解释并行处理的程序实现。

1)树状结构层次的划分

将成本要素、成本组及含利润成本估算项统一地视为一个树状结构中的节点,叶子节点的层数为1;遍历每一个叶子节点,寻找它的父节点,其父节点的层数为叶子节点的层数+1;对于寻找到的父节点,寻找它们的父节点,其层数为节点层数+1,直到寻找到根节点;这样,成本模型的层级划分的计算结果如图4所示。

2)工作包的确认

由于成本的计算是按照自下而上的层级进行的,而对于每一层,又需要定义工作包,以便分配到不同的任务中进行处理。因此,需要为工作包定义数据结构以标识工作包的层级、工作包、及工作包中需要计算的成本要素(或成本组)信息。

定义数据结构S_PACKAGE如下:

其中,LEVEL表示工作包的层级,PACKAGE表示工作包号,ELEMENT_ID表示成本结构中的节点号,FOR_CALCULATION表示该节点是否需要计算,当其值为TRUE时说明该节点需要计算,当其值为FALSE时说明该只需要读取该节点已计算的值。

为了在每一层的计算过程中进行并行处理,需要指定工作包的大小,以获得足量的工作包:工作包中含有节点的数量为工作包的大小,定义工作包的大小参数为PACKAGE_SIZE,在本例中,PACKAGE_SIZE为2。

根据上一步骤确定的层级信息,及工作包的大小,可以确定一张工作包计算表,它的行结构为数据结构S_PACKAGE,工作包计算表如表1。

需要注意的是,虽然工作包的PACKAGE_SIZE设置为2,但如果存在必须出现在同一工作包内的节点数目超过2的情况时,工作包的节点数目超过设定值是被允许的。例如:第3层的第5个工作包含有4个节点,这是因为当处理第3层的需要计算的节点CE3时,发现其下含有三个子节点,这四个节点必须同时计算置于同一个工作包内,才能保证节点CE3的值计算正确;同理,第4层的第6个工作包含有CEM、CE2、CE3三个节点,以保证CEM的计算结果正确。

3)按照自下而上的层次,对每层进行并行计算

将工作包计算表按照字段LEVEL升序排序,对于每一层,调用SAP并行处理功能模块“SPTA_PARA_PROCESS_START_2”,对工作包进行并行处理。需定义三个子程序分别处理工作包的准备,工作包的计算及工作包计算后的处理:

(1)before_rfc_callback_form

负责从当前层的工作包计算表中取出一个待处理的工作包,准备需要处理的具体数据。

(2)in_rfc_callback_form

负责将当前处理的工作包内的数据进行计算。

(3)after_rfc_callback_form

负责将已处理的工作包的信息返回。

4 结论

通过对成本估算模型的并行处理,计算的效率得到了明显的提高,尤其是对于结构巨大的成本模型,其效果更加明显。表2通过一组数据给出了并行计算对性能提升的实际效果。

可见,成本估算模型的并行处理对计算性能的提升有着显著的效果。

参考文献

[1]张林波,迟学斌,莫则尧,李若.并行计算导论[M].北京:清华大学出版社,20063-5.

[2]J Dongarra,I Foster,G Fox,W Gropp,K Kennedy,L Torczon,AWhite.Source-book of Parallel Computing[M].荷兰:Elsevier Science,2006.

[3]Susanne Janssen,Werner Schwarz.SAP Professional Journal[M].德国:SAP出版社,2002:55-56.

[4]SAP Knowledge Warehouse.Product Design Cost Estimate[EB/OL].http://help.sap.com/SAPHELP_SEM350BW/helpdata/EN/a2/f77c94acbc59428694892ed352b01e/frameset.htm.

[5]SAP Knowledge Warehouse.Parallel Processing with Asynchronous RFC[EB/OL].http://help.sap.com/saphelp_nw04/helpdata/EN/22/0425c6488911d189490000e829fbbd/content.htm.

[6]SAP AG.AC505 Product Cost Planning[M].德国:SAP出版社,2005:14-16.

并行模型 篇2

江苏公务员&国家公务员历年真题库

2015江苏公务员考试【行测技巧汇总】 2015江苏公务员考试【申论技巧汇总】 2015江苏公务员【公基知识汇总】 2015江苏公务员历年考情分析

江苏公务员考试网:据了解,职务与职级应该是相对独立、相对分离的。职务反映职级,职级对应一定的职务。从功能上来看,二者的区别在于,职务的设置给公务员带来权力以及责任 义务的承担,职级的设置给公务员带来物质利益以及职业尊严的满足。推行职务与职级的并行,实质是使职级真正成为公务员的一条独立的职业发展阶梯。那些不能 晋升职务的公务员,也可以通过晋升职级获得合理的待遇和尊严。

据统计,我国县、乡两级公务员占全国公务员总数近60%。受机构规格和领导职数的限制,县、乡两级绝大多数公务员退休之前都解决不了副主任科员的待遇。

目前全国约有省部级现职官员3000人,据估算,公务员队伍中能晋升到省部级的比例仅为万分之四。

有研究表明,从科员到县处级干部的升迁比例仅为4.4%,从县处级升迁为厅局级的比例更是低至1%。有的人工作几十年还是副科长

根据有关统计,目前各地公务员工资的四个组成部分,职务工资约占20%,级别工资约占25%,地区附加津贴约占45%,各种补贴约占10%。职务工资比例虽不高,但由于地区附加津贴基本按照职务发放,所以实际占了近七成。

(本文来源于网络,仅供参考)

并行模型 篇3

关 键 词:MOS器件;模型参数;参数提取;器件模型

1 引言

器件的模型和模型参数提取是电子设计自动化(EDA)领域的关键工作[1]。采用遗传算法进行半导体器件模型参数提取是近年来兴起并被广泛使用的一种参数提取方法[2-3]。遗传算法全局搜索能力强、不需进行繁琐的求导运算,不依赖参数初始值等特点,理论上来说只要有足够的迭代次数种能找到最优解[4]。但是,由于遗传算法是一种搜索类算法,较之传统的基于梯度进行迭代计算的解析算法, 每进行一次迭代所需要的时间较长,计算量有了显著增加, 而且对许多复杂问题而言,例如采用的全局优化策略提取复杂模型的大量参数时,标准遗传算法的求解效果往往不是解决这个问题的最有效的方法,必须对算法进行修改与优化,这些因素无疑大大增加了遗传算法的计算量,为此必须考虑算法的耗时问题。本文针对遗传算法自身的耗时问题,讨论了并行遗传算法的特点,并以主从式遗传算法为例,证实了并行计算在参数提取工作中的可行性。

2 并行遗传算法

为了有效的解决遗传算法(GA)在模型参数提取过程中的耗时问题, 提高GA的运行速度,采用并行遗传算法(PGA)是提高搜索效率的方法之一。并行遗传算法[5-6]主要有主从式并行遗传算法、粗粒度并行遗传算法和细粒度并行遗传算法。

2.1 全局PGA模型-主从式模型(master-slave model)

如图1所示,主从式模型分为一个主处理器(master)和若干个从处理器(slaves)。主处理器监控整个染色体种群,并基于全局统计执行选择等全局操作;从处理器接收来自主处理器的个体进行适应度评估等局部操作,再把计算结果传给主处理器。

主从式模型的优点是简单,保留了串行GA 的搜索行为,对计算机体系结构没有严格要求,适合运行在共享存储和分布式存储的并行计算机上。如果适应度估值操作比其他遗传算子计算量大的多时,这是一种非常有效的并行化方法。

2.2 粗粒度PGA模型-分布式模型(distributed model)

该模型又称分布式、MIMD、岛屿模式遗传算法模型。在处理器个数较少的情况下,我们可以将群体分为若干个子群体,每个子群体包含一些个体,每个子群体分配一个处理器,让它们相互独立地并行执行进化。为了防止子群体早熟,每经过一定的间隔(即若干进化代),各子群体间会交换部分个体以引入其他子群体的优秀基因,丰富各子群体的多样性。除了基本的遗传算子外,粗粒度模型引入了“迁移”算子,负责管理区域之间的个体交换。如图2所示,通常存在两种迁移实现:岛屿模型、踏脚石模型。

2.3 细粒度PGA模型-分散型 (fine-grained model)

细粒度模型又称为邻域模型(neighborhood model)或细胞模型(cellular model)模型。如果并行计算机系统的规模很大,理想情况下处理器多到可以与染色体一一对应,则我们可以将每个个体分配一个处理器,让它们相互独立地并行执行进化,这样就能获得并行遗传算法的最大可能的并发性。如图3所示,在细粒度模型中,通常处理器被连接成平面网格(grid),每个处理器上仅分配一个个体,选择和交叉只在网格中相邻个体之间进行,所以网格上的邻域关系就限定了个体空间上的关系。由于对处理器数量的要求很高,所以细粒度模型的应用范围不广。

3 基于MPI的主从式遗传算法的的实现

3.1 总体构想

我们采用的主从式并行模型分为一个主处理器(master)和若干个从处理器(slaves)。主处理器监控整个染色体种群,并基于全局统计执行选择等全局操作;从处理器接收来自主处理器的个体进行适应度评估等局部操作,再把计算结果传给主处理器,其个体的分配过程是这样的:假设种群规模为N, 优化模型参数变量个数为M。适应度评估时,程序传给评价函数N个长度为M的向量。并行的任务是master处理器将这个N个长度为M的向量平均分配到各slaves处理器做适应度计算,计算结束后,评价函数返回N个适应度给master处理器。计算各处理器分得的染色体个数的方法是,首先计算出每个处理器至少分配到的染色体个数为AveNum=N/Size,如果处理器个数不能整除行数,这样将有部分处理器分得到(AveNum+1)个染色体,规定多余的染色体分配到编号小的处理器上。

3.2 并行中的消息传递机制

另外,需要注意的是,仅仅依靠例如C,C++,java等编程语言所编写的程序是无法实现上面叙述的染色体在各处理器之间的传递任务。因为,在并行计算环境中,每个进程均有自己独立的地址空间,一个进程不能直接访问其它进程中的数据,因而,在进行并行计算的任务之间进行的数据传输必须通过消息传递机制。消息传递机制,是指用户必须显式地通过发送和接收消息来实现处理器之间的数据交换

本文采用的是MPI(Massage Passage Interface)消息传递接口。MPI是一个很好的数据传递软件平台,可以通过调用MPI库函数来进行进程调度以及任务间的通信。它实际上是一个消息传递函数库的标准说明,吸取了众多消息传递系统的优点,是目前国际上最流行的并行编程环境之一,其特点是通用性强(只要求网络支持TCP/IP网络协议)、系统规模小、技术比较成熟。本文通过调用MPI的库程序来达到程序员所要达到的并行目的,使异构的计算机群体作为一个紧凑、灵活、经济的计算机资源来使用的并行环境。

3.3 共享内存多处理器主从式并行环境搭建

全局并行化模型并不限定计算机体系结构,它可以在共享内存和分布式内存计算机中高效实现。现在简单介绍一下两种并行编程的方法:分布式内存方法和共享式内存方法。

对于分布式内存的并行计算机,各个处理器拥有自己独立的局部存储器,不存在公用的存储单元,显然,这种方法的问题就产生于分布式内存的组织。由于每个节点都只能访问自己的内存,如果其他节点需要访问这些内存中的数据,就必须对这些数据结构进行复制并通过网络进行传送,这会导致大量的网络负载。他的优点是拥有很好的扩展性,有利于快速构造超大型的计算系统。

在共享内存多处理器计算机中构成并行环境,在共享式内存方法中,内存对于所有的处理器来说都是通用的。这种方法并没有分布式内存方法中所提到的那些问题。而且对于这种系统进行编程要简单很多,因为所有的数据对于所有的处理器来说都是可以使用的,这与串行程序并没有太多区别。这些系统的一个大问题是扩展性差,不容易添加其他处理器。

为了在微机环境下使用MPI构成分布式内存并行环境,只要将PC机联接局域网,然后在每台PC机上安装相应操作系统,并安装MPI软件包即可。分布式内存即种群被一个处理器存储。这个主处理器负责将个体发送给其它从处理器进行评估,并收集计算结果,进行遗传操作来生成下一代。

对于本文所采用的在共享内存多处理器计算机中构成主从式并行环境就更为简单,只要在PC机上安装操作系统(本文安装linux操作系统)和MPI软件包就可以实现并行环境了。在共享内存多处理器计算机中,种群可以保存在共享内存中,每个处理器可以读取被分配到的个体信息并将适应度写回,不会有任何冲突。

4 实验结果分析

将以上方法实现的基于MPI的主从式遗传算法应用于1.2um SOI MOS器件的阈值电压模型参数提取工作中。如图4所示,实验结果表明曲线拟合的效果很好,转移特性曲线最大误差都低于5%。采用并行计算后,参数提取的速度提高了接近2.5倍。

5 结论

从实际的测试效果来看,以上方法实现的程序的简洁有效,智能化程度很高,且具有较高的精确度。因此,本文提出的基于MPI的主从式遗传算法可以解决遗传算法在器件参数提取过程中的耗时问题。该方法简单易用,适合推广使用。

参考文献

[1] J.Liou A,Analysis and Design of MOSFETS: Modeling,Simulation,and Parameter Extraction[M].KLUWER ACADEMIC PUBLISHERS,1998.

[2] Kondo M,Onodera H,Tamaru K.Model adaptable MOSFET parameter extraction method using an intermediate model[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,1998,17(5):400-405.

[3] Yang P, Chatterjee P K, An optimal parameter extraction program for MOSFET models[J].IEEE Transaction on Electron Devices,1983,30(9):1214-1219.

[4] Li Yiming. An automatic parameter extraction technique for advanced CMOS device modeling using genetic algorithm.Microelectronic Engineering,2006,41(4): 1309-1321.

[5] 康立山,非数值并行算法(第一册)-并行遗传算法[M].科学出版社,2003.

设计—工艺并行工作模型的探讨 篇4

我国大、中型制造企业大都是集研发制造于一体的公司。面对市场的激烈竞争, 缩短产品交付周期是企业获取市场的重要法宝。产品设计周期和工艺设计周期在产品面向客户的交付周期中占有很大的比例, 对于多品种、小批量企业来说, 这个比例高达50%。着眼于提高设计—工艺并行度, 大大缩短设计工艺周期, 对企业生存与发展有着极其重要的意义。

1 传统工作模式分析

某公司获得了市场订单后, 设计部门将承担设计任务, 设计完成后 (通常以图纸归档为标记) , 提交工艺部门完成工艺设计。工艺设计包含工装设计、工艺规程 (工艺卡片设计等) 设计、工艺流程分工等, 其中工艺规程设计占工艺设计80%的工作量。设计和工艺是严格的串行方式。假定某产品设计周期5个月, 工艺周期3个月, 其设计工艺总周期则为8个月。

2 设计—工艺并行管理模型的探讨

产品设计阶段通常划分为:方案设计、技术设计、施工设计 (工作图设计) 、试验试制。方案设计、技术设计是面向设计的设计, 施工设计是面向制造 (工艺) 的设计, 在设计周期中占的时间比重最大。当产品设计进入到施工设计阶段, 涉及到产品的重大技术方案已经定型, 此时工艺人员可以高度介入, 开始工艺设计。以典型产品转向架设计为例, 假定方案设计、技术设计周期为2个月, 施工设计周期为3个月, 工艺规程设计周期为3个月, 其设计工艺周期为8个月。转向架大约由900个零部件构成, 按照设计零件的个数 (工作量) 与时间均等划分, 1个月可以完成300个零件设计, 所以工艺人员在施工设计开始后1个月就能从事工艺设计, 特别是大量的零部件的工艺卡片设计。按照这种并行模式, 可以将原设计工艺需8个月的工作周期缩短为6个月, 约25%。见图1。

实现这种管理模式, 有2个先决条件: (1) 在施工设计阶段, 设计人员和工艺人员要形成一对一的任务关系, 工艺人员完全明白自己对口的零部件工艺设计任务; (2) 有一个良好的信息平台支撑, 保证工艺人员能及时获取设计信息, 高度并行地从事工作。

3 设计—工艺并行信息化模型的探讨

信息化模型主要是将管理模型数字化 (计算机化) 。我们假定产品设计工作已完全在PDM的项目管理模块支撑下进行, 实现了设计项目的阶段划分, 任务分解, 任务指派, 整个设计工作在项目任务树的组织下有序展开。我们将设计项目任务树扩展至设计—工艺并行项目任务树, 在项目创建时确定是否是设计—工艺并行项目。如果是, 则在创建设计项目任务树的同时, PDM系统自动创建工艺项目任务树, 两个任务树保持相同结构, 特别是在施工设计阶段, 设计每指派一个任务, 必在工艺任务树中自动产生一个相应的工艺任务, 设计任务和工艺任务间建立关系, 形成1—1的明确关系, 保证工艺任务的执行者, 随时能浏览设计任务的工作情况, 从而确定是否开展对应的零部件的工艺卡片设计。每个工艺任务与设计任务一样, 必须具备“任务名称”“任务承担者”“开始时间和完成时间”三个要素。见图2。

4 结语

本文只给出了在PDM系统支撑下的设计—工艺并行的顶层结构, 仅涉及项目阶段划分和任务分解, 至于设计BOM和工艺BOM的数据结构、设计变更向工艺的传递等问题, 由于篇幅有限没有阐述。基于本文原理的设计—工艺并行的工作模式已在某大型制造企业实现。

摘要:产品设计与工艺设计高度并行工作, 能显著有效地缩短产品设计周期, 是制造业追求的目标。从现状分析、管理模型、信息化模型三个维度进行了有益探讨, 并给出了基于PDM系统的实现方法。

系统并行上线总结 篇5

1、新版网站尽量在本地进行改版制作,如果需要在服务器上进行操作的,可以找一个临时空间,用自带的三级域名或绑定二级域名,旧版的网站一定不要有任何动作,等新版处理好之后,直接更换掉旧版网站。

2、如果改版过程中涉及更换域名,一定要把旧的域名向新域名做301重定向操作。因为这样能够很好的把以前积累的权重传递到新域名。并且301要一直做,最好 做1年以上,而且累积了一定时间的域名百度也会有个很好的评价的。如果用同一个域名改版网站,可以去百度投诉中心提交投诉,有很大几率能够当天更新快照。

3、在制作新版网站的时候,进行使用旧版网站上的标题、关键词和描述,本身来说,这3个地方对搜索引擎来说影响巨大,因此,在改版时尽量不要改动网站标题、关 键词和描述,这些地方的改动,会导致搜索引擎把你的的网站打入沙盒之中,将会在很长一段时间内,因重新考察你的站点而删除你网站的排名,无疑增加了你的运 营成本,也会造成客户的流失,流量直下!

4、界面和布局都可以全部更换,尽量和老网站的目录层级和结构差不多,百度非常喜欢结构和路径合理的网站

5、网站新版开发完成后,要上线测试,如果发现问题,立即进行修改。这个时候,老版的系统一定是同步运行的。你可以建一个二级域名指向新系统进行测试,也可以在老系统中发布通知,链接上新系统地址,让更多的老系统用户参与试用。

6、请注意将新系统站点根目录下的robots.txt改为拒绝所有搜索引擎扫描收录,原因很简单:新系统的测试域名以后会更改,并且很多页面seo可能没有考虑到位。

7、保持新系统与旧系统的url地址上的统一,特别是老版已经被收录的页面,如果不一致,将会造成新版上线后流量的大幅减少(我用urlReWrite可最大限度达到统一)。

8、新旧系统切换前,必须要做好网站地图,并要仔细检查页面中是否有死链。

9、发一份站点通告或帮助,向用户说明老系统中的功能,在新系统中怎样才能找到。

10、在新旧系统并行运行一段时间后,你可以确信新系统已经比较完美后,请找一个在线用户最少的时候,完成系统的切换(改虚拟主机映射即可,我在后面的文章中会介绍)。

11、在技术实现上,还有一个非常重要的问题,就是将新旧站点的域名信息,写到一个配置文件中,新系统中所用用到的地址信息,都从配置文件中读取,在新旧系统切换的时候,你将会发现这么做的好处是多么的有用。

12、一般改版后,搜索引擎都要重新对网站进行考察,原有的外链已经失效不起作用了,因此,新网站刚上线一定要更新些内容,高质量的内容再加上外链,内容的添加要循序渐进,一定要原创,让搜索引擎爬虫有一个通道能重新访问你的网站,增加蜘蛛访问你网站的频率。

13、最后,新系统成功切换替代老系统后,请给系统的每一个老用户发一封邮件,告诉他们站点已经更新,更新的亮点也要说明,“喊他们回家吃饭了”,呵呵。

不同的切换方式,决定了数据导入时注意事项的不同。

分步切换还是并行上线,是ERP系统上线时决策者必须做出的决策。分步切换和并行上线的优缺点分析

在新旧系统切换时,决策者通常有两种选择:分步切换和并行上线。

不论决策者选择何种方式,他都需要明白所选方式的优缺点,以采取合适的准备工作。

分步切换的优缺点

通常,分步切换的方法非常具有实际意义。

通常,企业可以让财务和库存管理两个模块先切换,随后销售、采购、生产等模块再跟进。这种方法至少具有以下一些好处。容易控制:

相对于所有模块一起切换的大兵团作战,这种方式更容易控制。而且财务和仓管部门一般较为严谨,第一个月先稳住这两个部门的阵脚,对于士气会是非常大的鼓舞。

速度加快:只有这两个模块进行切换,在操作上是大大简化了,系统操作的速度和质量将大大提高。对账简化:如果第一个月仍然并行,那么只有财务和库存管理的新系统和旧系统的对账就将大大简化,甚至可以用自动对账的工具从凭证直接核对。

期初订单:由于销售模块还没有上线,企业就不需要准备期初订单了,所有和期初订单有关的错误和问题也可以避免了。关注新订单、新流程:当其他模块跟进时,企业只关心崭新的业务,比如完全新的销售订单。我们可以直接用新的流程处理这些订单。而对于期初订单,实施者不需要关心处理它们的过程,而仅仅是在财务和库存管理上核算它就可以了,一段时间以后,它们的影响将自然地结束。

当然,分步切换做法的缺点也是明显的。

销售数据不完整:相当长一段时间内,有些信息会丢失或不完整,这主要和期初订单相关。比如获利分析的数据将不完整,和期初销售订单相关的获利分析数据就丢失了。不要低估这一点,因为上线后看不到完整的报表,会使不了解情况的领导们非常不高兴。因此这个问题一定要在使用前就明确说明

切换期间拉长:这不能完全说是一种缺点,因为切换期拉长其实分散了工作量,也提高了成功率。但是对于某些条件好的公司,可能因为这一点而选择更快的全面切换方法。

更多的系统设置:比如要设置两套物料移动类型,一套是配合销售订单、采购订单和生产订单的,一套是独立的。权限也需要做相应设置

总而言之,对于实施困难大、订单执行周期较短的项目,考虑分步切换的方法会有不错的效果。

并行上线的不利因素 为什么并行是我国企业实施ERP时比较喜欢的一种上线方式? 理由只有两个字:风险。事实上,选择并行最主要的理由就是避免风险,而并行这种方式本身就会带来比较大的风险。并行对于系统切换不利的原因主要有:目的不明、工作量大、对账困难。目的不明:并行的目的实质上是对新系统的测试,但是用并行来测试系统无疑是非常昂贵的。同样性质的业务要重复地输入无数遍,最后查出的差异往往只是输入上的错误,对于系统验证是毫无帮助的。工作量大:并行无疑加大了所有系统用户的工作量。巨大的工作负荷加上对于新系统的陌生和恐惧,使得目标越追越远,最后不得不放弃。

对账难:对于两套有不同流程、不同概念的系统,即使不存在会计政策的变更,要完成对账的难度也是可想而知的。而且对账不同于审计,如果并行期以旧系统为准,那么新系统最终必须和旧系统完全一致才行,这样根本无法使用审计中的重要性原则,而只能是完全的核对。总之,并行的目的是防止失败的风险,而事实是它本身成为造成失败的最重要因素之一。如果采取不并行的上线方式,ERP的实施者需要采取更多的防范切换失败风险的措施,如测试和培训。

正如上面讲到并行的目的是对新系统的测试和验证,那么如果不并行就必须强化测试。实际上除了对于系统的测试,数据导入相关的测试也不容忽视。如果测试做得不充分的话,并行上线就容易演变成一次实际数据测试,虽然测得非常全面,但是成本太高了。

如果不并行,一定要非常关注切换前期的培训,特别是对系统实际使用者的培训。对于是否并行这个问题,目前业界仍然没有一个放之四海皆准的真理。但笔者希望,上面的分析能对决策有所帮助。

在商务印书馆实施管理信息系统过程中,是把分步切换和并行上线两种方式结合在一起了。商务印书馆是逐步上线一个个模块,而对于某个模块的上线却采用的并行的方式,如发行系统。

发行系统的切换特点是:风险大、要求效率高,准备必须充分。所以在正式切换之前,信息中心和实施厂商先期完成了详细的结构分析,在此基础上进行数据试转换,以保证数据切换的顺利和成功。在上线新的管理信息系统之前,商务印书馆已使用另一家公司的发行系统有3年时间,原系统积累了大量业务数据,发行业务人员在原系统基础上已能实现库房管理、批发管理、财务管理等工作。商务印书馆为新的发行系统上线确定了以下目标: 1.实现从原北大方正发行系统平滑过渡;

2.发行子系统与商务印书馆管理信息系统其他子系统实现无缝的信息共享和统一的业务操作,将本系统生成的数据自动传递给其他相关的子系统,避免数据的重复录入,保证数据的一致性和系统的应用效率。就新旧系统如何切换的问题,信息中心与发行部、实施厂商共同研究,提出三种解决方案。

第一,新旧系统实时并行。该方案要求发行部业务员同步使用新旧两套系统,系统风险性最小,可以通过新旧系统的对照来验证系统的可靠性,但业务员工作负担最大,同步工作要求严格。

第二,新旧系统分时并行。该方案要求发行部业务员使用新系统,次日由发行部指定专人将指定的业务区域的前一工作日的业务单据录入旧系统,这种方案对业务员造成负担相对比较小,系统风险相对比较低,但是由于业务员随时可以修改前几个工作日的单据,所以两个系统很难同步,同时库存数据也无法核对。

第三,完全抛弃旧系统。发行部用新系统开展业务工作,完全抛弃旧系统。这种方式相对人工成本小,但存在一定风险。发行部考虑到系统切换的风险性倾向于采用第一种方案,而实施厂商从系统实施的复杂度来考虑建议采用第三种方案。经信息中心与发行部、实施厂商三方协商,综合考虑各种因素,最终决定采用第二种方案。决定采用第二种方案后,商务印书馆对前期数据进行了准备。首先,发行盘库结束,由信息中心同步备份数据,以保证原始数据的安全性。其次,实施厂商在原来试转换的基础上,正式对商务印书馆原北大方正发行系统进行数据迁移。再次,实施厂商会同信息中心及发行部相关业务人员对系统切换后的数据准确性进行校验,并得出结论:对照新旧系统,数据能够保持一致。根据系统切换的第二种方案,发行部门正式使用新系统,经过三天的系统并行,对照新旧系统,数据能够保持一致,加之系统并行工作量过大,发行部门决定放弃旧系统,完全切换到新系统进行业务工作。经过近两个月的试运行后,发行子系统运行流畅,发行部所有的业务工作都在系统的支持下开展。

系统开发完毕,经过反复、周密的测试,由项目负责人将系统重新发布出去,但要尽量保证原有数据完整性,保证新旧系统切换过程中还影响业务部门使用。因此建议先期新老系统并行,待新系统稳定之后再关掉老系统。

五、系统切换

为了保证原有系统有条不紊的、顺利转移到新系统,在系统切换前应仔细拟定方案和措施,确定具体的步骤。系统的切换方式通常有三种,如图7-3-2所示。1.直接切换

直接切换就是在原有系统停止运行的某一时刻,新系统立即投入运行,中间没有过渡阶段。用这种方式时,人力和费用最省,使用与新系统不太复杂或原有系统完全不能使用的场合,但新系统在切换之前必须经过详细调试并经严格测试。同时,切换时应做好准备,万一新系统不能达到预期目的时,须采取相应措施。直接切换的示意图如图7-3-2所示。(a)。

图7-3-2

系统切换的方式

2.平行切换

平行切换就是新系统和原系统平行工作一段时间,经过这段时间的试运行后,再用新系统正式替换下原有系统。在平行工作期间,手工处理和计算机处理系统并存,一旦新系统有问题就可以暂时停止而不会影响原有系统的正常工作。切换过程如图7-3-2(b)所示意。

平行切换通常可分两步走。首先以原有系统的作业为正式作业,新系统的处理结果作为胶合用,直至最后原有系统退出运行。根据系统的复杂程度和规模大小不同,平行运行的时间一般可在2~3个月到1年之间。

采用平行切换的风险较小,在切换期间还可同时比较新旧两个系统的性能,并让系统操作员和其他有关人员得到全面培训。因此,对于一些较大的管理信息系统,平行切换是一种最常用的切换方式。

由于在平行运行期间,要两套班子或两种处理方式同时并存,因而人力和费用消耗较大,这就要时实现周密做好计划并加强管理。3.分段切换

这种切换方式是上述两种方式的结合,采取分期分批逐步切换。如示意图7-3-2(c)。一般比较大的系统采用这种方式较为适宜,它能保证平稳运行,费用也不太大。

采用分段切换时,各自系统的切换次序及切换的具体步骤,均应根据具体情况灵活考虑。通常可采用如下策略:

(1)按功能分阶段逐步切换。首先确定该系统中的一个主要的业务功能,如财务管理率先投入使用,在该功能运行正常后再逐步增加其它功能。

(2)按部门分阶段逐步切换。先选择系统中的一个合适的部门,在该部门设置终端,获得成功后再逐步扩大到其它部门。这个首先设置终端的部门可以是业务量较少的,这样比较安全可靠,也可以是业务最繁忙的,这样见效大,但风险也大。

(3)按机器设备分阶段逐步切换。先从简单的设备开始切换,在推广到整个系统。例如对于联机系统,可先用单机进行批处理,然后用终端实现联机系统。对于分布时系统,可以先用两台微机联网,以后再逐步扩大范围,最终实现分布式系统。

总之,系统切换的工作量较大,情况十分复杂。据国外统计资料表明,软件系统的故障大部分发生在系统切换阶段,如图7-3-3所示。这就要求开发人员要切实做好准备工作,拟定周密的计划,使系统切换不至于影响正常的工作。

图7-3-3

故障发生时间

此外,在拟定系统切换计划时,应着重考虑以下问题:(1)系统说明文件必须完整;(2)要防止系统切换时数据的丢失;(3)要充分估计输入初始数据所需的时间,对管理信息系统而言,首次运行前需花费大量人力和时间输入初始数据,对此应有充分准备,以免措手不及。例如,对于一个5 000纪录的库存数据库,如果每条纪录含200个字符的描述信息,就意味着有1 000000字符必须通过键盘进入磁盘,即使操作员以每小时8 000个字符输入速度,对于一个规模较大的系统,输入初始数据所需时间也是非常可观的。

从旧系统向新系统的切换方式有三种:直接切换、并行切换和分段切换。211 直接切换

直接切换是在确定新系统试运行准确无误时,立刻启用新系统,终止老系统运行。考虑到新系统在测试阶段时试验样本的不完全性,所以这种方式一般适用于一些处理过程不太复杂,业务数据不很重要的场合或者老系统已完全无法满足需要的情况。212 并行切换

这种切换方式是新老系统并行工作一段时间,对照新老系统的输出,并经过一段时间的考验以后,新系统正式替代老系统。由于与旧系统并行工作,消除了尚未认识新系统之前的惊慌与不安。在银行、财务和一些企业的核心系统中,这是一种经常使用的切换方式。它的主要特点是安全可靠,但费用和工作量都很大,因为在相当长时间内系统要两套班子并行工作。213 分段切换

分段切换又称逐步切换、向导切换、试点过渡法等。它是以上两种切换方式的结合。在新系统全部正式运行前,一部分一部分地替代老系统。那些在转换过程中还没有正式运行的部分,可以在一个模拟环境中继续试运行。这种方式既保证了可靠性,又不至于费用太高。但它要求子系统之间有一定独立性,对系统的设计和实现都有一定要求,否则就无法实现这种分段转换的设想。

第一种方式简单,但风险大,万一新系统运行不起来,就会给工作造成混乱,这只在系统小且不重要或时间要求不高的情况下采用。第二种方式无论从工作安全上,还是从心理状态上看均较好;缺点是费用大,系统太大时费用开销更大。第三种方式是为克服第二种方式缺点的混合方式,较大系统使用较合适,当系统较小时不如使用第二种方式方便。3 信息系统切换的难点

311 与新系统的模块功能集成度成正比的复杂性目前开发的信息系统多是分模块的集成系统。这些模块和功能之间是相互渗透和连贯的,在组织的日常运作和管理中,具有不可比拟的优点,但在系统切换时系统的模块和功能越多越复杂,系统切换的困难也就越大,而且难度成倍增加。正像2 条直线相交是1 个交点,3 条直线相交是3 个交点,4 条直线相交就是6 个交点一样,集成点会随着模块和功能的增加而成倍增加。而且即使使用同样的模块,不同的组织对其进行不同的配置时,其切换的流程、方式也会有所不同,因此很难得到普遍适用的规则。312 与旧系统的数据、流程割舍不断的牵连系统切换最重要的工作之一是数据转换。旧系统的数据一般质量较低也较分散,在向新的信息系统转换时,运作所需的大部分数据需要通过加工旧系统的数据获得,因此,系统切换的难度完全取决于旧系统的质量。这里的旧系统,不单指目前组织正在使用的计算机系统,也可以是过去手工操作的业务流程。旧的流程会影响新系统的初期数据,旧流程越不规范统一,系统切换时就越麻烦。313 人力、物力、财力的昂贵代价

系统的切换在时间上应有严格要求,在新旧系统切换过程中,组织或机构本身的业务活动是不能中断的,对于这段时间业务的记录是使用原来旧系统的一套方式,还是按新系统的要求来做? 这是一个艰难的选择。适合选择直接切换方式的情况并不多,但选择另两种方式,在某种程度或阶段上则意味着新旧系统会并行存在,所有相关人员的工作就会加倍,而两套数据或记录的“对接”问题更为复杂烦琐,系统的切换难度更大。314 人为习惯与思想阻碍

信息系统的切换不仅仅是系统项目开发组的任务,它涉及组织的许多部门和人员。一个信息系统的实施是否成功,取决于组织管理层的权威与能力,取决于部门间的责任与配合,也取决于整个公司的文化。而组织领导层的支持和理解,无疑是成功的前提条件。不幸的是,旧系统和旧流程很混乱的组织,在信息系统实施过程中项目组得到的支持往往也较少。另一方面人们内心深处都恐惧变化,尤其是这种变化的好处还未直接显现时。在信息系统切换阶段,这种变迁会使组织员工面临一些工作和心理上的负担,低落或抵触情绪会造成时间或数据质量的失控,无论哪种情况,对于系统切换而言都是致命打击。4 成功进行系统切换的关键要素 411 细致的规划

系统切换是信息系统实施阶段一个关键步骤,要有专门的班子来讨论和制定切换计划,包括切换的方式,切换的起点和期限,切换的步骤和进度控制,资源的配置和人员职责,初期数据的准备工作等。计划必须经过审定并形成文档,以备查考。412 领导的重视

信息系统的开发是为了配合组织实现其目标,而组织的领导者作为组织目标的决策者,应对新的信息系统的实施给予相当的重视并提供良好的系统切换条件和环境,更重要的是要学习和理解信息系统所带来的先进的管理思想和方法, 布置良好的合作与分工,同时对新信息系统的实施充满信心。413 人员的培训

所有的信息系统都是人机系统,人是起决定作用的因素。在信息系统开发的整个阶段都必须进行人员的培训,但在新旧系统切换时的人员培训尤其重要。一是这个阶段属“混乱”时期,仅仅经过试验性测试的信息系统还未进入实战状况,旧的一套系统又还没退役;二是这个阶段参与人员最多,包括新系统开发者、管理者、使用者。不进行必要的人员培训必然导致系统切换的失败。

414 组织的重构

新信息系统的实施可能会对组织的机构提出一些要求,包括合并或新增一些机构,并且需要改变原有的管理规则与制度,改变原来的工作模式,创建面向新系统的业务流程和相关制度,包括组织文化,以减少新旧系统之间的冲突与错位。415 数据的完善

为了使系统能够完好运行,数据必须完整、准确、一致、及时。新系统涉些及哪数据? 原有中需要改变、补充或完善的数据是什么? 分别来源于哪些部门或功能?切换工作的延误与“瓶颈”最终都会归集于数据的整理、变换工作。416 前期工作的质量

温特斯模型参数并行求解方法与应用 篇6

关键词:温特斯模型,并行计算,预测,压缩空气

空压机群在压缩空气生产过程中将消耗大量的电能,通过对机群的合理调度有助于提高能源的利用率,而合理调度取决于对压缩空气量需求的合理预测。针对压缩空气生产和使用的周期性特性,本文利用霍尔特-温特斯模型对时间序列趋势变化的预测特点,在分析压缩空气产能周期性和规律变化的基础上设计了一个符合实际的压缩空气产能预测模型。

温特斯模型中的一组平滑系数一般通过经验取值,取值的不同对预测的精度影响较大。为提高预测精度,常用穷举法,遍历平滑系数所有取值[1],该方法通常需要进行100万次以上的串行循环计算,所需计算时间长,效率低,而利用并行计算方法求解最优平滑系数,可减少计算时间,提高运行效率。

1 并行计算加速比

并行计算[2,3]通常针对具体问题,利用它内在的并行性设计并行算法,将其分解为互相独立、但彼此又有一定联系的若干子问题,分别交由不同处理机,按照并行算法完成问题求解。

并行计算运行时间分析是衡量并行算法最重要的标准之一,其用并行加速比来反映并行算法计算效率的高低。根据Amdahl定律,并行算法的绝对加速比为:

S=Τs/Τp(1)

式(1)中:Ts为标准串行算法的运行时间,Tp为并行算法的并行时间。

2 温特斯模型基本理论

2.1 温特斯模型原理

温特斯线性和季节性指数平滑预测模型[4]由霍尔特-温特斯提出,是一种把具有线性趋势、季节变动和规则变动的时间序列进行因素分析,并与指数平滑法结合起来的季节预测模型。该模型由三个平滑方程式组成。首先分别对长期趋势St、趋势增量bt、季节变动Ft,作指数平滑,然后由这三个平滑结果建立预测模型,外推得到所需预测值。该模型特别适用于既有线性趋势又有季节变动的时间序列短期预测。

温特斯线性和季节性指数平滑预测模型的三个平滑方程[5,6,7]为

St=αYtFt-L+(1-α)(St-1+bt-1)(2)bt=β(St-St-1)+(1-β)bt-1(3)Ft=γYtSt+(1-γ)Ft-L(4)

其中:St代表稳定性;bt代表趋势性;Ft代表季节性;L为季节或周期长度,如一年的月数、季节数等;Ytt时期的实际值;αβγ为平滑系数,取值在(0,1)之间。

式(2)对指数平滑平均数St进行计算。第一项中消除了YtFt-L即季节变化因子的影响。当t-L时期的值大于季节平均值时,Ft-L的值大于1,经除法运算后得到的值小于Yt,即表示消去了t-L时期Ft中大于季节平均值的差额;当Ft-L的值大于1时,情况相反。第二项中t-1时期的平均数St-1加上bt-1即趋势变化平均数,提高了指数平滑结果的准确性。通过该式计算出的St,即可代入式(3)、式(4)式进行运算。

式(3)用来修匀平滑时间序列的变化趋势值。St-St-1的差值存在随机干扰,因此用平滑系数β进行加权,用1-βbt-1进行加权。

式(4)对季节因子的指数平滑平均数Ft进行计算,为季节因子(Yt/St)和季节数据Ft-L加权运算之和。Ftt时期的实际值Yt与时间序列指数平滑平均值St的比值,其中Yt既包括季节性也包括随机性,St不包括季节性。

根据式(2)~式(4)可以求得k个时期以后的预测值,公式如下:

Yt+k=(St+kbt)Ft-L+k(5)

k的取值一般在(1,L)之间,若取值在(1,2L)之间,则表示要预测下两个周期。

2.2 温特斯模型的求解步骤

在使用温特斯模型前,首先要判断历史数据是否存季节性波动,若不存在,则不能使用该模型。温特斯预测模型的求解步骤如下:

(1)确定季节性周期长度L;

(2)选取平滑系数αβγ,一般依靠经验取值,取值范围在(0,1)之间,本文运用并行计算方法求取一组最优平滑系数;

(3)确定初始值,一般初始值由以下式(6)~式(8)给出,也可由其它方法确定;

SL+1=YL+1(6)Ft=YtY¯(Y¯=i=1L+1YtL+1)(7)

bL+1=(YL+1-Y1)+(YL+2-Y2)++(YL+(L-1)-Y(L-1))(L-1)L(8)

(4)利用式(2)~式(4),确定StbtFt这三个值;

(5)通过式(5),获得所需预测值。

3 预测模型软件设计

3.1 模型参数的并行求解

本文选取2010年1月4日至2010年1月31日四周的历史压缩空气日产数据,并对2010年2月1日至7日这周的日产压缩空气量进行预测。通过对提取的数据分析,如图1所示,周一至周五的日产压缩空气量远远高于周六的产量,周日的产量相较于周六又有大幅回升,具有明显的周期性,适用于温特斯模型。因此本文中将季节性周期长度定为7,以一周为一个周期。

平滑系数αβγ的值,一般依据经验取值,或通过穷举获得。前一种方法所求得的预测结果一般不理想,而后一种方法计算量大,三个平滑系数分别从0.01取值至0.99,三重嵌套循环,需要进行100万次以上的计算,串行计算所需时间长、效率低。为减小计算时间提高计算效率,本文所设计的软件利用Parallel类及并行循环,并发枚举出αβ值,在[0.01,0.99]区间内进行任意的组合,γ的值依旧顺序遍历获取。当实际值与预测值的相对误差和最小时,即可以认为该组平滑系数为最优。通过实验得到的一组最优平滑系数为:α=0.15,β=0.14,γ=0.01。

3.2 结果分析

并行效率的高低可以利用Amdahl定律即加速比来评价。在Intel Core i7四核处理器,4G内存的同一硬件环境下运行,串行计算所用的执行时间为413秒,并行计算所用的执行时间为217秒,加速比为P=1.903。由此可见并行算法比串行算法提升了近一倍的性能,提高了运算速度。

对预测结果的精度和可靠性进行评价是预测分析的重要组成部分,常用多项误差形式来对预测结果进行评价,以此来判定各种预测方法的优点和可行性。常用的误差指标如下,其中Yt是序列在t时刻的实际值,Yt是序列在t时刻的预测值:

(1)绝对误差(Absolute Error):

E=|Yt-Yt|(9)

(2)相对误差(Relative Error ):

e=|Yt-YtYt|(10)

(3)归一化偏差(Normalized Bias):

ΝormalizedBias=1nt=1n|Yt-YtYt|(11)

通过运算得到:当平滑系数取值最优时,预测值与实际值相对误差和最小。如表1所示,所得到的预测值相对误差均小于10%,最低值达到0.03%,平均相对误差为3.89%,归一化偏差为0.04。如图2所示,第五周的预测值的趋势变化与实际值的趋势变化基本一致,表明该模型预测精度较高,可适用于短期日产压缩空气量的预测。

4 结论

霍尔特-温特斯模型是一种三参数指数平滑模型,适用于线性趋势、季节变动和规律变动的时间序列问题。将并行计算引入到温特斯预测模型的最优平滑系数求解,不仅提高了计算效率,而且达到了预期的预测效果,预测得到的数据将为能源生产的任务调度、制定高效节能的生产计划提供决策支持。

参考文献

[1]赵嶷飞,王红勇,张亮.用霍尔特-温特斯模型预测航空运输总周转量.中国民航大学学报,2007;25(2):1—3,11

[2]王鹏,吕爽,聂治,等.并行计算应用及实战.北京:机械工业出版社,2008

[3] Wang Hao,Fu Xudong,Wang Guangqian.A common parallel com-puting framework for modeling hydrological process of river basins.Parallel Computing,2011;37:302—315

[4] Grubb H,Mason A.Long lead-time forecasting of UK air passengersby Holt-Winters methods with damped trend.International Journal ofForecasting,2001;17:71—82

[5]牛东晓,曹树华,卢建昌,等.电力负荷预测技术及其应用.北京:中国电力出版社,2009

[6]张晓庆.关于线性季节加法趋势预测模型的探讨.统计与决策,2005;(9):22—23

并行模型 篇7

随着人类基因组计划[1]的实施,DNA和蛋白质序列数据库的规模已呈指数增长,单纯依靠实验手段研究、理解这些生物大分子的生物意义已远远不能满足目前分子生物学发展的要求。生物信息学[2]作为一门综合运用分子生物学、数学和计算机等学科的理论和方法的交叉学科,为阐明和理解这些海量数据所包含的生物意义提供了可能。序列比对是生物信息学研究的重要方法之一,它通过对DNA和蛋白质序列进行相似性比较,指明序列间的保守区域和不同之处,为进一步研究它们在结构、功能以及进化上的联系提供了重要的参考依据。

FASTA是第一个被广泛应用的序列比对和搜索工具包,包含若干独立的程序。其中SSearch应用程序实现了一个严格的Smith-Waterman[3]序列搜索,它使用William Pearson[4]对SW算法的一种实现方式,用于比较一条查询序列和一组相同类型的核酸或蛋白质序列间的相似性。与Blast相比,SSearch具有更高的灵敏度。

近年来,众核体系结构因其强大的片上并行能力和相对较合理的片上计算/存储比例日益引起学术界和产业界的关注,各种众核系统相继出现。和一般的商业多核处理器结构不同,众核体系结构的目标是最大化片上并行性,每个核的功能设计得很简单,通过大量核的并行处理实现高性能。已有的研究结果表明众核体系结构在分子动力学、数值计算等领域具有很大的潜力。

本文研究立足于众核体系结构,探讨加速SSearch核心算法在此类结构上的并行化问题。

1 SSearch核心算法分析

1.1 序列比对

生物信息学的一个主要主题就是比较 DNA 序列(或核苷酸序列)并尝试找出两个序列的公共部分。如果两个 DNA 序列有类似的公共子序列,那么这些两个序列很可能是同源的。在比对两个序列时,不仅要考虑完全匹配的字符,还要考虑一个序列中的空格或间隙(或者,相反地,要考虑另一个序列中的插入部分)和不匹配,这两个方面都可能意味着突变。在序列比对中,需要找到最优的比对(最优比对大致是指要将匹配的数量最大化,将空格和不匹配的数量最小化)。两个同源的序列,可能整体来讲相似性较低,但是在某些局部区域,相似性会很高。

令为序列的字符集合∑,则对于DNA,∑={A,C,G,T};对于蛋白质,代表20种氨基酸。特殊符号‘-’,代表空格,表示发生在基因突变过程中的插入或者删除。得分方程代表整个序列的比对得分,如果xy代表中的某个字符或者空格,那么f(x,y)即为xy的比对得分,总的来说,如果匹配,得分为正,反之,为负。

Gap表示在一个对齐序列中任意一组连续的空格Space的长度即为空格的个数,记作#Space,Gap的个数记作#Gap

对于两个给定的DNA片段,考虑下面的序列比对:

S′=attc--ga-tggacc

T′=a--cgtgatt---cc

共包含4个Gap,8个空格,#Space分别依次为2,1,2,3。用来调整序列并辅助产生最佳对齐方式,但是每一个都有对应的惩罚权重的惩罚函数为:

Penaltygap=Wg+Ws×(#Space)

其中是Penaltygap惩罚权重,Wg是初始罚权重,Ws是扩展罚权重。

序列比对分为局部序列比对和全局序列比对,全局序列比对考虑序列的所有字符,试图对齐整个序列,令ST为两个序列,全局序列比对插入空格后分别映射为S′、T′,其中:

(1)|S|=|Τ|,其中|S||Τ|分别表示的序列长度,并且

(2) 去掉S′、T′的空格之后得到原来的S,T

全局比对的得分是:

Score=i=1lf(si,ti)+Wg×(#Gap)+Ws×(#Space)

其中l=|S|=|Τ|siti分别表示序列中的第i个字符。

1.2 Smith-Waterman算法

SW算法是通过动态规划的方法计算序列的局部最优比对,对于两个序列ST,长度分别为lalb,SW算法计算分别以序列ST的第i和第j个字符为止的相似性得分,其计算公式为:

E(i,j)=max{E(i,j-1)-Wg,H(i,i-1)-Wg-Ws}

F(i,j)=max{F(i-1,j)-Wg,H(i-1,i)-Wg-Ws}

H(i,j)=max{0,E(i,j),F(i,j),H(i-1,j-1)+f(si,tj)}

对于1≤ila,1≤jlb,循环初始化:

当0≤ila,0≤jlb时,H(i,0)=H(0,j)=E(i,0)=F(0,j),最终局部最佳对齐相似性得分为矩阵H中的最大值。计算矩阵元素的依赖关系如图1所示,即矩阵H中每个元素的值依赖于其上方、左上方和左方的元素值。

得到得分矩阵以后,用动态规划回溯的方法找到局部最大相似片段对:先找到得分矩阵中最大的元素,然后按照该元素原计算路径一步一步往前回溯,直到回溯到0时停止。

1.3 SW算法并行方式

如果将查询序列和某个数据库序列的局部最优比对看作一个任务,那么将SW算法并行化的方法主要有两种方式:一种称为inter-task,即粗粒度的任务间并行;另一种称为intra-task,即细粒度的任务内算法并行。

粗粒度并行是指每个从核执行一个任务,从核之间并行执行,例如在CUDA架构下,不同的任务分配给不同的线程Thread,同一个BLOCK内的线程Thread平行执行。

细粒度并行是指多个线程协作完成一个任务,典型的方法是在计算得分矩阵时按照次对角线的方式并行,如图2所示。从矩阵的第一条反对角线开始,计算完成后进入计算第二条反对角线,这样从左上到右下直至得分矩阵计算完毕,计算第i个对角线上的分值需要依赖于第i-1个对角线上的分值。而各个处理器则从当前正在处理的反对角线上按一定的规则选取未计算过的元素进行计算(选取规则可以是求模运算)。例如有N个众核处理器,每个处理器负责计算模N运算后同余序号的元素。

显然,粗粒度并行相对于细粒度并行算法,能够更充分地利用并行系统的资源,可以得到更好的加速比,但是细粒度并行的方法使得内存占用率非常小,可以支持长序列比对。

2 并行模型

众核架构通常是指:芯片间同构,芯片内异构多核,芯片内少量功能完备的核心称为主核,芯片内大量功能受限的服务于加速计算的核心称为从核,主核运行操作系统,主要进行一些串行计算任务,承担从核上计算任务的控制和协调,并为从核提供消息、文件、调试等服务;从核不运行操作系统,主要负责处理数据,并依靠大量从核的并发工作获得高的聚合处理能力。例如CUDA架构中的CPU和GPU的关系

在众核架构下,考虑算法的适应性主要看算法是否具有并行性,以及计算访存比是否合适,下面首先分析SSearch热点,然后分别以CUDA以及类Cell架构为例介绍其并行实现思路。

2.1 SSearch热点分析

使用包含376个氨基酸的蛋白质序列作为查询序列,数据库序列包含37391个蛋白质序列,最短的蛋白质序列包含25个氨基酸,最长的蛋白质序列长度约为33K。假设查询序列长度m,数据库序列长度n,核心计算复杂度为O(mn)。对上述数据进行测试,得到计算时间与热点分析数据如表1所示。

FLOCAL_ALIGN函数对查询序列以及数据库中的一条序列进行比对并打分,该函数是最重要的核心函数,运行时间占总时间的99.22%。根据对源码的解读分析并结合测试得出,当数据库序列条数达到一定规模后,FLOCAL_ALIGN及其上一层函数do_work的调用次数与数据库序列总数相等。耗时排名第2、第3的函数用于在数据库比对完成后,对得分TOP-N的序列进行完整的序列比对与回溯。

在实际运算中蛋白质数据库序列数更多,FLOCAL_ALIGN函数所占的计算时间比例进一步增加。SSearch基于众核的实现一个重要的内容就是在众核上对FLOCAL_ALIGN函数进行移植、重构甚至替换整个双序列比对核心实现。

2.2 CUDA简介

CUDA(统一计算设备架构)是NVIDIA的GPGPU模型,基本思想是尽量地开发线程级并行,这些线程能够在硬件中被动态的调度和执行。CUDA不需要借助图形学API,而是采用类C语言进行开发。CUDA程序包括两个部份:Host端和Device端。Host 端指在CPU上执行的部份,而Device端则是在显示芯片上执行的部份。Device端的程序又称为″Kernel″。Kernel由一系列并发的Thread执行,在CUDA架构下,显示芯片执行时的最小单位是Thread。数个Thread可以组成一个Block。一个Block中的Thread能存取同一块共享的内存,而且可以快速进行同步的动作。

每一个Block所能包含的Thread数目是有限的。不过,执行相同程序的Block,可以组成Grid。不同Block中的Thread无法存取同一个共享的内存,因此无法直接互通或进行同步。

每一个Thread由一个唯一的标识ID,类似于MPI,每个Thread通过相应的变量可以得到ID号,其中Grid和Block的大小(和)由下面的Kernel函数定义:

Kenel<<<dimGrid,dimBlock,other configurations>>>{parameters;}

同一个Block中的Thread可以通过SharedMemory实现通信,并通过Barriers实现同步,但是不同Block中的Thread无法直接进行通信和同步。

除去SharedMemory,CUDA还有几种其他的存储器,分别是:Global Memory,Local Memory,Texture Memory,Constant Memory,Register。

为了写出高效率的CUDA程序,需要了解各种存储器的特性,具体见表2所示。

2.3 SSearch基于CUDA实现方法

对于SW算法,研究人员已经提出了一些基于CUDA的解决方案,例如CUDASW++[5]等。以SSearch核心两条序列比的SW算法为例,其可行的GPU实现方法如下:

1) 不同的Thread 对不同的数据库序列与相同的查询序列进行比对,每循环一次,将进行同步,所有Thread结束之后,进入下一次循环,所以为了使负载平衡,可对数据库序列按长度进行预排序。

2) 将查询序列存放在Constant Memory中,可以保证同一个half-warp块内的线程存取的地址是相同的,这可以使得ConstantMemory的存取速度接近Registers;

3) 将打分矩阵(例如blosum45)读取到Shared Memory中,这是因为运算过程中不同的线程需要访问不同的地址,这将大大降低存取ConstantMemory的速度;

4) 在每一个Thread中,将采用分块计算得分矩阵进行的方法。

存储器使用方式如图3所示。

核心算法的时间复杂度是O(mn),但是由于基因库的规模成指数级增长,使得对SSearch核心运算的粗粒度的任务间并行显得更加重要。而任务间并行并不存在依赖性,所以粗粒度并行方法显然适应众核架构,例如在CUDA架构中,每个任务由一个Thread独立完成。

如果使用粗粒度并行的方法,CUDA中的高速存储器Register和SharedMemory不足以放下两个序列以及得分矩阵,这就需要进行特殊处理。可行的方法是分块计算得分矩阵,将得分矩阵分成多个8×8的小矩阵在同一个Thread上依次计算,每次需要分别读取数据库序列和查询序列各8个字符,并将得到的中间结果以及最大值写回Global Memory,计算小矩阵中的每个元素需要进行4次比较运算,这样每次读取相应的序列字符之后会运算64×4=256次,提高了计算访存比。

可见从算法并行性和计算访存比的特点来看,这种并行模型对众核系统有良好的适用性。

但是该做法并没有保存完整的得分矩阵,于是无法进行回溯。但是实际应用中只对得分TOP-N的序列进行回溯,考虑到数据库的庞大,回溯部分占据时间可以忽略,可以对得到的TOP-N序列再利用串行算法打分并完成回溯。

在GPU实现过程中,采用分块计算的方法得分矩阵,但是仍然需要在Global Memory中保存EH矩阵的中间结果向量,这两个向量长度都是min(la, lb),可行的做法是,在计算分块小矩阵的每一行的最后一个元素的时候,都将中间结果写回存取速度较慢的Global Memory中,也就是说,每计算一个小矩阵,除了读取8字符的查询序列(1次)和8字符的数据库序列(1次)之外,还要写8次中间结果到Global Memory中,这是该算法实现的一个瓶颈,如图4所示。

这是由于CUDA的系统结构下较小的Shared Memory和Register的限制,使得在高速存储器上无法过多地保存中间结果,但是对于某些通用的众核系统结构,每个计算单元享有一个空间一定大小的高速局部存储器(Cell 256K),这就使得中间结果向量的保存成为可能。在众核系统架构下,提高算法加速比,高速局部存储器的合理使用也是关键的因素。

2.4 SSearch在类Cell架构的并行研究

在类似Cell的众核体系结构上较易实现较大规模的粗粒度序列比对并行处理。这里以Cell为例(见图5所示),Cell处理器包括一个PPE处理单元、八个SPE协处理器、一个XDR内存控制器以及FlexIO接口。每个SPE包含一个SPU协处理器单元,一个MFC内存控制器以及用作本地存储(LS)的256KB的静态随机存储器。LS拥有自己的地址空间,时钟频率为3GHz。SPU使用128 bits的向量运算,一个时钟周期内最多可以执行8条浮点指令。SPU还提供128个寄存器。反投影运算中的浮点值为32 bit,数据向量可以包含4个这样的浮点数。Cell芯片的内部互连是4条128位宽的环状EIB(Element Interconnect Bus)总线,宽度位512位,速度为每时钟周期96 Byte。

在两条流水线的组织下,SPU在一个时钟周期内可以向它的7个执行单元发射2条指令。集成DMA控制器允许16个读写请求,SPU中的数据传输能够与核心执行并发进行。PPE可以理解为向8个SPE分发小任务的管理员,SPE则是程序实际执行的worker。Manager/worker间通过DMA进行通讯。

由于256KB大小的本地存储(LS)的存在,为了进一步加速SSearch核心算法,理想的情况下可以将查询序列、相应的数据库序列、打分矩阵以及得分矩阵全部存放在LS中,充分利用片内存储器带来的算法性能提升,对于256KB LS的情况,能够满足绝大多数的序列要求。以基因库Swiss-Prot release 56.6中的序列为例,最长的序列达到了35k,不过99.86%的序列长度小于3k,完全可以将数据库序列、打分矩阵以及得分矩阵全部存放在LS中,得分矩阵中间结果向量的也可以同样保存在LS中。

为明确SSearch核心函数FLOCAL_ALIGN对LS的具体需求,对经过局部重构的该函数局部存储空间需求进行分析,所需空间为:查询序列×5+对应数据库序列+2.5KB,即理论上对小于40KB的序列均可以将查询序列、相应的数据库序列、打分矩阵以及得分矩阵全部载入到LS中,从而提高了访存速度与计算效率。

在类Cell架构上使用包含376个氨基酸的蛋白质序列作为查询序列在数据库序列中进行小规模的性能测试,为保证计算均衡性,对蛋白质数据库进行预排序,对其中数据长度相差<17%的多条序列进行分析,单序列在CPU和众核上所用的计算拍数如表3所示。

众核架构上的SSearch序列比对可采用粗粒度任务级并行,对性能影响最大的是众核任务间计算负载的不均衡性,通过对蛋白质数据库按照序列长度进行排序,尽量保证众核的各计算单元分配到长度接近的数据库序列,使得加速性能随着计算单元增加接近线性增长。

3 结 语

基因序列比对是生物信息学的一项基础工作,序列比对软件特别是FASTA、BLAST应用广泛。尽管这些软件对SW算法进行了修改,提高了运算速度,但是仍然远远无法满足当今超大规模基因库对序列比对速度的要求。本文首先介绍了生物信息领域中的SW算法,并对采用该算法的SSearch进行分析,最后以GPU和类Cell体系结构为例分析了众核架构中SSearch可行的并行模型,具有一定的研究和实际意义。

参考文献

[1]人类基因组计划[OL].维基百科.

[2]赵国屏,等.生物信息学[M].科学出版社,2002.

[3]Smith T F,Waterman M S.Identification of common molecular subse-quences[J].Journal of Molecular Biology,1981,147(1):195-197.

[4]Pearson W R.Searching protein sequence libraries:comparison of the sensitivity and selectively of the Smith-Waterman and FASTAalgorithms[J].Genomics,1990,183:63-98.

并行模型 篇8

器件的模型和模型参数提取是电子设计自动化(EDA)领域的关键工作[1]。采用遗传算法进行半导体器件模型参数提取是近年来兴起并被广泛使用的一种参数提取方法[2,3]。遗传算法全局搜索能力强、不需进行繁琐的求导运算,不依赖参数初始值等特点,理论上来说只要有足够的迭代次数种能找到最优解[4]。但是,由于遗传算法是一种搜索类算法,较之传统的基于梯度进行迭代计算的解析算法,每进行一次迭代所需要的时间较长,计算量有了显著增加,而且对许多复杂问题而言,例如采用的全局优化策略提取复杂模型的大量参数时,标准遗传算法的求解效果往往不是解决这个问题的最有效的方法,必须对算法进行修改与优化,这些因素无疑大大增加了遗传算法的计算量,为此必须考虑算法的耗时问题。本文针对遗传算法自身的耗时问题,讨论了并行遗传算法的特点,并以主从式遗传算法为例,证实了并行计算在参数提取工作中的可行性。

2 并行遗传算法

为了有效的解决遗传算法(GA)在模型参数提取过程中的耗时问题,提高GA的运行速度,采用并行遗传算法(PGA)是提高搜索效率的方法之一。并行遗传算法[5,6]主要有主从式并行遗传算法、粗粒度并行遗传算法和细粒度并行遗传算法。

2.1 全局PGA模型-主从式模型(master-slave model)

如图1所示,主从式模型分为一个主处理器(master)和若干个从处理器(slaves)。主处理器监控整个染色体种群,并基于全局统计执行选择等全局操作;从处理器接收来自主处理器的个体进行适应度评估等局部操作,再把计算结果传给主处理器。

主从式模型的优点是简单,保留了串行GA的搜索行为,对计算机体系结构没有严格要求,适合运行在共享存储和分布式存储的并行计算机上。如果适应度估值操作比其他遗传算子计算量大的多时,这是一种非常有效的并行化方法。

2.2 粗粒度PGA模型-分布式模型(distributed model)

该模型又称分布式、MIMD、岛屿模式遗传算法模型。在处理器个数较少的情况下,我们可以将群体分为若干个子群体,每个子群体包含一些个体,每个子群体分配一个处理器,让它们相互独立地并行执行进化。为了防止子群体早熟,每经过一定的间隔(即若干进化代),各子群体间会交换部分个体以引入其他子群体的优秀基因,丰富各子群体的多样性。除了基本的遗传算子外,粗粒度模型引入了“迁移”算子,负责管理区域之间的个体交换。如图2所示,通常存在两种迁移实现:岛屿模型、踏脚石模型。

2.3 细粒度PGA模型-分散型(fine-grained model)

细粒度模型又称为邻域模型(neighborhood model)或细胞模型(cellular model)模型。如果并行计算机系统的规模很大,理想情况下处理器多到可以与染色体一一对应,则我们可以将每个个体分配一个处理器,让它们相互独立地并行执行进化,这样就能获得并行遗传算法的最大可能的并发性。如图3所示,在细粒度模型中,通常处理器被连接成平面网格(grid),每个处理器上仅分配一个个体,选择和交叉只在网格中相邻个体之间进行,所以网格上的邻域关系就限定了个体空间上的关系。由于对处理器数量的要求很高,所以细粒度模型的应用范围不广。

3 基于MPI的主从式遗传算法的的实现

3.1 总体构想

我们采用的主从式并行模型分为一个主处理器(master)和若干个从处理器(slaves)。主处理器监控整个染色体种群,并基于全局统计执行选择等全局操作;从处理器接收来自主处理器的个体进行适应度评估等局部操作,再把计算结果传给主处理器,其个体的分配过程是这样的:假设种群规模为N,优化模型参数变量个数为M。适应度评估时,程序传给评价函数N个长度为M的向量。并行的任务是master处理器将这个N个长度为M的向量平均分配到各slaves处理器做适应度计算,计算结束后,评价函数返回N个适应度给master处理器。计算各处理器分得的染色体个数的方法是,首先计算出每个处理器至少分配到的染色体个数为Ave Num=N/Size,如果处理器个数不能整除行数,这样将有部分处理器分得到(Ave Num+1)个染色体,规定多余的染色体分配到编号小的处理器上。

3.2 并行中的消息传递机制

另外,需要注意的是,仅仅依靠例如C,C++,java等编程语言所编写的程序是无法实现上面叙述的染色体在各处理器之间的传递任务。因为,在并行计算环境中,每个进程均有自己独立的地址空间,一个进程不能直接访问其它进程中的数据,因而,在进行并行计算的任务之间进行的数据传输必须通过消息传递机制。消息传递机制,是指用户必须显式地通过发送和接收消息来实现处理器之间的数据交换

本文采用的是MPI(Massage Passage Interface)消息传递接口。MPI是一个很好的数据传递软件平台,可以通过调用MPI库函数来进行进程调度以及任务间的通信。它实际上是一个消息传递函数库的标准说明,吸取了众多消息传递系统的优点,是目前国际上最流行的并行编程环境之一,其特点是通用性强(只要求网络支持TCP/IP网络协议)、系统规模小、技术比较成熟。本文通过调用MP的库程序来达到程序员所要达到的并行目的,使异构的计算机群体作为一个紧凑、灵活、经济的计算机资源来使用的并行环境。

3.3 共享内存多处理器主从式并行环境搭建

全局并行化模型并不限定计算机体系结构,它可以在共享内存和分布式内存计算机中高效实现。现在简单介绍一下两种并行编程的方法:分布式内存方法和共享式内存方法。

对于分布式内存的并行计算机,各个处理器拥有自己独立的局部存储器,不存在公用的存储单元,显然,这种方法的问题就产生于分布式内存的组织。由于每个节点都只能访问自己的内存,如果其他节点需要访问这些内存中的数据,就必须对这些数据结构进行复制并通过网络进行传送,这会导致大量的网络负载。他的优点是拥有很好的扩展性,有利于快速构造超大型的计算系统。

在共享内存多处理器计算机中构成并行环境,在共享式内存方法中,内存对于所有的处理器来说都是通用的。这种方法并没有分布式内存方法中所提到的那些问题。而且对于这种系统进行编程要简单很多,因为所有的数据对于所有的处理器来说都是可以使用的,这与串行程序并没有太多区别。这些系统的一个大问题是扩展性差,不容易添加其他处理器。

为了在微机环境下使用MPI构成分布式内存并行环境,只要将PC机联接局域网,然后在每台PC机上安装相应操作系统,并安装MPI软件包即可。分布式内存即种群被一个处理器存储。这个主处理器负责将个体发送给其它从处理器进行评估,并收集计算结果,进行遗传操作来生成下一代。

对于本文所采用的在共享内存多处理器计算机中构成主从式并行环境就更为简单,只要在PC机上安装操作系统(本文安装linux操作系统)和MPI软件包就可以实现并行环境了。在共享内存多处理器计算机中,种群可以保存在共享内存中,每个处理器可以读取被分配到的个体信息并将适应度写回,不会有任何冲突。

4 实验结果分析

将以上方法实现的基于MPI的主从式遗传算法应用于1.2um SOI MOS器件的阈值电压模型参数提取工作中。如图4所示,实验结果表明曲线拟合的效果很好,转移特性曲线最大误差都低于5%。采用并行计算后,参数提取的速度提高了接近2.5倍。

5 结论

从实际的测试效果来看,以上方法实现的程序的简洁有效,智能化程度很高,且具有较高的精确度。因此,本文提出的基于MPI的主从式遗传算法可以解决遗传算法在器件参数提取过程中的耗时问题。该方法简单易用,适合推广使用。

摘要:器件的模型和模型参数提取是电子设计自动化(EDA)领域的关键工作。采用遗传算法进行器件模型参数提取工作是近年来兴起并被广泛使用的一种参数提取方法。本文讨论了并行遗传算法的特点,针对遗传算法自身的耗时问题,提出了基于MPI的主从式遗传算法,并证实了并行计算在参数提取工作中的可行性。该方法简单易用,显著提升了MOS器件模型参数提取的速度。

关键词:MOS器件,模型参数,参数提取,器件模型

参考文献

[1]J.Liou A,Analysis and Design of MOSFETS:Modeling,Simulation,and Parameter Extraction[M].KLUWER ACADEMIC PUBLISHERS,1998.

[2]Kondo M,Onodera H,Tamaru K.Model adaptable MOSFET parameter extraction method using an intermediate model[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,1998,17(5):400-405.

[3]Yang P,Chatterjee P K,An optimal parameter extraction program for MOSFET models[J].IEEE Transaction on Electron Devices,1983,30(9):1214-1219.

[4]Li Yiming.An automatic parameter extraction technique for advanced CMOS device modeling using genetic algorithm.Microelectronic Engineering,2006,41(4):1309-1321.

[5]康立山,非数值并行算法(第一册)-并行遗传算法[M].科学出版社,2003.

并行模型 篇9

1 P-DOT模型介绍

传统的BSP模型是P-DOT模型构建的思路来源, 其构成中包含多个迭代, 因此形成了p段的DOT模型。该模型在不同的阶段q内都包含3个层次:首先, 数据层。即D-layer, 应用于分布式系统内, 假设拥有n个数据节点, 由D1至Dn这一数据集都存在其上;其次, 计算层。即O-layer, 假设q为阶段, 独立并发计算在O1至Onq上的nq个工作节点中进行, Oi表示不同的节点, 在应用过程中只对与其相对应的数据进行处理, 其中包括对输入与中间2种数据的处理, 中间结果的显现有储存得到;最后, 通信层。即T-layer, 假设q与p不等, 在q阶段中, ti, j为不同的通信操作子, 消息传递以点对点的方式进行, Oi代表的是q阶段当中的不同工作节点, 其中i的取值为大于等于1并且小于等于nq, q+1阶段中的工作节点Oj得到q阶段内的中间结果, 其中j的取值为大于等于1并小于等于nq+1。值得注意的是, 如果在计算过程中ti, j的取值为0, 则充分说明通信不存在于Oi与Oj当中。同时针对任一阶段, 如果q不等于p, 则上一阶段的输出可以作为输入被下一阶段所用, 不然该输出将被作为最终结果进行储存。

2 模型证明

2.1 时间成本函数的限制性条件

机器内存空间:大数据背景下, 不同的机器节点是存储数据集的主要地点, 具有一定的分散性, 同时有限的内存存在于单个机器当中。在这种情况下, 如果拥有固定的机器数, 但是不断变大的数据规模被输入时, 会不断增大数据量, 促使不同阶段及不同机器承受更多的工作量, 其中涉及初始及中间多种数据。如果单独机器无法对数据量进行保存时, 这部分数据就会在磁盘中存放, 则处理过程中就需要将其从磁盘处向内存中移动, 并通过多次才能够实现有效的处理。如果应用了不同的磁盘组织手段, 数据与内存之间进行传递的过程中就应当拥有小于100MB/s的速度。如果只有1MB的数据集规模, 这一现象是可以顺利进行的, 一旦数据集规模较大时, 将会存在一定的访问问题。在这种情况下对时间成本函数进行构建就要对成分I/O在模型中的体现进行考虑

机器数:大数据任务内, 输入数据规模常常大于机器数很多, 在这种情况下, 如果n3个机器在数据处理中被应用, 其中n的规模为web, 则该任务不可实现。本文在计算的过程中将n作为机器数, 将w作为输入数据规模。则二者之间的关系是二线性, 同时, O (w) 大于n。

2.2 扩展性证明

ISO-efficiency Function即等效率函数, 在并行计算过程中, 评测其扩展性的过程中对其进行了充分的应用, s作为加速比, E作为效率, 都与其拥有较大的关联性。例如, 如果大数据任务可以有效应用P-DOT并行计算模型进行表达, 则φn作为并行执行时间能够对n个机器节点的任务时间进行表达, 单个机器节点中的时间可以应用φ1表示, 此时为串行状态, 输入w这一数据规模, 则能够对串行状态下的工作量进行表达, 其中w等于φ1。同时, 如果一个大数据任务可以应用P-DOT并行计算模型进行表达, 同时S为记加速比, 它能够表达任务执行时间被并行性所改变的范围, 即S=φ1/φn=w/φn。E为效率, 机器节点被任务利用的状况可以用其显示, 即E=S/n=w/ (n×φn) 。在这种情况下, w=f (n) 这一等效率函数应当存在于E这一任务效率不变的状况下, 研究w这一数据输入规模在n的变化下而变化的状况。

同时, 如果一个大数据任务可以应用P-DOT并行计算模型进行表达, 等效率函数在该任务当中的表达形式为w=O (n2) , 其中输入函数规模为w, 机器数为n。

由以上定理可知, φ=O (w/n+n) ×p为时间成本函数, P-DOT并行计算模型的等效函数可以用以下公式进行表达:

3 P-DOT模型性能优化方法

3.1 数据层优化方法

容错性的基础是数据备份, 有效预防数据丢失产生于失误操作及故障当中, 因此可以复制文件系统内的相关数据。通常, 系统会制作3个以上的重要数据及其备份, 同时会将其放置于不同的位置, 这样一来, 在日后使用的过程中就能够有效的回存。例如, 开源项目Apache Hadoop, 3是其数据默认复本数, 同时其相关的复本布局默认策略为:首先, 一样的数据块产生的一个复本将被一个数据节点保存;其次, 充足的机架产生于集群当中时, 同一数据块的2个复本可以在逐个机架中保存。因此, 不同数据节点可以分散地对数据复本进行储存。

由上可知, 如果一个大数据任务可以应用P-DOT并行计算模型进行表达, n为该任务中的机器数, r为记数据复本数, 数据节点r个会对数据复本进行分散存储VDij, 其中i的取值为大于等于1同时小于等于n, j的取值为大于等于1同时小于等于mi, Dst=Dij为r-1个不同节点上的数据块, 其中s与i的取值不等, 同时t为大于等于1并小于等于ms。

由上可知, 在不同的作业当中, R为数据集, 其值属于D范围, n个数据节点中能够分散保持数据块, 则数据同步加载可在n个节点中以并行访问的方式进行, 其中n为I/O访存加速比的最大取值。然而在应用过程中, 同一数据块的唯一复本是不同节点保存的基础, 因此r个数据节点可以对R数据块进行分散保存, 由此可知, r为I/O访存加速比的最小取值。

3.2 计算层优化方法

在工业不断进步的过程中, 对P-DOT并行计算模型计算层的优化被广泛关注。不断发展的多核技术, 众核GPU在NVIDIA中的体现等, 都促使计算密度和并行处理功能提升。我国传统的并行计算过程中, 性能的提高通过纵向资源计算越来越重要, 这一过程中需要对多核硬件资源进行充分利用。在这种情况下, 单机计算性能需要通过多核间线程级并行来促使大数据任务得以加速。

如果一个大数据任务可以应用P-DOT并行计算模型进行表达, T为该任务在执行过程中的通信层, 将其以2个层次进行展现, 则进程级通信在不同机器节点中的体现应用Tprocess来表达, 不同核间的线程级通信可以应用同一机器节点中的Tthread进行表达, 由此可以得出Ttop=TthreadTprocess, 该公式在应用过程中能够对通信先后顺序进行展现, 及节点内通信应当首先进行, 同时节点间的通信应当后进行。因此, 由于进程间的通信要远远大于线程间的通信, 即O (c) <O (n) , 因此在重发应用多核技术的过程中, 不仅能够促使通信开销始终保持不变, 还能够促使计算性能在任务当中得以提升。

4 结语

在信息技术飞速发展并被广泛应用于各个领域的过程中, 各国在经济建设及社会发展中产生了海量数据, 大数据时代的到来及不断发展, 促使人们在日常工作过程中逐渐转变并行计算模型。现阶段, P-DOT并行计算模型的产生及有效应用, 提高了数据处理的质量和效率, 是科学和信息技术进步的一个重要标志。在这种情况下, 加强面向大数据处理的P-DOT并行计算模型及性能优化的研究具有重要意义。

参考文献

[1]杨靖宇.摄影测量数据GPU并行处理若干关键技术研究[D].郑州:中国人民解放军信息工程大学, 2011.

[2]吕海.多核处理器芯片计算平台中并行程序性能优化的研究[D].北京:北京工业大学, 2012.

[3]王强.异构环境下的航空遥感影像协同存储及处理关键技术研究[D].武汉:武汉大学, 2011.

[4]陈鹏.面向大数据应用的异构可重构平台关键技术研究[D].合肥:中国科学技术大学, 2015.

[5]徐金波.面向目标检测识别应用的算法加速器体系结构研究[D].长沙:国防科学技术大学, 2009.

[6]杨晓亮.Map Reduce并行计算应用案例及其执行框架性能优化研究[D].南京:南京大学, 2012.

并行模型 篇10

关键词:可视化,并行程序设计,软件事务性内存,扩展性

0引言

随着计算机硬件技术的发展,多核已经成为目前主流的处理器架构,由于传统串行程序设计不能充分发挥多核处理器的优势,所以并行程序设计方法的研究成为了一个热点[1]。并行程序一直被用来处理大规模计算和复杂计算等问题,虽然多核计算机的普及给并行计算的应用奠定了良好的硬件基础,但是并行程序设计方法却没有跟上计算机硬件的发展速度,并行编程效率低成为了制约并行程序广泛应用的一个瓶颈。为了解决这个难题,国内外学者在并行程序设计模型及语言方面进行了许多的研究。共享内存和消息传递等并行程序设计方法逐渐进入人们的视野,在一定程度上简化了程序设计人员的开发过程,但是这些模型还是集中在底层功能的调用,要掌握它们还需要进行系统的学习。与此同时,国内外学者在并行程序设计方法领域也做了各个方面的探索,例如并行设计模式、并行结构骨架、算法骨架以及可视化并行程序设计的理论。这些抽象程度更高的理论对于简化并行应用程序的开发有更大的实际意义。在已有的可视化并行程序设计方法中,虽然能够按照一些指定的代码模板进行并行程序设计,但是它的可扩展性和通用性较差。如果用灵活的底层设计方式进行程序开发,开发难度又会大大增加,开发效率也自然会变低。

近年来,软件事务性内存[2]作为一种新兴的并行程序设计模型被越来越多的研究与使用,它接口简单且可扩展性非常强,如果将可视化的编程方法与STM模型相结合,设计一种满足可视化编程要求的STM模型,可以为并行程序的设计提供一种可行的方法,使得并行程序的开发效率有一定的提高。

1相关工作

可视化程序设计[7]是指将程序、数据、系统结构或者系统的动态行为用可视的表现形式来表达。良好的可视化编程模式能够简化系统设计的复杂度,提高程序开发的效率。目前,针对串行应用程序的可视化建模方法和技术已经比较成熟,但是在并行程序设计方面尚且没有统一的标准。从编程模型的角度看,现有的可视化并行程序设计方法可以分为基于模板的、基于数据流的、基于进程的三类。基于模板的可视化并行程序设计通过提供一些用于进程交互的代码模板来构建并行应用程序。并行程序中进程的交互方式和通信结构一般由预先采用的模板决定,程序设计人员只需要提供应用程序的细节处理过程,并将这些细节填充到相应的模板之中,就可以使被整合在一起的程序编程完整地并行应用程序。基于数据流的可视化并行程序设计主要使用数据流图来进行并行程序设计,基于进程的可视化并行程序设计则是让程序开发者自己定义进程结构和显示的消息传递操作。由于传统的基于模板的可视化并行程序设计中模板的单一性和不可变性[8],使得基于模板的可视化并行程序设计方式相对死板,不易变通,如HeNCE是一个利用PVM为开发网络并行程序而设计的并行编程环境,但它的子任务之间不能有数据依赖使得它可用性不强。DPnDP是采用MIMD结构的并行开发模型,但是它不提供创建新模板的工具,只有在一个指定的C++框架内才能建议模板。VPE是为IBM RS6000工作站开发的一个小型可视化并行程序开发环境,虽然功能完善,但是它针对特定的硬件平台。而软件事务性内存具有良好的可扩展性和易用性且接口简单,在STM模型上运行的并行程序进程之间的通信方式和同步策略均可以非常方便的进行扩充和修改。基于STM模型的可视化并行程序设计会使得并行程序设计流程变得简单,增加开发效率,并且由于STM的可扩展性和易用性,使得基于此模板的可视化并行程序设计方法的通用性大大增强,只需要选定不同的仲裁策略和同步方法,就可以使得STM并行程序设计模板满足大多数并行程序设计的要求。

软件事务性内存的执行过程[3]一般分为事务的初始化和启动、事务的执行、事务的提交三个阶段。事务具有ACDI特性,不同事务在执行的过程中彼此独立,在提交阶段进行确认检测防止冲突的发生而影响数据的正确性。STM模型就是通过这种机制保证并行程序的正确执行。在典型的事务性内存模型中,事务对内存对象的访问有读和写两种方式。在一个事务读取内存单元时,它可以采取两种不同的策略,分别是读透明和读可见策略。所谓读透明策略就是事务之间的读取操作彼此独立,一个事物的读取操作不影响其他事务的执行;而读可见策略指的是一个事务读取一个对象时其他事务不能同时对这个共享对象进行读取操作,事务之间的读操作是彼此可见的。与事务的读操作不同,事务的写操作一般都是可见的,不同的事务不能同时对共享对象进行写操作。在面向可视化的并行编程过程中,一方面,用户图形接口要设计的简洁灵活,以保证实际程序开发过程中的可扩展性,另一方面,模型的算法实现要设计的严谨稳定,以保证并行程序运行时的正确定和安全性。ASTM是一种面向对象的软件事务性内存,面向可视化并行程序设计的STM模型是在它的基础上增加了可视化程序设计的必要因素来设计的。

2VPP STM设计

VPP STM模型的架构如图1所示,下面介绍可视化STM模型的实现算法。

2.1事务粒度

事务粒度是事务控制并发程序访问的最小数据单元[4],粗粒度的访问方式会制约多事务的并发执行,事务会由于频繁的访问冲突而回滚或访问失败,而细粒度的访问方式会限制一个事务的执行效率,并且由于共享数据单元划分的太小会导致冲突的检测时间增长,从而影响STM模型整体的效率。在目前常见的程序设计方法中,面向对象的程序设计方法已经成为最重要的开发方式,程序中的数据访问其实是对实例对象属性的访问,这种访问粒度是以对象为单位的,为了保持访问粒度的一致性,我们的STM模型也将采用面向对象的程序设计方法,以对象作为事务粒度的单位进行模型的设计。

定义1 定义事务集合为T(T1,T2,…,Tn),模型中任何活动事务TxT;共享数据对象所在集合为 O(O1,O2,…,On) ,一个事务Tx从启动到提交过程中所访问的数据对象集合为T0∈0。

2.2版本控制与冲突检测

不同的并发事务同时执行的时候,事务与事务之间的操作可能会产生冲突,为了防止事物之间的冲突影响共享数据的正确性,需要版本控制与冲突检测来进行事务之间的并发控制。事务之间的冲突可以分为读后写、写后读、写后写三种。

定义2 每一个共享对象Ox∈O都维护有自身的版本信息集合 V(V1,V2,…) ,每一个版本 Vx都有一个时间戳timestamp作为标识,一个共享对象的版本序列 (V1,V2,…)中的timestamp按版本下标序号严格递增。

定义3 当一个事务TxOx进行写操作并且成功提交后O中的Ox就会被成功修改到最新版本Vnew,此时其他事务就可以看到TxOx修改后的状态了。如果Tx在执行之后提交失败,那么O中的Ox还是维持Tx修改前版本Vold不变。

不同的版本控制策略对STM系统维护的版本数量要求不一样[9],一方面,可以将一个共享内存对象生命周期内被访问的版本数据都保存下来以便事务在提交失败后可以查找指定的版本进行回滚恢复操作,另一方面,也可以用一些临时的存储单元对事务操作共享数据进行一个拷贝,如果事务提交成功,则用拷贝最新的数据对象替换之前的副本,如果事务提交失败,则用临时存储单元之中的数据副本恢复共享数据单元。

为了增强可视化并行程序设计方法的可扩展性,面向可视化的STM采用基于快照[5]的临时数据存储方式,在并发事务较多的情况下避免了数据版本冗长难以维护的缺点。当并发执行的事务在提交过程中检测到了冲突,就要采取一定的策略来选择须要正确提交的事务或者应该回滚的事务[6],仲裁策略通常以时间或者优先级作为仲裁的参考要素,在面向可视化的并行编程模型中,用户通过拖拽图形接口的方式进行建模,不同的程序可能要求不同,例如实时性的控制程序需要以时间作为重要的参考条件而一些内核调度程序需要以优先级作为事务提交成败的标准。在可视化的STM模型中可以用不同的图标代表不同的仲裁策略,在用户需要的时候可以按需要进行并行程序的建模,如图2所示。把可视化程序设计的通用性和直观性与STM的灵活性与可扩展性结合起来,会对提高并发程序的开发效率有很实际的帮助。

2.3事务同步

一个事务在成功提交之后,它对共享数据作出的修改后便对全体事务可见,在它正确提交之后任何事务再对同一共享对象的读写操作都是在这个对象新版本的基础上进行的。这就要求要有一个全局的统一时钟来标识对象的新旧版本,这个时钟对STM系统的全体事务都是一致的,一个事物访问一个对象时只需要拿这个对象当前版本的时间戳和系统的当前时间作比较就可以知道这个对象是否处在一个一致性状态。

2.4图形接口与算法实现

用户图形接口采用UML类图设计中的活动图来进行设计。活动是某件事情正在进行的状态,它在状态机中表现为有一系列动作组成的非原子的执行过程。活动图的图标包含对活动的描述,如果一个活动引发下一个活动,两个活动的图标之间用带箭头的直线连接,活动图中的一个活动代表一个事务,每一个活动都有一个开始时间,记作代表此活动事务的时间戳。UML活动图中包含的图形元素有动作状态、活动状态、动作流、分叉与汇合等。动作状态是指执行原子的、不可中断的动作,并在此动作完成后通过完成转换转向另一个状态。因为事务具有ACDI的特性,所以活动图中的动作状态对应到VPP STM系统中是指一个事务生命周期中执行的所有动作。一个活动图有很多动作或者活动状态,活动图通常开始于初始状态,这时VPP STM系统要进行初始化操作,即在视图模型搭建好之后,根据UML活动图中用户输入的数据对象初始化整个STM系统的数据集合O。这时启动VPP STM中的第一个事务Tstart:初始化事务的读写数据集合T0,记录事务开始的时间戳 timestamp。之后事务开始执行读写操作并提交,如果提交成功,那么更新T0中所有数据对象的版本信息V0。由于对象在运行时可能会存在两个或者多个并发运行的控制流,为了对并发的控制流建模,在UML中引入了分叉与汇合的概念。分叉用于将动作流分为两个或者多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。分叉可以用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流。在VPP STM中,会在每一个分支结点根据结点的出度初始化所需的事务集合T(T1,T2,…),并将每个事务所需要执行的数据操作写入这个事务的读写集合,完成初始化后记录事务开始的时间戳。进入UML的分支后,每一个事务就单独执行自己的任务,在进行读写操作之前,事务首先要申请对共享对象的访问权限:在申请所有权时如果这个Ox现在被其他的Tx拥有, 则比较两个事务的timestamp,终止timestamp较大的(晚开始的)事务。否则获得这个Ox的所有权,并且在这个OxV(V1,V2,…) 中寻找一个时间戳小于此事务时间戳且最新的Vnew生成这个Ox的快照。申请到了访问权事务开始对共享数据对象的快照副本进行读写操作:进行读操作时,先在此事务的写集中查找,有则返回。如果没有就返回申请到的Vnew的值。进行写操作时,如果当前事务拥有这个Ox,就直接在事务的写集中进行修改。否则会先进行冲突检测,如果无冲突就申请这个Ox的所有权,若申请成功则把修改值添加到事务的写集中。在UML活动图中,汇合代表两个或多个并发控制流同步发生,当所有的控制流都打到汇合点后,控制才能继续往下进行。每个汇合可以有两个或多个输入转换和一个输出转换。相对的,在VPP STM系统中,事务读写操作完成后,如果没有冲突发生就确认提交:为相应T0分配新版本,如果有数据更新则将 快照中的值写入新版本,记录提交的时间戳,并将新版本放入这个共享数据对象的版本信息集合中。如果遇到冲突则选用给定的仲裁策略进行事务的回滚操作,事务回滚后此事务的所有操作不对共享对象产生任何影响,在UML中,相当于重新回到分支点再进行一次事务的初始化操作。当所有的事务均提交成功后,整个UML活动图的执行任务才算完成。

3测试用例及实验结果

3.1测试用例

实验用Linklist benchmark来进行测试,在Linklist benchmark中,设定链表元素个数为2000、链表写操作占总操作数作百分比为20%。除了设定不同的账户和存取操作之外,VPP STM还可以用不同的仲裁策略进行设计。用VPP STM 对Linklist benchmark进行建模结果如图3所示。

3.2实验结果

实验环境:处理器:Inter Core 2 Duo CPU (2.66GHz) 内存:2.00GB操作系统:32位Windows 7专业版在上述硬件环境下对用VPP STM建模的Linklist benchmark进行测试,实验结果如图4所示。

用不同的冲突检测策略进行Linklist benchmark的测试结果如表1所示。

4结语

VPP STM将软件事务性内存用到可视化并行编程中,使得可视化并行编程变得相对简单并且灵活,通过对Linklist基准测试程序进行建模测试可以看出VPP STM可以解决实际的并行处理问题,对不同的用例采用不同的冲突控制策略可以更好地满足实际运用的不同要求。同时,实验结果表明,如果开启的线程过多,事务提交时发生冲突导致事务回滚的性能损耗会超过多线程并行处理所带来的性能提升,从而使得系统整体性能相对下降,如何提高事务提交的成功率也是今后研究工作中需要解决的一个问题。

参考文献

[1]Olukotun K,Hammond L.The Future of Microprocessors[J].ACM Queue,2005,3:26-29.

[2]Nir Shavit,Dan Touitou.Software transactional memory[C]//Sysmpos-ium on Principles of Distributed Computing,1997,10:99-116.

[3]Pascal Felber,Christof Fetzer,Patrick Marlier,et al.Time-Based Software Transactional Memory[J].IEEE Trans on Parallel and dis-tributed systems,2010,21:1793-1805.

[4]Maurice Herlihy,Victor Luchangco,Mark Moir,et al.Software trans-actional memory for dynamic-sized data structures[M].ACM Press,2003:92-101.

[5]Christopher Cole,Maurice Herlihy.Snapshots and Software Transac-tional Memory[J].Elsevier Science,2005.

[6]Zhang X Q,Peng L,Xie L G.Lowering Conflicts of High Contention Software Transactional Memory[C]//2008International Conference on Computer Science and Software Engineering.2008.

[7]胡长军,丁良,常晓东,等.面向并行程序设计的扩展UML建模[J].计算机工程,2007,34(1):86-93.

[8]徐祯.面向并行程序设计的可视化建模系统的研究与实现[D].天津大学,2007.

本文来自 古文书网(www.gwbook.cn),转载请保留网址和出处

相关文章:

JSP课程01-23

并行模式01-23

并行程序分析01-23

并行检测01-23

并行处理技术01-23

并行实现01-23

双轨并行01-23

并行分析算法01-23

快速并行算法01-23

并行优化01-23

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:JSP课程 下一篇:并行实现