并行优化(精选十篇)
并行优化 篇1
HDTV在带来前所未有的清晰画面的同时也对当前硬件提出了更加严格的要求,流畅播放H264编码的1080P视频对CPU的性能提出了极高的要求。而相对于解码而言,高清视频的编码则是一项更为艰巨的任务,在目前可见的民用级别CPU上,还无法实现实时的1080P视频编码压缩,因此当前迫切需要一种更为快捷的编码高清视频的方法。
软件层面上的视频编码并行优化通常是由CPU提供一些特殊的并行指令来进行。例如Intel的SSE指令集,可以在一个时钟周期内执行一条128位向量加法或向量乘法指令[1]。如果采用32位的数据类型,则一个周期内能完成4个数(或者一个4D向量)的加、乘运算,从而实现数据处理的并行计算优化。
1 全搜索算法优化
1.1 运动估计简介
在基于宏块划分的视频编码流程中,为了减小编码输出码流,需要找一个与当前帧宏块残差数据较小的参考帧宏块,该参考帧宏块在给定搜索范围(Search Range)的条件下计算出来。这一过程即运动估计。
运动估计中宏块残差的计算有几种方法,其中最基本的一种就是SAD(Sum of Absolute Differences)。该算法通过计算两块等大宏块区域内所有像素差的绝对值之和来量化两个宏块之间的差异。
全搜索算法(Full Search)即以当前宏块信息在参考帧周围的区域进行螺旋式搜索(计算SAD)以找到与当前宏块最相似的(SAD最小)目标宏块[2]。给定参数Search Range,全搜索算法将在(Search Range×2+1)2个位置上进行搜索[3]。以Search Range=32为例,一共有4225个搜索位置。本文中的螺旋搜索数组采用JM标准参考模型中的实现方法来产生。因为全搜索算法是一种“一网打尽”的算法,所以它是所有运动估计算法中PSNR最高、比特率最少但是编码时间最长的一种算法。
1.2 传统的全搜索算法
以JM标准参考模型为例,传统的全搜索算法可以归纳为以下几个步骤[3]:
(1)针对所设定的搜索范围设计一个循环。
(2)在该循环内,当前宏块与加上不同偏移值(△x,△y)后的参考宏块作SAD运算。结果存在数组中。并用另外的参数记录当前的最小SAD。
(3)如果当前位置上的SAD值已经大于之前的最小SAD,则提前放弃该位置。如果出现SAD为0的情况,则提前结束循环,当前偏移值即为最佳偏移值。
(4)循环结束后,从数组中找到SAD最小的向量,即为所需最佳偏移值V。
可以很明显看到,传统全搜索算法的优点在于两个层面上的提前终止机制——分别是搜索位置层面以及宏块层面。可以较好的减少不必要的计算量。但是传统算法的缺陷在于同一时间只能计算某一搜索位置上的一对像素的SAD值。而很显然,各对像素的SAD值计算是独立的,不依赖于彼此的计算结果,因此传统全搜索算法具备并行化改造的潜力。
1.3 基于像素的并行
对运动估计部分的并行化修改有以下几个思路:基于帧的并行化、基于宏块的并行化、基于搜索位置的并行化以及基于像素的并行化。
其中基于帧的并行化并不可行的。因为在大多数视频编码中帧与帧之间有极大关联性,其运算并不独立,特别是双向参考帧的存在使得帧的编码顺序会被打乱,这将造成并行线程间的同步损耗甚至会导致死锁。另外高分辨的单帧图像数据量非常庞大,单个线程难以负担如此多的资源。
基于宏块以及搜索位置的并行是一个比较好的想法,首先宏块及搜索位置间的运算是独立的,同步成本较低。但它们也有一些缺陷,例如单个宏块或搜索位置上的数据量还是较大,对单个线程的资源要求较高。
而基于像素的并行是最为可行的。首先各个像素上的SAD计算是完全独立的,其次其计算比较简单,仅包含SAD运算以及一些查表操作,这也意味着各个线程完成计算的时间相差不多,同步成本较低。
但是由于并行计算本身限制,导致了另一方面成本的上升,主要是搜索位置上的提前终止机制略微逊色于传统的串行计算。
2 基于SSE的优化
2.1 基于SSE的SIMD架构
Single Instruction stream,Multiple Data streams即单指令多数据架构,简称SIMD。是一种通过批量处理数据而提高运算速度的体系结构[4]。与之相对应的则是单指令单数据的SISD架构。
与SISD架构同一时间仅能对一个数据进行单种操作不同,SIMD架构可以在同一时间对多个数据进行单种操作。所谓单种操作意味着对同一批数据所采用的处理方式是一致的(例如RGB反色,矩阵的数乘等等)。
SSE(Streaming SIMD Extensions)是英特尔在其Pentium III CPU中引入的指令集[5]。该指令集增加了8个128bit寄存器(XMM0-XMM7)对SIMD并行计算提供支持。当前英特尔公司的酷睿系列CPU以及AMD公司的K10系列CPU都拥有128bit的SSE/FP运算单元。
2.2 全搜索算法的SSE优化
对基于宏块划分的视频编码算法来说,宏块的划分方式一般分为4×4、4×8、8×4、8×8、8×16、16×8、16×16几种方式[3]。而运动估计算法一般都是针对图像的亮度分量(Y分量)来进行的。因此将亮度分量归一化到8bit色深后。宏块的数据量正好是8字节的整数倍。非常适合在128bit的SIMD单元进行运算。
本文主要采用16×16的宏块划分来进行实验。宏块中的每一行16个像素的8bit亮度分量(Y分量)正好对应着一个128bit的SIMD单元。通过16次128bit的SAD运算,将结果汇总得到整个宏块的SAD值。
在算法中,首先按照当前的搜索位置编号,获得全搜索算法中螺旋数组中的位置偏移量,从而定位参考帧中的宏块位置。并对当前帧宏块与参考帧宏块位置做边界检测,以防超出图像范围。然后一次性将128bit长度的当前帧与参考帧数据(16像素)读入到两个__m128i类型的变量中。
(1)SSE指令“__m128i_mm_sad_epu8(__m128i a,__m128i b)[6]”可以计算出16对8bit整型变量ai和bi之间差的绝对值。并将undefined以及undefined的运算结果(各16bit)分别存放在128bit返回值的高低两个的64bit中。
(2)然后通过SSE移位指令“__m128i_mm_shuffle_epi32(__m128i a,int imm)[7]”将计算结果的高64bit取出并与低64bit结果相加,结果存于低64bit中。
(3)最后通过SSE指令“int_mm_cvtsi128_si32(__m128i a)[7]”从128bit结果中取出最低有效位的32bit数据作为一个32bit整型变量返回。即为该16对像素的SAD值。
以上SAD运算的示意图如图2所示。
通过16次以上运算,即可完成整个16×16宏块的SAD运算。而在外层循环中,通过在图像中各个宏块的各个搜索位置上进行该运算。则可以完成整帧图像的运动估计SAD运算。
3 实验结果及结论
3.1 实验环境
本次实验采用的CPU是英特尔公司的 Pentium Duo E5400处理器,时钟频率为2.7GHz,支持SSE2指令集。
程序运行及编译环境为Windows7+VC 9.0,打开所有编译优化选项,编译命令行为/O2/Oi/Ot/GT/GL。
测试数据来自高清数字电影片源中的两帧10bit图像,分辨率为1988×1080。两帧数据均一次性全部读入内存并提取出归一化到8bit后的亮度信息数组预备。图3给出了仿真测试使用的参考图像。整个序列只有中央的卡通人物有一定动作,背景部分保持不变。
运算时间为运动估计运算开始到结束,不包含帧读取、RGB转Y分量等运算时间。最终运算时间结果为10次运动估计运算时间取平均值。
3.2 实验结果
在以上实验环境下。采用传统SISD方法运算耗时为11390ms。而采用SSE指令运算耗时3478ms,速度提升227.48%,运算结果与传统方法一致。
3.3 实验结论
本文通过SSE指令调用CPU上的SIMD运算单元,充分挖掘了CPU的运算潜力。在不扩充新硬件的前提下,将运动估计的运算速度提升了2倍以上了。明显缩短了视频编码的时间。
摘要:在基于宏块划分的视频编码算法中,运动估计阶段因为其庞大的计算量占用了绝大多数的编码时间。特别是在对高清视频进行编码时,运动估计已经成为提升编码性能的最大瓶颈。本文通过对全搜索运动估计算法进行基于像素的并行化修改和优化,使用SSE指令调用CPU的SIMD单元同时对当前宏块与参考宏块的多个像素进行SAD运算,对运动估计进行了并行化的实现。在相同的硬件环境以及保证编码质量的前提下,相对于传统的全搜索CPU运算获得了2倍以上的编码性能提升。
关键词:图像处理,并行处理,视频编码,SSE
参考文献
[1]Mostafa Hagog.Looking for 4x speedups?SSE to the rescue![EB/OL].[2007].http://software.intel.com/file/1000.
[2]Wikipedia.H.264/MPEG-4 AVC[EB/OL].[2010].http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC.
[3]Thomas Wiegand,Gary J Sullivan,Gisle Bjntegaard.Overview of the H.264/AVC Video Coding Standard.[C].IEEE Transactionson Circuits and Systems for VideoTechnology,2003.13(7):560-576
[4]Jon Stokes.SIMD architectures[EB/OL].[2000].http://arstechnica.com/old/content/2000/03/simd.ars/.
[5]Intel.Intel(R)C++Intrinsics Reference[EB/OL].[2007].http://cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf.
[6]Kiefer Kuah.Motion Estimation with Intel Streaming SIMD Extensions 4(Intel SSE4)[EB/OL].[2007].http://software.intel.com/en-us/articles/motion-estimation-with-intel-streaming-simd-extensions-4-intel-sse4.
涡轮叶片并行子空间多学科设计优化 篇2
涡轮叶片并行子空间多学科设计优化
将Kriging近似模型与并行子空间多学科优化方法相结合,对包括气动、传热和结构三个学科的涡轮叶片进行多学科优化设计,并与传统单级多学科优化方法进行对比.结果表明,基于Kriging近似模型的并行子空间多学科优化方法优化结果合理,与单级优化方法相比优化效率明显提高,寻优能力增强,适用于复杂结构的多学科优化设计.
作 者:贺谦 李元生 敖良波 温志勋 岳珠峰 作者单位:西北工业大学工程力学系,西安,710129刊 名:机械设计与研究 ISTIC PKU英文刊名:MACHINE DESIGN AND RESEARCH年,卷(期):26(2)分类号:V232.4 TP391关键词:多学科设计优化 并行子空间优化 Kriging近似模型 涡轮叶片 MDO Kriging approximation turbine blade
由跟跑、并行向并行、领跑转变 篇3
中国纺织工业联合会会长王天凯,原会长杜钰洲,副会长兼秘书长、纺织之光科技教育基金会理事长高勇,中纺联副会长孙瑞哲、杨纪朝,副会长、纺织之光科技教育基金会副理事长夏令敏,中纺联党委副书记陈伟康,纪委书记王久新,顾问陈树津、张延恺等领导出席大会并为获奖代表颁奖。中纺联各部门、各专业协会领导,地方行业协会领导,中纺联奖励委员会委员以及本次会议表彰的科技工作者、企业家、院校教师与学生获奖代表及众多媒体代表 600 余人出席了表彰大会。会议由高勇主持,孙瑞哲在大会上作重要讲话。
会议对获得“纺织之光”2015年度中国纺织工业联合会科学技术奖、教育教学成果奖、教师奖、学生奖、针织内衣创新贡献奖、全国纺织行业技术能手、技能人才培育突出贡献奖的获奖单位和个人代表颁奖,并为全国纺织技术创新示范企业、全国纺织科技创新人才颁发证书,同时为纺织之光科技教育基金会捐款单位授牌。
群体智能优化算法的并行化浅析 篇4
在解决实际问题时, 我们会充分利用群体智能优化算法的特点。首先, 群体中相互作用的个体是独立的, 没有直接的控制中心, 即使个体失败, 整个群体仍然具有完成任务的能力, 不会因为个别个体出现故障而影响整个问题的求解, 具有较强的稳定性;其次, 每个个体只能感知局部信息, 个体所遵循的规则非常简单, 所以群体智能的实现简单。第三, 系统具有很好的可扩充性, 因为系统个体的增加而引起的通信开销的增加很小。这样, 使原来一些复杂的、难于用常规的优化算法进行处理的问题可以得到解决, 大大增强了人们解决和处理优化问题的能力, 使得人们投入更大的精力对其理论和实际应用进行研究。
正因为这些特点, 无论是从理论研究还是应用研究的角度分析, 群智能理论及其应用研究都是具有重要学术意义和现实价值的。
群体智能算法具有良好的寻优能力, 并具有鲁棒性强, 对于初值和参数选择不敏感、简单易实现等诸多优点, 但在实际应用中也存在些问题。例如在解决水库群优化调度的应用中, 随着水库群规模的增大, 对优化算法的求解质量和运行速度提出了更高的要求。另外, 在问题求解空间逐渐增加时, 群体智能串行算法的执行存在计算量大, 速度慢, 甚至有时无法得到满意的结果。因此, 我们将群体智能优化算法与并行算法相结合进行改进, 产生并行化的群体智能优化算法。
1 并行算法的研究内容
1.1 基本原理
并行算法就是用多台处理机联合求解问题的方法和步骤, 其执行过程是将给定的问题首先分解成若干个尽量相互独立的子问题, 然后使用多台计算机同时求解它, 从而最终求得原问题的解.如图1所示。
1.2 并行计算模型
并行计算模型通常指从并行算法的设计和分析出发, 将各种并行计算机 (至少某一类并行计算机) 的基本特征抽象出来, 形成一个抽象的计算模型。并行计算模型是算法设计者与体系结构研究者之间的一个桥梁, 是并行算法设计和分析的基础。并行计算模型有PRAM模型, BSP模型, LogP模型, BDM模型等。
早期的并行计算模型是共享存储模型, 如PRAM (Parallel Random Access Machine, 随机存取并行机器) 模型, 就是共享存储的SIMD模型, 它是一种抽象的并行计算模型。在这种模型中, 假定存在一个容量无限大的共享存储器, 有有限个或无限个功能相同的处理器, 且他们都具有简单的算术运算和逻辑判断功能, 在任何时刻个处理器都可以通过共享存储单元相互交互数据。
第二代是分布存储模型。如BSP模型是个分布存储的MIMD计算模型。在这个阶段如何把不同的通信性能抽象成模型参数, 是研究重点。BSP模型强调了计算任务和通信任务的分开, 它将处理器和路由器分开, 这样做既掩盖具体的互连网络拓扑, 又简化了通信协议。
随着网络技术的发展, 通信延迟固然还有影响, 但对并行带来的影响不再像当年那样重要。LogP模型是一种分布存储的、点到点通信的多处理机模型, 它充分说明了互联网络的性能特性, 而不涉及到具体的网络结构, 也不假定算法一定要用现实的消息传递操作进行描述。
1.3 并行算法的设计技术
虽然并行算法研究还不是太成熟, 但并行算法的设计依然是有章可循的, 例如划分法、分治法、平衡树法、倍增法/指针跳跃法、流水线法破对称法等都是常用的设计并行算法的方法。另外人们还可以根据问题的特性来选择适合的设计方法。
2 并行结构
2.1 多处理机MP (Multiprocessors) 结构
MP结构基于总线连接, 集中式共享存储。该结构采用单地址空间, 易编程性, 动态负载平衡, 无需显示数据分配。具有高速缓存及其一致性, 数据局部性, 硬件维持一致性, 低通信延迟等优点, 但存在欠可靠, 不可扩放性等缺陷。
2.2 大规模并行处理系统MPP (massively parallel processing)
MPP是成百上千个处理器组成的大规模计算机系统, 其规模是可以变化的。它的结钩稳定, 高带宽低延迟, 有较好的通用性和可用性。
这两种并行结构除了处理器数量有所不同外, 还存在很大差异。比如内部互连方式、存贮器组织结构, 以及操作系统支持方式和应用领域等方面。
2.3 工作站机群NOW (network of workstation)
工作站机群中每一个节点都是一个完整的工作站, 有自己的磁盘和操作系统。通过互连网将工作站连接在一起, 并配以相应的支撑软件, 构成一个分布式并行计算机系统。特别地, 大规模并行处理机 (MPP) 可以近似的看成为一个没有本地磁盘的COW。COW的网络接口是松耦合的, 即它是接到I/O总线上而不是像MPP那样直接接到处理器存储总线上的。
这种结构的优点是投资风险小, 系统结构灵活, 性价比高, 能充分利用分散的计算资源, 可扩放性好。但通信性能和并行编程环境是需要考虑的问题。
3 对群体智能优化算法并行化研究的现状
求解TSP问题的智能优化算法主要包括蚁群算法和模拟退火算法等, 这些算法求解TSP问题的速度比传统的精确求解算法有很大改进, 但在问题的求解空间逐渐增加时, 串行执行速度往往还是无法满足人们的需求.针对此问题, 文献[4]研究了蚁群算法、模拟退火算法以及两者的混合算法的并行实现方法, 建立了PC机群实验平台, 基于MPI环境对蚁群算法、模拟退火算法以及混合算法的并行算法进行了测试.根据理论研究和实际测试的结果, 比较了并行算法和传统串行算法的性能差异, 说明了基于MPI的并行算法求解TSP问题是一种低成本、高效率的解决方案。
文献[5]建立并行粒子群算法求解多阶段最优化问题数学模型, 重点研究了粗粒度并行粒子群算法。应用开发的分布式水库群优化调度并行计算系统, 将文中两种策略的并行粒子群算法 (PPSO) 和串行粒子群算法 (PSO) 应用于金沙江与雅砻江混联水库群优化调度中。通过对其优化结果的分析表明, PPSO有利于提高运算速度和求解精度以及改善算法的收敛性能。文献[6]设计和实现了一种并行粒子群优化算法.实验结果表明, 基于岛屿群体模型的并行粒子群优化算法不仅提高了求解效率, 而且改善了早收敛现象, 算法的性能比经典粒子群优化算法有了很大提高。
文献[7]提出了自适应免疫量子粒子群优化并行算法。针对该算法计算量大、耗时长的缺点, 结合已有的并行计算技术, 构造出了该算法的并行计算方法。仿真实验表明无论是优化算法的搜索能力还是运行时间以及并行效率, 该并行算法都具有较明显的优势, 从而为解决复杂优化问题提供了一种有力手段。
4 将群体智能优化算法并行化需要考虑的几点
1) 分治策略。将一个比较复杂的问题分解为若干个与原有问题相似但规模适度可以独立运算的子问题, 最后通过合并这些子问题的结果就得到原问题的解。在分解过程中要使得这些子任务能在多个处理机上并行执行和相互通信, 彼此合作, 协调一致地完成整个计算任务。
2) 并行策略。要根据实际问题选择适合的并行策略。粗粒度 (coarse-grained) 方法是指将较多的子任务分配给单个处理器因此能减少处理器之间的信息传递。细粒度 (fine-grained) 并行指分配给单个处理器较少的计算实体, 但随之而来的是处理器间频繁的信息交互, 会带来通讯的开销。
3) 通讯。如何减少通信开销和同步开销也是设计智能并行算法的关键。在并行算法中存在着随着处理机台数的增加, 算法的并行效率有所下降的问题。要想尽可能地减少通信开销, 有效途径是改善网络接口, 减小或重叠通信延迟和降低发收开销。
5 总结
从目前已有的许多并行化的群体智能优化算法应用在实际中看出对它的研究前景是很广阔的。这种并行化的优化算法, 对传统智能优化算法的缺陷以及处理复杂问题的时间进行了改进。高性能计算的普及在一定的程度上改变了科学研究的方式, 并必将成为人们认识自然改造自然的一种新方法。
摘要:针对目前并行化的群体智能优化算法在实际应用中的现状进行分析研究, 从并行模型, 并行结构, 以及算法设计等方面介绍了群体智能算法并行化研究的相关内容。对更进一步的研究提出了关于通信等方面需要考虑的问题。
关键词:群体智能优化算法,并行算法,通讯
参考文献
[1]黄席樾, 胡小兵.现代智能算法理论及应用[M].北京:科学出版社, 2005.
[2]曾建潮, 介婧, 崔志华.微粒群算法[M].北京:科学出版社2004.
[3]李晓磊, 邵之江, 钱积新.一种基于动物自治体的寻优模式:鱼群算法[J].系统工程理论与实践, 200211:32238.
[4]许智宏, 宋勃, 郭艳艳。模拟退火与蚁群混合并行算法解旅行商问题[J].河北工业大学学报, 2010, 39 (2) :48-51.
[5]陈立华, 朱海涛, 梅亚东.并行粒子群算法及其在水库群优化调度中应用[J].广西大学学报, 2011, 36 (4) :677-682.
[6]黄芳, 樊晓平.基于岛屿群体模型的并行粒子群优化算法[J].控制与决策, 2006, 21 (2) :177-179.
并行优化 篇5
职级评定要跳出“单位级别依赖”
公务员职级改革的重难点是公务员的考评、奖惩、升降的公平性,它应严格约束长官意志,建立民主评定、申诉和调查、举证义务、责任追究等制度。
《意见》明确了公务员职级制度改革,无疑令人期待,它也是对十八届三中全会提出的“建立公务员的职务与职级并行、职级与待遇挂钩制度”的呼应。而需要明确的是,公务员职级制度是法治政府相关的“文官制度”的一部分,它需要恪守法治原则,也理应在技术方法、机制设计、关联制度等方面下工夫。
就制度改革本身而言,我认为至少应注意几个方面:首先,应解剖现行制度积弊的体制性成因。一直以来,公务员的职级与职务是紧紧挂钩的。弊端之一是,没有职务,职级就无法晋升。县以上有处级的调研员、巡视员等虚职;科级及其以下没有虚职。弊端之二是,公务员职级过度依赖其单位的级别,导致庙大和尚大、庙小和尚小,县级公安局一个能干的老刑警到退休可能只是科级,而国家部委中的能力普通者退休前至少是处级,明显不公平。这是体制性问题,须进行制度设计上的调整。
其次,应尽可能明确这项改革的目标:处级目标应是职级与职务相对分离,分开考评、升降,并建立相应待遇制度。职级对应的考评、调整,应主要以德、能、实绩、资历为依据,但也要考虑其所在单位的级别。县以下公务员的职级,可以到处级,特别突出者可以到司局级;或者按公务员分级,合理确定职级的上下区间。
至于各级、各类、各个公务员的工资待遇和财产状况,须严格遵循透明原则,接受全社会监督。对其任何不正当利益均应依法处理,贪污受贿必要时应降级直至开除;接受任何馈赠,均应及时报告、公开,并举证证明其不违法性。
而公务员职级改革,还需诸多关联性制度改革措施的配套。例如,应健全公务员的退出机制,取消事实上的铁饭碗。对每个公务员职位,须作尽可能明确的职责规定,并对其履职状况进行内外部评价。比照事业单位的聘期制,对部分公务员也实行聘期、任期制,打破终身制。又如,对不同种类的、同职级的公务员,应按照公务的复杂性、危险性、紧迫性程度,实行合理的差别待遇:如刑警的待遇应高于大多数种类的公务员。
另一重难点是公务员的考评、奖惩、升降的公平性及相关激励机制问题。长期以来,长官意志说了算的提任机制为害颇深。而相关改革应严格约束长官意志,建立民主评定、申诉和调查、举证义务、责任追究等制度。如果负责人特别主张提升某人的职级,则应公开对组织、公众承担证明义务,并对被晋级者的德、能、绩及法治意识、守法状况承担“担保责任”;对于不公平、不正当的升降,应严格追究负责人的责任。概言之,在此项改革中,要注重对症下药、方法缜密、公开公平、厉行法治,特别是管束好各级负责人,丝毫不能含糊。
就怕“职务职级并行”执行难
现实中的公务员考核里,虽然要求公务员考核要尽量体现公平和真实的文件不少,可囿于人情世故、利益固化等因素,实际执行效果并不理想。
作为基层公务员一名,听到“不当官也能享受官员待遇”的消息,看到职级改革有了纲领性文件,挺欣慰的:毕竟,这有利于解决由于职务的瓶颈导致福利待遇长期停留在低位的问题。
但欣慰之余,我也生出几丝隐忧:该制度的推行,从整体社会效益上讲,从促进基层待遇公平方面讲,都是大好事;但对基层公务员个体而言,却并不必然意味着工资待遇及心理感觉的必然公平。
县以下基层公务员实施职务与职级并行,或有两个明显的涵义,一是政策推行目的是激励基层勤勉公务员更努力地工作;二是必须切实公正地选出具有勤勉特质的公务员予以激励,才能起到涨士气的作用。
但现实中的公务员考核里,虽然有关方面出台了公务员考核要尽量体现公平和真实的意见和制度,可实际执行效果并不理想,很大程度上陷入了“你好我好大家好”的怪圈中,不论勤勉与否,不论工作成绩大小,只要不是有明显问题,考核都会是“称职”以上等次。而这种人情与关系绑架下的考核,很可能让勤勉的公务员和混日子的都能实现晋级涨工资,但却很难体现出能力、绩效的差异来;而这种“干好干坏一个样”的隐性不公,到头来,还会与实施基层公务员职务与职级并行的初衷相悖。
说起来,职务与职级并行,是《公务员法》赋予包括基层在内的一项基本制度,但它落不到实处也有好一阵子了。原因有多方面的:比如基层财力有限,比如职务与待遇挂钩的惯性认知——某种程度上,官员待遇也是种显示地位、刷优越感的方式。而到头来,它也使得一些地方领导手中的权力收益最大化,如把副主任科员、主任科员等当“官”卖,通过这些“官”职的私相授受寻租。而一些基层公务员为达到待遇晋升,不得不千军万马争“官”干,加剧了基层官场的腐败和跑官要官等现象。这不仅是某些“局中人”的亲身感受,很多民众对此也不乏认识。
给基层公务员一个增加福利待遇的通道,确实鼓舞人心,但出台职务与职级并行制度只是简单的第一步,关键是怎么啃“硬骨头”,让改革的韧性掰得赢固化利益圈的手腕,破除那些执行中的隐性不公。
矩阵在并行计算中的通信优化研究 篇6
并行计算在油藏数值模拟、数值天气预报等工程和科学计算领域得到越来越广泛的应用。反过来,工程(科学)计算的发展对并行程序性能的要求也越来越高。并行程序性能优化的一个主要方向就是通信优化。其中包括减少通信量和优化通信调度等方面。目前国外这方面的研究主要集中在对矩阵的压缩算法优化上。本文设计实现了稀疏矩阵的压缩通信算法。该算法的基本思路是将计算过程中的稀疏矩阵分步压缩,然后将压缩后不同数据类型、不同地址空间中的分散数据打包到一个连续的地址空间集中发送;接收进程对接收到的数据采取解包、解压缩的方式还原出发送数据。这种通信方式从实质上减少了通信数据量,从而降低程序执行过程中通信的代价。这里给出一种性能评估方法,通过对时间复杂度和空间复杂度的计算给出一个压缩通信的稀疏度临界值。以这个稀疏度临界值为依据对矩阵进行动态压缩通信。
1 稀疏矩阵的压缩通信技术
对大规模稀疏矩阵分块进行压缩、打包,然后集中传输,接收端进行解包、解压缩,可有效地提高稀疏矩阵的通信效率。然而,并不是对任何数据都进行打包。因为如果一个分块的稀疏度不够大的话,采用压缩的方法反而会增加通信代价。给出一个稀疏度临界值,在压缩打包过程中动态判断一个数据块是否采用压缩方式。这个稀疏度临界值是与软硬件环境相关的,总通信时间包括消息处理时间和实际传输时间。消息处理时间与算法及CPU的处理能力有关;实际传输时间与网络带宽有关。以下详细介绍性能评估方法与稀疏度临界值计算公式、稀疏矩阵压缩技术、MPI打包与解包函数。
1.1 矩阵稀疏度临界值计算方法
在消息传递系统中,向一个进程发送消息的延迟包括消息处理时间和实际传输时间。后者大约是消息的大小除以网络带宽;消息处理时间可以表达成一个常量加一个与消息大小成比例的量。因此传输数据大小为S的消息总的延迟L可表示为:
其中:l0是固定设置的时间;11是每字节的设置时间;BW是网络带宽。
如果在消息发送前进行压缩,接收后进行解压,那么总的延迟可表示为:
其中:l'0是压缩和解压缩算法的固定消耗时间;l'1是对每字节信息压缩和解压缩消耗的时间;R是压缩率。若想使压缩方法降低传输延迟,那么必须满足L'
因为l'0、S都是正数,所以括号内的数必须是正值才能保证不等式的成立。对文献[1]中的性能评估式(1/BW)(R-1)/R>l'1进行变形得出:
在本文的方法中,假设稀疏矩阵的大小为M(其中非零元素的个数为M'),d表示压缩后索引数据占用的空间(详见1·2节),则压缩率可以表示为:
而矩阵的稀疏度定义为:
由式(4)~(6)可以进一步推导出矩阵稀疏度的临界值计算式:
式(7)中d M往往很小,在此将其忽略,得:
式(8)中网络带宽BW、算法每字节压缩和解压缩消耗时间l'1,均可通过实验测得。对于一定的硬件环境和算法可以认为BW、l'1总是一定的。因此可以确定矩阵稀疏度的下界值。只有矩阵稀疏度sparsity大于这个下界值时,使用压缩传输才能提高通信效率。也就是说对于一定的软硬件环境,矩阵的稀疏度达到多大时采用压缩通信的方法可以提升通信效率。
1.2 稀疏矩阵的压缩方法
为了减小消息发送的数据量,需要对稀疏矩阵进行压缩。其中最基本的方法是三元组表示法:在记录非零元素的同时,记录非零元素所在的行号、列号,这样才能确定一个非零元素是矩阵中的哪一个元素。其中每一个非零元素所在的行号、列号和值组成一个三元组(i,j,aij),并由此三元组惟一确定。
以上是传统的稀疏矩阵压缩方法。为了能方便地按行列的方式访问这个结构,采用了将行列都存储的方式。在这里,为了进一步减少消息传输中的数据量,将一个二维矩阵转换为一维数组。压缩时可以只记录数组的一维索引。如上所述的矩阵A,其中有非零元素6个,三元组的记录方法除了要记录非零元素外,还需要记录2×6个整数作为其行和列的索引。如果将该矩阵转换为一维数组则只需要记录6个整数作为其索引。
如果用d表示压缩后索引数据占用的空间,那么压缩后数据占用的空间大小为M'+d,则压缩率可表示为R=M/(M'+d)。
1.3 数据的打包传输
MPI通信库的打包/解包函数为发送不连续数据提供了一种可能的实现方法。在这种系统下,用户在发送前显式地把数据包装到一个连续的缓冲区,在接收后从连续缓冲区中解包。例如在本算法中,一个消息可以被分成几个部分来接收,后面部分数据的接收操作可能依赖于前一部分的内容。这时可以将这些与信息格式相关的数据打包到连续数据空间的开始,真正要传输的数据信息紧接着格式信息打包。这样接收端只要查看数据包的前几个信息就可以确定数据的接收长度、格式以及如何对数据进行处理等信息。
1.3.1 MPI的数据打包函数
MPI_PACK(inbuf,incount,datatype,outbuf,outcount,position,comm)
N inbuf输入缓冲区起始
N incount输入数据项数目
N datatype每个输入数据项的类型
OUT outbuf输出缓冲区开始
N outcount输出缓冲区大小
N OUT position缓冲区当前位置
IN comm.打包消息的通信子
MPI_PACK将由inbuf、incount、datatype指定的发送缓冲区中的消息打包到outbuf和outcount指定的缓冲区空间。输入缓冲区可以是MPI_SEND允许的任何通信缓冲区。输出缓冲区是一个连续的存储空间,含有outcount个字节,起始地址为outbuf(长度是以字节为单位的,而不是以元素为单位,就像它是一个为MPI_PACKED类型的通信而准备的缓冲区)。入口参数position的值是输出缓冲区中用于打包的起始地址,其值随着打包消息的大小而增加;出口参数position的值是被打包的消息占用的输出缓冲区后面的第一个地址。comm参数是用于发送数据的通信子。
1.3.2 MPI的数据解包函数
MPI_UNPACK (inbuf,insize,position,outbuf,outcount,dataty-pe,comm)
N inbuf输入缓冲区起始
N insize输入数据项数目
NOUT position缓冲区当前位置
OUT outbuf输出缓冲区开始
N outcount输出缓冲区大小
N datatype每个输入数据项的类型
N comm.打包消息的通信子
MPI_UNPACK从inbuf和insize指定的缓冲区空间解包一个消息到outbuf、outcount、datatype指定的缓冲区中。输出缓冲区可以是MPI_RECV允许的任何通信缓冲区。输入缓冲区是一个连续的存储空间,大小为insize字节,开始地址为inbuf。入口参数position的值是输出缓冲区中被打包消息占用的起始地址。comm参数是用于接收消息的通信子。
2 算法实现
针对油藏数值模拟的应用实例,本文实现了稀疏矩阵的压缩通信算法。对于大型二维或三维矩阵,即在每一维的长度都很大的情况下采取按行打包的方式,如三维矩阵C(L,M,N),在以N、M为上限的二重循环中,每次打包C矩阵的L个元素,最后一次性将打包缓存区的数据发送到接收端。下面的发送和接收都是针对矩阵中的行进行的,也就是一个一维数组进行的。
发送端首先遍历要发送的矩阵,同时对数据进行压缩,将非零元素记录到压缩数组COM,相应非零元素的索引记录到索引数组COMINDEX的对应位置,非零元素的总个数记录到一个整型变量COMLEN。这个过程是必需的,因为至少要对数组处理一遍才知道该怎样发送它。
根据压缩后数组长度COMLEN选择打包方式。有两个判断依据:空间复杂度上的判断;时间复杂度上的判断。假设要发送的数组总长度为M,数组中的非零元素为M',那么压缩后的存储空间为K c=M'×(sizeof(integer)+sizeof(senddata_type))(此处为了计算方便忽略了记录TMPLEN的一个整型数据的记录空间),原来数组的大小为K=M×sizeof (senddata_type)。为了减少通信量必须有K c
在时间复杂度方面,利用式(8)。例如在千兆以太网、TCP/IP协议、Intel Xeon 2·8 GHz/512 KB L2 cache处理器、MPICH-1.2.7组成的并行环境下,通过Linpack测得网络实际带宽为1.15E+08 Bps,算法的平均处理时间为L=3.617E-8/8=3.22E-9(s/Byte)。由这两个值可求得sparsity的下限为0.37,M/M'>l·59。
确定发送方式后,利用MPI_PACK将不连续的数据打包到一个连续的数据空间中,然后一次性发送到接收进程;接收端利用MPI_UNPACK将数据解包。发送数据包格式分两种情况,以CFLAG位标志。CFLAG=-1表示原数组中的所有元素都为“0”元素,此时只发送一个标志位即可;CFLAG=0表示数据按原数组打包发送,此时在标志位后直接打包原数组;CFLAG=1表示数据按压缩的形式打包发送,此时在标志位后打包压缩数组长度TMPLEN,再是索引数组,然后是压缩数组。
CFLAG CLEN CINDEX CARRAY-1:没有非零元素无数据;0:原数据传输原数组;1:数据压缩传输压缩后长度非零元素索引非零元素值。发送数据包格式接收端进程在接收到数据包后首先解包第一个数CFLAG,判断其值;然后根据实际情况对数据进行处理。若CFLAG=-1则直接将原数组的元素置零;若CFLAG=0则直接将数据解包到原数组中;若CFLAG=1,则解包压缩长度TMPLEN,根据TMPLEN解包索引数组和压缩数组,并将压缩数组解压缩到原数组中。
3 结束语
大规模并行应用系统中普遍存在着对矩阵的操作。实际应用中,这些矩阵通常是稀疏矩阵。有效地处理这些零元素,有利于提高并行程序的性能。本文给出了一个通过对稀疏矩阵压缩通信的方法,定量分析解决了稀疏矩阵压缩传输中稀疏度的临界值问题,根据稀疏度临界值的动态判断实现了压缩传输算法,并给出稀疏度与传输效率之间的关系。通过对油藏数值模拟中的实时数据测试表明,这种压缩发送的方法能显著地提高节点间数据通信的效率。为了使压缩矩阵的时间尽量少,本文采用了最简单的压缩处理方法。下一步的工作准备寻找更加快速、高效的数据压缩算法,将本方法推广到一般数据的压缩通信过程中。
参考文献
[1]KE Jian,BURTSCHERM,SPEIGHT E.Runtime compression of MPI messages to improve the performance and scalability of parallel applications[C]//Proc of High-Performance Computing,Networking and Storage Conference.2004.
[2]LIN Chun-yuan,CHUNG Y C.Efficient data compression methods for multidimensional sparse array operations based on the EKMR scheme[J].IEEE Trans on Computers,2003(12).
[3]GROPPW,DOSSN,SKJELLUM A.MPICH model MPI implementation reference manual UC-405.[R].[S..l]:Argonne National Laboratory, Mathematics and Computer Science,2005.
[4]BAIZ,DEMMEL J,DONGARRA Jetal.Templates for the solution of algebraic eigenvalue problems:a practical guide[C]//Proc ofSIAM. 2000:780-784.
[5]都志辉.高性能计算并行编程技术——MPI并行程序设计[M].北京:清华大学出版社,2001.
[6]曹建文,潘峰,姚继锋,等.并行油藏模拟软件的实现及在国产高性能计算机上的应用[J].计算机研究与发展,2002(8).
[7]曹建文,孙家昶.油藏数值模拟软件的并行化探索[C]//全国第六届并行算法学术会议论文集[M].长沙:国防科技大学出版社, 2000.
并行优化 篇7
关键词:SQP,并行优化,多领域仿真,Modelica
0 引言
Modelica语言对不同领域物理系统的模型进行统一表述, 实现了统一建模, 并支持层次化结构建模[1]。文献[2,3]基于Modelica 语言的复杂机械系统建模与仿真平台, 实现了工程实际中复杂机械系统多领域统一可视化建模、仿真和优化。目前国内外已经推出了基于Modelica的复杂机械系统的建模与仿真软件。
在MWorks中, 优化模块是其核心之一, 目前集成了约束变尺度法、拟牛顿法、Hook-Jeeves算法和遗传算法 (genetic algorithm, GA) 。约束变尺度法又被称为序列二次规划 (sequential quadratic programming, SQP) 算法, 具有收敛快、效率高、可靠性与整体收敛性好、适应能力强等一系列优点[4], 并被成功应用于工程优化问题的求解。序列二次规划算法通过求解一系列的二次规划子问题 (quadratic programming, QP) 来获得原问题的最优解, 而其二次规划子问题的精度依赖于原问题的目标函数和约束函数梯度值的精度, 并对问题的收敛性有较大影响。对于基于多学科仿真的多实例 (即多工况或一个系列产品) 多目标仿真优化问题, 当采用差分法计算梯度时, 由于每次迭代需要多次进行仿真函数评估 (评估次数等于设计变量维数的两倍乘以实例数+1) , 优化求解过程很费时。因此研究SQP并行优化算法很有必要。
1 SQP算法的并行化
SQP算法并行化研究, 国内外已取得了一定的成果。High等[5]从全局优化、函数评估、梯度评估与Hessian矩阵的有限差分计算等方面讨论了SQP算法并行化, 利用SCHEDULE软件在Alliant FX/8并行机上进行了大量的算例运算。张帆等[6]讨论了大规模化工过程系统中, 优化算法SQP的并行化和机群计算效率的问题, 并通过算例证明其合理性。陈忠[7]叙述了关于非线性规划问题的求解有几种主要并行思想, 简要地综述了值优化的进展。
总之, SQP算法并行化研究主要集中在传统优化的基础上并结合具体的问题来展开, 而基于多学科仿真多实例多目标的SQP优化算法并行化研究甚少, 且绝大多数的研究是针对专用并行机的。因此, 本文从基于多学科仿真的多实例多目标一般性优化出发, 研究SQP梯度计算并行化和并行仿真评估。
在优化算法中, 梯度计算是最耗时间的步骤, 同时也是设计优化的瓶颈[8], SQP法也不例外。然而, 因为各个变量的灵敏度计算是互相独立的, 因此并行化很适合SQP法。
SQP并行优化算法步骤如下:
(1) 给定初始值X (0) 、λ (0) , 其中, X为设计变量, λ为Lagrange乘子。
(2) 并行仿真评估、并行计算梯度值[6]。应用集中式动态负载平衡技术[9]实现并行计算梯度。工作池技术能很好地实现上述过程, 如图1所示。
(3) 构造二次规划子问题。
(4) 求解二次规划子问题, 确定新的乘子向量λ (k) 和搜索方向d (k) 。
(5) 沿d (k) 方向进行一维搜索, 确定步长αk, 得到新的约束极小值点。
(6) 满足[6]:
‖∇xL[X (k+1) , λ (k+1) ]‖2≤ε1 (1)
式中, L为Lagrange函数;ε1为收敛精度。
或者满足:
式中, f为优化的目标函数;c为优化约束;E为等式约束集合;I为不等式约束集合;ε2、ε3均为收敛精度。
则停止计算。否则转步骤 (2) 。
(7) 求解Hessian近似阵[6], 令k←k+1, 返回步骤 (3) 。
2 并行调度算法
2.1 问题描述
在分布式环境下, 由于各个处理机的性能和功能不尽相同, 一个任务需要一个或多个处理机同时执行才能完成, 这样的任务被称为多处理机任务。一般地, k个处理机的多处理机系统P={p1, p2, …, pk}, 多处理机任务集合为J={j1, j2, …, jn}, 其中每个任务ji (i=1, 2, …, n) 具有二元属性 (si, ti) , si⊆P为执行任务需要拥有的一组处理机, 通常称之为处理机模式[10], ti为这组处理机同时处理该任务所需要的时间量, 称为时间长度。
并行调度就是为提交给系统的每一个任务分配一定的资源, 并指派占用这些资源的起止时间, 目的是在总体上达到时间跨度最小, 这是典型的多处理机任务调度问题, 记为Sk|fix|Cmax[11], Sk为k个独立的处理机, fix为调度实例的约束, 包括处理机的分配方式、任务之间的优先性、资源需求等方面的约束;Cmax表示要使最后完成时间达到最小, 提高系统的总吞吐量。
在多实例多目标并行优化中, 调度模型Sk|fix|Cmax有些特殊, 其中fix表示每一个任务只需要一个处理机。如3个变量、3个实例的多实例、多目标优化问题, 每迭代一次有21个并行任务, 可以描述为J={j1, j2, …, j21}, 其中, J中每一个任务都只需要一个处理机。
现在我们研究N个处理机环境下的并行优化问题。假设优化问题有n个设计变量 (调节参数) 、m个模型实例, 那么多实例、多目标并行优化并行任务可以描述为
Jiter={ji= (si, ti) |i=1, 2, …, m (2n+1) ;
si=pi} (3)
其中, iter为优化迭代次数。由于优化的每一次迭代任务的模式都相同, 只是其中的数值不同, 因此我们只分析其中的一次迭代就够了。执行时间为titer, 且
显然, 任意一个调度的时间跨度不小于N个性能最好的处理机执行的总时间, 我们得到一个下界, 令
B=max{tk|k=1, 2, …, N}
则Opt (J) ≥B, 其中, Opt (J) 表示优化函数。
2.2 调度算法
下面讨论多实例、多目标并行优化S5|fix|Cmax问题的一个调度算法。
输入:任务实例J={j1, j2, …, j21}, 其中, ji= (pi, tk) ;i=1, 2, …, m (n+1) ;k=1, 2, …, N。
输出:实例J的一个调度。
调度算法步骤如下:
(1) 得到所有连接的客户端, 评估其性能, 从高到低排序, 生成处理机性能队列。
(2) 以单位性能任务数和处理机性能数为依据分配任务。将单位性能处理机看作有两个线程的计算节点, 那么其他处理机以其性能数为依据, 决定其启动的线程数。如5处理机系统, 其性能数分别为1.0、1.5、2.0、1.0、2.5, 那么它们同时启动的线程数分别为2、3、4、2、5。每一个节点处理机可以同时启动两个或者两个以上的线程, 实现二级并行计算。由于任务数大, 要分散操作多次才能完成所有任务。每一次分散操作的总任务数为所有处理机可以同时启动的线程数之和。如5处理机系统, 可以同时启动的线程数为16, 那么一次分散操作只能完成16个任务。这样我们的任务分配可以描述为
J={{j1, j2, …, jL}1, {jL+1, jL+2, …, j2L}2, …,
{jx, jx+L, …, jm (2n+1) }i, m (2n+1) >N} (5)
式中, L为所有处理机可同时启动的线程数。
(3) 分散操作。分散任务并执行, 即将任务队列中的每一组任务按其线程数分别发送给调度算法步骤 (1) 中建立的处理机队列对应的处理机;最后一次分散操作比较特殊, 可能所有处理机的总线程数大于所剩任务数, 如果我们按性能好的处理机优先进行分散操作。如5处理机系统, 其性能数分别为1.0、1.5、2.0、1.0、2.5, 那么他们同时启动的线程数分别为2、3、4、2、5, 问题规模为21个任务, 应该进行两次分散操作, 第一次每一个处理机分配和同时启动线程数相等的任务数, 共分配了16个任务, 第二次5个处理机16个线程只有5个任务, 那么这时就有两种策略:①每一个处理机分配一个任务;②只分配给性能好的部分处理机, 显然这两种策略所花费总时间是不相等的。此问题一般性的描述如下:假设有k个处理机, 按其性能从高到低排序p1, p2, …, pk, 它们分别可以同时启动的线程数为L1, L2, …, Lk, 分别启动一个线程计算所花时间为t1, t2, …, tk, 任务数为J, 当
其中, xi表示第i个处理机启动的线程数, 且只能取整数;
假设
这是等式约束离散变量优化问题。应用方向差商法[12]可求得最优解, 即最优分配策略。
如有8台处理机, 它们可同时启动的线程分别为2、3、4、2、5、6、3、5, 任务是3个设计变量, 3个模型实例的多实例、多目标优化问题。每一次迭代的任务数为21, 而8台计算机可以同时启动的线程总数为30, 假设每个处理机启动一个线程计算一个任务需要的时间分别是5s、4s、3s、5s、2s、1s、4s、2s。那么数学模型为
通过方向差商法求得数据如表1所示。
在可行域中, 找到最小值为8的有8组。
(4) 集中操作, 结束。当都执行完分散的任务时, 将每一个客户处理机的结果收集到服务器。
3 算法分析[9]
SQP每次迭代都构造一个QP问题, 且每次迭代的时间复杂度一样, 所以我们只考虑一次迭代就可以。
顺序执行时间为
ts=m (2n+1) (9)
顺序时间复杂性为O (n m) 。
对于并行优化而言, 设处理机总数为p, 那么从处理机有p-1个。
(1) 通信。首先, 向从处理机广播仿真评估模型, 并返回收到模型确认, 即
tconmm1= (p-1) (tstartup+tdata1) +tstartup+tdata0 (10)
式中, tstartup为形成消息和启动传递所需的时间;tdata0 、tdata1为传递不同数据所需的时间。
再执行分散操作, 即
tconmm2= (p-1) (tstartup+tdata2) (11)
式中, tdata2为分散操作需要的平均时间。
(2) 计算。然后所有处理机并行地完成它们的仿真评估任务, 即
(3) 通信。执行集中操作, 即
tconmm3=tstartup+tdata3 (13)
式中, tdata3为集中操作需要的平均时间。
(4) 总执行时间。总执行时间可表示为
(5) 加速系数。加速系数可表示为
如果问题规模足够大, 加速系数可能接近p。
(6) 计算/通信比。计算时间与通信时间比可表示为
(7) 并行效率。并行效率可表示为
如果问题规模足够大, 并行效率可接近100%。
从算法分析中, 我们可以看出通信开销占有相当的比例, tdata0、tdata1、tdata3的大小和问题规模成正比增加。从加速系数可知, 当问题有一定规模时, 通信时间相对减少, 加速系数增大。因此, 并行优化算法是很有价值的。
4 SQP并行优化过程
并行执行流程如图2所示, 图2中, X为设计变量, C为约束函数, O为目标函数, W为加权系数。并行执行流程中涉及如下若干关键过程:
(1) 客户机和服务器转换角色。用户以其中一个MWorks平台为操作对象, 将其转换成 (或增加启动本机作) 服务器, 如果原服务器空闲, 将所有现有的客户端与现在的服务器连接, 包括原服务器上添加一个执行器, 共有执行器数等于客户端个数与原服务器端个数之和。如原服务器忙, 则当前客户机执行单机运算。
(2) 生成仿真模型与参数文件。编译仿真模型, 生成仿真参数mat文件 (MATLAB数据格式文件) , 用于保存所有参数在各仿真步的参数值;将仿真模型生成执行文件Simulator.dll, 初始化时从仿真参数mat文件中读出参数值, 这样每次迭代执行仿真不需要重新生成仿真执行文件。
(3) 客户端创建任务。若角色转换成功, 首先创建并行任务存入队列 (即向量容器vector〈SimulateData〉, 其中SimulateData是结构体) , 如图1所示的工作池的队列, 然后分配任务创建执行器 (即map容器, map〈Socket *, vector〈SimulateData〉〉mExecutors, 其中SimulateData是结构体) , 使客户机和任务对应, 便于管理。
(4) 启动服务器任务分配与负载平衡程序, 进行并行计算, 计算结束通知客户端。
(5) 并行优化任务。并行优化任务基类Task (如C++伪代码) , 其用于存储和设置每一个任务共有的信息。其他任务均从此基类派生。
class Task {//任务
protected:
int m_uType; //命令类型
string m_sClientIP; //客户机名称
int m_nPort; //端口号
bool m_bFinished; //任务完成标志
char * m_sCommandLine; //命令流, 去报头
string m_sAppendMsg; //显示文本信
string m_sModifListStr; //移除的列表信息
static CMySocket * m_pSocket;//套接字
public:
Task () ;//构造函数
~Task () ;//析构函数
int GetType () ;//获得命令类型
string GetClientIP () ;//获得客户机名称
string GetAppendMsg () ;//获得消息
void GetListModStr (StringArray &a) ;//获得移除信息
virtual bool Parse () =0;//解析命令, 将字符流转化成对象内容
virtual string GenerateStream () =0;//将命令对象变成字符流
virtual bool Execute (CPtrList &pSockets) =0;//执行命令
void SetSocket (CMySocket* pSock) ;//设置套接字
void InitInfo (const string* sClient, int nPort, char* pBuf) ;//初始化
void SetInfo (const string* sClient, int nPort, char* pBuf) ;//设置基本数据
……
};
几个关键任务设计, 包括初始化仿真器任务 (InitSimulateDLLTask) , 初始化参数文件任务 (InitParaMatTask) , 执行仿真任务 (SimulateRunTask) , 和仿真结果任务 (SimulateResultTask) , 其中InitSimulateDLLTask用于存储初始化模型动态库文件信息;InitParaMatTask用于存储初始化参数文件信息;SimulateRunTask用于执行仿真任务, 读取初始化参数文件, 仿真评估结束后将结果写入结果数据;SimulateResultTask用于存储结果数据。
(6) 集中操作。服务器收集客户机的仿真结果, 并保存在仿真结果mat文件中。由仿真结果mat文件来计算目标或约束变量值, 对于未激活的不考虑, 变量值需要根据其取值类型 (如最终值等) , 通过仿真时间变化曲线来确定。
(7) 目标聚合。对于多实例、多目标问题, 设q为所有的归一化目标值
令
α∶=max qi j
这样如果α1<α2则认为第一个设计比第二个设计更满意。如果α≤1, 则该设计是满足约束的, 因为此时各个目标值都小于限定的约束权值。
综上所述, 优化问题可认为是寻找最小的α, 即
α*=min α
由此, 该多实例优化问题的数学模型描述如下:
其中, t为时间, tmin和tmax分别为仿真时间上下限, Sinequal为不等式实例约束, Sequal为等式实例约束。
5 实例分析
下面以MWorks系统建立的F14战机简易模型的控制系统参数优化为例, 说明多实例多目标问题仿真优化并行求解。该模型用于对战机模型的纵向运动响应进行仿真与分析, 优化设计的目的是确定合适控制参数, 使该响应符合操控要求。MWorks提供了建立优化模型的统一界面。用户只需从编译仿真模型后得到的参数变量结构树中选择并设置优化模型信息, 亦可读取保存在仿真模型优化信息, 在此基础上构建新的优化模型。
5.1 设计参数
选择3个控制器增益作为设计参数, 并设置初始值和边界值, 即Kf∈[-10, -0.5], 取初始值为-2;Ki∈[-10, -0.5], 取初始值为-2;Kq∈[0.1, 10]取初始值为0.5。其中, Kf为攻击角的比例增益;Ki为攻击角的积分增益;Kq为俯仰速率的比例增益。
5.2 模型实例
选取战机模型的5个空气动力学参数作为实例参数, 并定义了如表2的两个模型实例, 其中实例2的实例参数值是实例1参数值变动+10%后得到的。该多实例优化的目的是在战机模型参数扰动的情况下仍能获得满意的优化结果。模型实例见表2。表中, Ma为俯仰角对攻击角的变化系数;Md为俯仰扭矩对单位攻击角偏差的变化系数;Mq为俯仰扭矩对俯仰速率的变化系数;Za为单位攻击角的提升系数;Zd为单位攻击角偏差的提升系数。
5.3 实例目标和约束
选择攻击角的超调量f1、上升时间f2和调节时间f3作为实例目标, 以攻击角最大偏差c为约束, 并设定各实例期望值见表3。
5.4 优化模型数学表达式
建立以上优化模型后可以得到如下优化模型的数学表达式:
5.5 计算机性能参数
利用2节点机群系统求解。单机及机群系统的机器配置为:Pentium (R) D CPU 3.0GHz, 1.00GB RAM。网络环境为100M局域网。
分别采用序列二次规划法串行和并行求解问题式 (19) , 经过15次迭代后收敛, 优化结果为X=[Kf, Ki, Kq]=[-3.0432, -3.3956, 0.7723]。优化求解后得到的目标和约束值见表4。从表4可以看出所有的目标和约束均满足表3设定的实例期望。单机耗时339s, 机群耗时249s, 可以看出2节点机群计算时间有明显下降。我们以3、4、5节点机群系统分别求解, 得出如图3所示, 计算节点增多, 计算时间缩短, 加速比增大, 但是并行效率有所下降。
在两节点机群系统中, 求解F14战机算例的加速比和并行效率。
加速系数为
并行效率为
根据Amdahl定律, 加速极限为
说明加速比的极限远没有达到, 可以通过增加处理器的数量来使加速比进一步提高。仅单项仿真评估任务并行处理和梯度计算并行化, 就可得到比较好的效率。若提高机群性能, 网络环境等硬件设备, 或者改进算法, 将进一步提高计算效率。
6 结论和展望
本文从SQP优化算法的并行化以及实现等方面研究了SQP并行参数优化设计方法。研究表明SQP方法中梯度计算和模型仿真评估并行化效果较好, 明显加速了优化设计的进度, 在基于多学科仿真的多实例多目标优化中体现的更加明显;SQP方法成功与否依赖于梯度计算的准确性和有效性;利用机群系统计算可用较低的成本获取较大的计算能力, 解决仿真优化中高耗时的问题。系统可以很容易地引入那些可买到的最新的处理器, 扩充机群系统。SQP并行算法的进一步研究, 应考虑全局并行化和线性搜索并行化, 以及全局、函数评估、梯度计算与线性搜索混合并行化和伴随梯度法[5,6]。
参考文献
[1]吴义忠, 吴民峰, 陈立平.基于Modelica语言的复杂机械系统统一建模平台研究[J].中国机械工程, 2006, 17 (22) :2391-2396.
[2]赵建军, 丁建完, 周凡利, 等.Modelica语言及其多领域统一建模与仿真机理[J].系统仿真学报, 2006, 18 (2) :570-573.
[3]丁建完, 陈立平, 周凡利.复杂陈述式仿真模型的指标分析[J].系统仿真学报, 2006, 18 (8) :2092-2096.
[4]余俊, 周济.优化方法程序库OPB-2—原理及应用[M].武汉:华中理工大学出版社, 1997.
[5]High K A, LaRoche R D.Parallel NonlinearOpti mization Techniques for Chemical ProcessDesign Problems[J].Computers&ChemicalEngineering, 1995, 19 (6-7) :807-825.
[6]张帆, 邵之江, 仲卫涛.化工过程系统优化的分布式并行计算[J].化工学报, 2001, 52 (5) :396-400.
[7]陈忠.关于非线性规划问题的并行算法[J].长江大学学报 (自科) , 2006, 4 (12) :1-8.
[8]Ling J, Lorenz T, Biegler V, et al.Design andOpti mization of Pressure Swing Adsorption Systemswith Parallel I mplementation[J].Computers andChemical Engineering, 2005, 29:393-399.
[9]Wilkinson B, Allen M.并行程序设计[M].陈鑫达, 译.北京:机械工业出版社, 2005.
[10]黄金贵, 陈建二, 陈松乔.并行环境下基于多处理机任务的调度模型与调度算法[J].计算机科学, 2002, 29 (4) :1-3.
[11]Hochbaum D S.Approxi mation Algorithms for NP-hard Problems[M].London:PWS PublishingCompany, 1997.
并行优化 篇8
1 CPU与GPU的体系结构
CPU被设计来处理逻辑性较强的事务计算,包括对日常繁杂事务的处理、加工、运算以及系统核心控制等,设计目标追求低延迟、高吞吐。为了获得高效的处理能力,使用了复杂的控制电路(比如分支预测等)和大量的高速缓存(cache),只有少部分的算逻部件(ALU)来完成实际的运算工作。如图1左侧所示。
而GPU诞生之初是为了实现图形加速与渲染的,要求计算的密集度高,为了满足需要,在GPU内部设置了大量的ALU运算单元阵列来并行执行大量的相对简单的线程。由于两者设计的目标不同,GPU在处理能力和存储带宽上相对于CPU有明显优势。而对于复杂指令调度、逻辑判断、循环等的程序执行任务,GPU却逊色得多。
2 GPU编程模型
这里简单介绍nVIDIA的CUDA编程模型,CUDA以C语言为基础,使用API接口调用底层功能进行处理,其调用的模式如图2所示。
在CUDA编程模型中,称CPU端为host,GPU端为device,程序执行采用SIMT(Single Instruction Multiple Thread)模式。可以在GPU上并行执行的程序称为Kernel内核程序,在CPU上执行的称为host宿主程序。由宿主程序控制与GPU的数据通信,负责串行部分的执行,控制Kernel的启动、加载或保存,Device在执行Kernel时创建很多的thread(线程)。CUDA编程模型中,GPU执行运算的基本单位是线程,线程通常组织成Grid(线程网格)的形式,一个Grid包含多个相互合作的thread Block(线程块),而每个thread Block又由一系列Thread组成。如图3所示。要提高程序执行性能可以通过两个层次的并行来获得:一是粗粒度线程并行(Block之间的并行),二是细粒度线程并行(Block内Thread之间的并行)。
3 CPU/GPU异构系统的存储结构
CPU/GPU异构计算系统是指在传统计算机系统中加入GPU作为加速部件并配合CPU共同承担计算任务的新型系统。这里选取n VIDIA的GPU作为加速平台,图4是CPU/GPU存储结构示意图。
GPU最内层存储器包括Registers(寄存器)和Local Memory(局部存储器),仅为单个线程私有,Registers的读取速度较快,读取一次只要4个左右的时钟周期,但数量少,当存储的数据超出使用范围时,则自动保存至同一线程私有的Local Memory中。处于中间层的shared memory(共享存储器)用于线程块内线程之间的同步,同一个线程块内的所有线程可见的,而对其他块的线程则不可见,其访问速度与Registers大致相同,存储空间比Registers要大得多。最外层的是人们常说的GPU显存,包括Global Memory(全局存储器)、Constant Memory(常量存储器)和Texture Memory(纹理存储器),所有线程都可以进行读写访问,同时也承担了与主机(host)进行数据交互的任务。其中常量存储器与纹理存储器是只读存储器。局部存储器是从全局存储器中开辟的一块私有存储器,其读取速度与全局存储器一致,约400-600个时钟周期。显然用局部存储器、全局存储器存放数据,将增加程序的访存开销,因此要尽可能地使用寄存器和共享存储器,以减少访问延迟,提高程序执行性能。
4 CPU/GPU异构平台并行优化
通过上述分析,CPU/GPU异构系统的并行优化可以从计算任务划分、数据通信以及访存这几方面考虑,这里讨论的前提是计算量较大的情况,如果计算量非常小,整个程序在CPU上可以在几十毫秒内完成的应用,拿到GPU上执行是毫无意义的,因为在GPU上的执行时间无法隐藏访存和数据传输的延迟,所需要的时间反而会比CPU更长。下面从两个层面讨论:一是CPU/GPU任务均衡划分,二是GPU任务线程划分。
4.1 CPU/GPU任务均衡划分
由于GPU擅长于计算密集型和大量数据并行的计算,CPU适合于逻辑性较强的事务处理,因此在CUP/GPU异构系统中进行大规模科学计算时,应划分出程序的串行部分和并行部分,耦合度高的串行部分由CPU处理,而大规模可并行计算部分则移植到GPU上执行。如何均衡划分CUP、GPU任务,才能够使得CPU和GPU的负载均衡呢,这里提出了两种用于指导任务划分的方法,下面分别阐述。
4.1.1 比例划分法
由于CPU、GPU上计算任务的执行时间随着问题规模的变换而变化,任务的执行时间在执行前无法准确得知,因此很难运用静态编译对任务进行划分,这里采用Profiling方法[5],初步设定一组或者几组任务划分,实测该任务划分下CPU、GPU的运行时间,然后用测得的数据求出该任务划分的关键参数,再用解得的关键参数指导任务划分。
首先假设(H0,D0)是CPU/GPU的一个任务划分,满足H0+D0=1,在某一任务划分下,由Profiling实测的CPU上的任务执行时间为Tcpu,GPU上的任务执行时间为Tg p u。
设CPU的任务执行速率为Vcpu,GPU的任务执行速率为Vg p u,则(这样求得的速率是不精确的,但由于目的是使CPU和GPU负载平衡,并不要求绝对精确,只要能指导任务划分即达到目的)。
如图5所示,假设(H,D)为CPU和GPU的最佳任务划分,则不应出现CPU和GPU相互等待的情况,也就是CPU上的计算时间应该等于GPU上的计算时间。这里简化处理模型,将流传输时间合并到GPU中。于是得到下面的等式:
这样当再次计算时,就可以用求得的(H,D)来指导任务划分。如果希望得到更加精确的任务划分,可以进行多组任务划分测试,求出CPU、GPU任务执行的平均速率,然后取多组平均值,得出最佳划分。
4.1.2 检索法
当有大量迭代的应用时,比如上千次的迭代,可以运用检索法。通过前几次迭代的任务划分,找出最佳任务划分,然后用这个最佳任务划分指导余下迭代的任务划分。检索算法的基本思想是:预设一个时间阀值m,当CPU、GPU的运行时间差超过m时,重新进行CPU、GPU任务划分,而小于、等于m时,则是可以接受的,说明CPU和GPU处在负载平衡的范围内。比如,采用二分检索的方法,用Task记录CPU和GPU每次任务的增减量,每检索一次,Task的值就进行一次折半,二分检索法的复杂度为。如图6(a)所示给出了算法的伪指令,为了更直观些,画出了算法的流程图,如图6(b)所示。
为了更清晰地说明使用二分检索法查找最佳任务划分的过程,下面举例说明。如图7所示,首先把CPU、GPU的任务划折半,运行后其时间差超过预定的阀值,即Tcpu-Tgpu>m,这种情况下,需要将CPU的任务折半,并将从CPU任务中折半出来的1/4任务加到GPU任务中,得到CPU、GPU的第二次任务划分,再一次运行则结果为Tcpu-Tgpu<-m,现在又要将刚刚加到GPU的1/4任务再折半,并将这1/8的任务又重新加到CPU中,于是得到第三次的CPU、GPU任务划分,再次运行…,直到当运行的时间差满足Tcpu-Tgpu
在该算法中,算法迭代的次数与Task和m的取值有关。Task取值越小,迭代次数就越少;而m的值越小,则算法迭代次数就越多,负载平衡更精确。
总之,任务均衡划分的目的是通过平衡CPU和GPU的负载,来提高计算资源利用率,以尽快完成计算任务。
4.2 GPU任务线程划分
以矩阵乘为例,设A是M×K阶矩阵,B是K×N阶矩阵,将矩阵A乘以矩阵B的结果存放到M×N阶矩阵C中。相乘的CPU程序如下:
从程序可以看出,C(i,j)=sum{A(i,k)*B(k,j)}0<=k<_wa;耦合程度很小,如果移植到GPU上让线程并行执行,将会获得较高的运算速度,如何实现GPU线程并行执行呢?这里将GPU计算任务进行区块划分,让每个线程负责一个区块的计算,具体可通过下面两种方法实现。
4.2.1 一级粗块划分
让每一个线程计算一个C(i,j),那么估算一下,应该需要height_c*width_c,也就是ha*wb个线程。采用一级粗块划分,将矩阵按一个大方格Grid划分,如果一个方格Grid大小是16*16,那么矩阵80*48的可以表示为5(*16)*3(*16),即16*16个大格子(block),每一个格子内,自然就是(height_c/16)*(width_c/16)个线程了(本例中是5*3个线程)。编写内核代码如下:
为测试CPU、GPU运算速度,编写一个面向Host的接口函数和调用的主函数,Host的接口函数如图8所示,图9仅列出主函数的片段代码。
在调用的主函数中,随机产生了一组单精度浮点数据,通过如图9所示的程序代码测试CPU和GPU的运行时间,结果如图10所示。
可见CPU的运行时间远远大于GPU的运行时间,Tcpu/Tgpu约为16,这里测试矩阵大小为A(80*60)、B(60*48),如果矩阵维数为512*512或更大,则任务运行时间比更显著。
4.2.2 二级细度划分
在一级粗度划分算法中,矩阵A的行被多次从显存中读取,矩阵B的列也是如此,为了避免重复读取,提高指令流和访存效率,避免反复读取,考虑调整每个线程处理数据的数量、尽可能使用共享存储器和寄存器,因此另一种设想是不让每一个线程完整计算一个C(i,j),而是对C(i,j)=sum{A(i,k)*B(k,j)}进行二级细度划分:
就是把矩阵分成n*n个大的子块,然后每一个block负责计算子块i和子块j的子乘积,计算完毕后加起来即可。同时将计算子块数据加载到共享显存中,这样子块乘积计算就不用到外部存取了。内核程序如下:
同样通过图8所示的Host接口函数和图9所示的主函数调用,测试CPU和GPU的运行时间,测试结果如图11所示,比较GPU两次的运行结果,二级细度划分比一级粗块划分的运行时间缩短了近20ms,需要说明的是,这里并不是单靠对线程细度划分来获得GPU加速的,而是结合动态分配共享存储器、避免使用局部存储器、尽可能减少对全局存储器的访问得到的。
5 结语
优化的最终目的是为了在最短的时间内完成计算任务,CPU/GPU异构平台的并行优化不但要考虑任务的划分、访存延迟,还需要同时考虑指令流吞吐量、数据通信等方面的问题。CPU/GPU协同并行计算属于新兴研究领域,高效协同的并行计算技术,文中提出的这些优化策略在优化过程中可以结合使用,可达到更好的优化效果,具体这些策略如何使用应该根据应用任务的特性,具体问题具体分析。
摘要:CPU/GPU异构系统具有很大的发展潜力,深入研究CPU/GPU异构平台的并行优化,可实现系统整体计算能力的最大化。通过对CPU/GPU任务划分的优化来平衡CPU和GPU的负载,可提高计算资源的利用率,缩短计算任务的执行时间;通过对GPU线程划分的优化,可使GPU获得更高的速度,从而提高系统整体性能。
关键词:异构,并行,优化,任务划分
参考文献
[1]张舒,褚艳利,赵开勇,等.GPU高性能运算之CUDA.北京:中国水利水电出版社,2009.
[2]卢风顺,宋君强,银福康,等.GPU/CPU协同并行计算研究综述.计算机科学,2011.
[3]冯颖,袁庆华,沈健炜.基于CPU+GPU异构计算的编程方法研究.通信技术,2011,44:141-143.
[4]赵进,周海芳.基于GPU的遥感图像配准并行程序设计与存储优化.计算机研究与发展,2012,S1.
并行优化 篇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
1 二号线东延伸工程景观水池段优化设计
由于二号线东延伸工程规划线路在浦东国际机场两景观水池中央预留的24 m宽走廊中与磁浮线路并行布置,在不对现有机场景观水池、磁浮维修道路及附属管沟进行改造的情况下,二号线东延伸工程线路用地宽度仅为约6.9 m,无法满足轨道交通高架线路设计要求。为此,需要结合现状情况,对二号线东延伸工程线路进行优化设计,才能既满足高速磁浮运营安全和维护要求,也满足轨道交通高架线路的设计要求。
1.1 二号线东延伸工程与磁浮线最小线间距的确定
为了满足磁浮线路维护和列车故障条件下逃生救援需要,在二号线东延伸工程和磁浮线路之间须设置专用通道用于维护和救援。由于机场景观水池两侧是连通的,改造景观水池的工程量较大,且对区域景观造成影响。为此,二号线东延伸工程线路优化设计的主要目标是分析磁浮运行维护和逃生救援两种工况,确定合理的维修、救援道路宽度,从而确定二号线东延伸工程线路和磁浮线路之间最小线间距。
1.1.1 磁浮线路维护工况
对于维修工况,轨道交通线路和磁浮线路相邻轨道之间最小线间距可通过下式进行计算:
式中:A为轨道交通建筑限界;B为维修车辆需要的最小道路宽度;C磁浮线路建筑限界。
则:L1=1.865 m+4.0 m+2.85 m=8.715 m
1.1.2 逃生救援工况
逃生通道宽度可按照文献[2]中公式计算:
按磁浮列车8节编组考虑,根据文献[1]可得Q1=794人;Q2=10人;按文献[2]中1m宽通道、双向混行每小时4000人的规定,在满足事故疏散时间要求下,逃生通道的宽度经计算不小于2.70 m。参照公式(1),取B为逃生通道的最小宽度2.70m,则轨道交通线路和磁浮线路相邻轨道之间最小线间距:
L2=1.865 m+2.70 m+2.85 m=7.415 m。
取L1、L2的最大值为最小线间距,即二号线东延伸工程与磁浮线最小线间距为8.715 m。
1.2 二号线东延伸工程线路设计优化
为了满足二号线东延伸工程与磁浮线最小线间距8.715 m的要求,在不改造现有浦东国际机场景观水池的情况下,按照常规高架桥梁布置方案,现有场地宽度将无法满足设计要求。为此,通过分析研究,二号线东延伸工程线路采取以下优化措施:
1)左右线两侧双接触网柱布置方案优化为左右线中间单接触网柱布置方案;
2)强、弱电电缆敷设布置箱梁结构下方;
3)二号线东延伸工程线路采用低置结构,桥墩设置在磁浮轨道梁跨中位置,基础形式采用钻孔灌注桩。
采取上述优化措施后,二号线东延伸工程和磁浮线路断面布置方案图1所示。
2 二号线东延伸工程对磁浮线路影响分析
2.1 磁浮线保护要求
磁浮线轨道结构的附加变形控制要求如表1。
由表1知,由于磁浮线路的沉降和偏移量控制指标要求较高,因此需对二号线东延伸工程景观水池段施工期间及工后沉降对磁浮线路的影响需要进行分析和评估,以确保磁浮的安全运营。
2.2 评估分析内容
二号线东延伸工程景观水池段桩基施工完成后,由建筑物荷载产生的沉降会引起周边土体的附加变形,进而引起磁浮线路的附加变形。同时由于二号线东延伸工程的桩基桩长与磁浮线比较接近,其持力层均为⑦2层,因此二号线桩基沉降对磁浮线的影响需要首先进行评估分析。
其次,由于上部土层比较软弱,基坑开挖对周边环境的影响是一个不容忽视的问题,虽然二号线东延伸工程承台的挖深不大,但其距磁浮线较近,承台基坑开挖对磁浮线路的影响也需要进行评估分析。
第三,钻孔灌注桩施工虽然挤土效应比较小,但由于其存在塌孔的可能性,且施工过程中,孔壁附近土体会产生一定的位移,因此灌注桩施工也是对磁浮线安全性造成威胁的一个潜在因素,同样需要进行计算分析。
综上分析,二号线东延伸工程对磁浮影响评估分析的内容主要有三个方面:1)桩基沉降对磁浮线路影响;2)承台基坑开挖对磁浮线路影响;3)灌注桩施工对磁浮线路影响。
2.3 桩基沉降对磁浮线影响分析计算模型
综合比较桩长和荷载后,选取二号线东延伸工程最不利的P119、P120墩及相邻的磁浮线P1172墩进行分析计算,分析采用的是通用有限元软件ABAQUS,P119、P120墩与P1172墩的相互关系如图2所示。计算模型中地基土尺寸为70 m×50 m,深度为90 m,约束模型底边的竖向位移和侧面的水平位移。计算土体的参数根据压缩模量计算选取,承台与桩的弹性模量为3×104 MPa。土体选用Mohr-Coulomb弹塑性本构模型,承台及桩选用线弹性本构模型。考虑到沉降较小,故桩与土之间节点相耦合,即位移协调。承台、桩基与土体都采用实体模型,模型共25 675个单元、28 026个节点。整体模型图见图3,桩基与承台模型图见图4。
2.4 计算结果
二号线东延伸工程机场景观水池段桩基沉降、基坑开挖、灌注桩施工对磁浮线路影响分析有限元计算结果列于表2。
按最不利情况考虑,并叠加三者的影响,二号线东延伸工程引起磁浮线支墩的最大沉降为0.56 mm,最大水平位移为0.47 mm,均满足磁浮线路安全保护要求。理论分析计算结果表明,二号线东延伸工程机场景观水池磁浮并行段的工程方案是合理的。
3 磁浮线路变形监测
对磁浮轨道结构变形进行全过程监测,通过监测数据分析以进一步验证工程方案的合理性和数值分析方法的正确性,从而确保磁浮线路的安全运行是非常必要的。以磁浮线路支墩为一个观测单元,根据监测数据,景观水池并行段的磁浮轨道支墩沉降历时曲线、同一承台左右支墩差异沉降历时曲线、同一承台前后支墩差异沉降历时曲线、承台水平位移历时曲线分别如图5~图8所示。
从图5~图8可以看出,二号线东延伸工程机场景观水池段磁浮线路轨道结构的各变形控制指标的监测值均满足要求,各参数的历时曲线波动幅度也不大,监测数据表明二号线东延伸工程浦东国际机场景观水池段工程方案的是合理的,其对磁浮线路的影响也是可控的。
4 结语
由于高速磁浮线路变形控制指标非常严格,为确保磁浮线路的安全运行,对进入磁浮安全保护区的工程项目方案进行研究和优化,并就临近工程实施对磁浮线路的影响进行理论分析和全过程监测是非常必要的。目前,二号线东延伸工程已经投入试运营,其施工和运行期间,磁浮线路的变形监测值没有出现超标现象,也没有影响磁浮的安全运行。理论和实践证明,二号线东延伸工程机场景观水池磁浮并行段的工程方案是合理的,相应理论评估方法也是正确的。
摘要:近年来,进入磁浮安全保护区的工程项目越来越多。由于高速磁浮系统运行对线路轨道变形的要求较高,对临近高速磁浮线路后期实施的工程项目方案进行优选和评估分析,从而保障磁浮的安全运营具有重要意义。结合上海轨道交通二号线东延伸工程,对其浦东国际机场景观水池磁浮并行段工程方案进行了优化研究,并采用数值分析方法就轨道交通实施对磁浮线路影响进行了评估分析,最后通过实测数据验证了前期工程方案和评估方法的合理性。
关键词:轨道交通,高速磁浮,并行,方案优化,评估分析
参考文献
[1] 吴祥明.磁浮列车.上海:上海科学技术出版社,2003