| 并行算法与设计 |
|
| 作者:佚名 文章来源:本站原创 点击数: 更新时间:2006-1-16 |
|
|
并行程序设计方法的特点:
并行程序设计方法不同于顺序程序设计方法,主要在于对问题采取何种看法:顺序程序设计方法把事物的变化发展看成是单线程的,任何两种事物之间必然存在因果关系,从而把一系列统一事物看成是不可分割的整体。后来的结构程序设计特别是对象式程序设计把一个复杂的事物分解成多个简单的事物,或者把一个系统看成是由多个相互联系的实体构成的。应该说,这里在对事物的认识上取得了突破性的进展,但也是从事物的静态结构上来看的,并未从行为上来分解。从行为上来看,它们仍然被认为或者是一致的,或者是先后相继的,相互之间不存在有并发干扰现象,更不存在可同时发生的相互作用的行为。并行程序设计方法的一个最基本的观点,就是把一个事物的行为看成是多个事物互相作用的结果。这是一个观念上的根本转变,根据这个观点,并行程序设计方法的核心内容就是并行划分与算法映射。其理论基础是并行计算模型。并行计算模型决定了并行语义,并行语义决定了可并行执行的准则,从而决定了并行划分的原则。
并行算法结构:
要研究并行程序设计,首先就要讨论并行算法的结构,这涉及到对并行算法的理解、并行程序设计方法、并行算法与并行系统结构匹配等问题。所谓并行算法结构,就是构成并行算法的基本组成部分与属性及其互相之间的关系。一般来讲,一个并行算法结构由以下几部分组成:(1)划分模式,即并行划分类型与并行模块;(2)合作模式,即合作方式与计算图;(3)映射(分配)格局;(4)通信模式;(5)运行模式。一个并行算法的结构既是该算法的骨架,也是该算法的精髓,这些方面确定了,这个算法也就基本上确定了。
并行程序设计的特殊困难:
(i).并行程序设计和顺序程序设计的一个根本不同之处就是要把问题看成是由多个可并行求解的子问题组成,并行分解是并行程序设计的第一步,而要进行并行分解并不容易,需要经过复杂的计算与分析,这就使并行程序设计显得更加困难。
(ii).一般来说,不管什么程序都有改变程序行为的手段,可称之为交互作用。并行程序除了具有顺序程序、并发程序的交互作用以外,还有动态调度与映射机制等等都会影响程序的行为,并行程序的交互作用途径很多,除了在存储单元内容的修改以外,进程执行的时间(时序与定时)、空间(处理机分配、站点分配)、控制流(改变执行路径)、执行速度以及相互关系的改变都可能会引起程序行为的改变。总而言之,影响并行程序行为的因素很多,而且部分因素之间也有互相影响,情况非常复杂。这样复杂的工作,光凭程序员的直觉与经验是难以保证可靠性的,必须要有一种理论和并行计算模型来指导。
(iii).关于算法结构与系统结构适配性问题,也是并行程序设计的一个重要问题。不但关系着程序执行的性能问题,甚至关系到程序能否在所指定的系统上执行的问题。算法映射就是为了解决这类问题。
(iv).关于进程调度问题,它本来属于操作系统的问题,但当前有些语言,需要用户来负责,这也增加了程序员开发程序的难度。
(v).关于自治合作,这是并行程序可靠性的一个重要问题,遗憾的是到目前为止这个问题研究得还很不够,一般只考虑同步约束使之顺序化,实际上这个问题的一般提法应是进程之间的合作协议。这是并行程序设计的首要问题,也是非常困难的问题。
并行程序设计的可靠性问题要比顺序程序的可靠性问题的内涵丰富得多复杂得多。例如,并行程序的安全性,除部分正确性以外,还有死锁问题,并行程序的活跃性,不限定是停机问题,而是一般的可达到性问题。在并行程序中,所谓安全性,是指不应当出现的状态,在任何时候都不会出现。所谓活跃性问题,是指应当出现的状态终究会出现。在并行设计理论中,除安全性、活跃性问题以外,还有公平性的问题,这更是顺序程序所没有的。
总而言之,并行计算与传统的计算概念是根本不同的,必须从最基础的理论开始,创建一个新的计算理论体系。
并行程序设计的基本原则:
(1).需要并行计算理论作指导 并行程序的复杂性不是人的直接所能控制的,即使是手工设计,也要有理论作指导。一般需要两类模型,一是并行计算模型,另一个是程序设计模型。
(2).需要科学的问题定义方法 问题定义的方法也就是建模方法,通常有两类建模方法,一类是基于数学模型的方法,例如:函数、微分方程、代数方程、图论、自动机等等。通常的科学与工程问题都是用这种方法来建模。另一类是面向系统行为的建模方法,开发或利用某种形式模型对系统的行为进行模拟。这类问题本身就是一个系统,又无法用现成的数学模型来描述,于是就要开发新的形式模型来模拟该系统的行为,从而可将问题的求解分析转化成对该模型的求解与分析。
(3).应用抽象数据类型及其相关分析理论,着重研究并行分解与可靠并行软件设计方法,挖掘所有可能的各个抽象级的并行性,并使程序设计能成为软构件组装与积木化集成的过程。
(4).应用算法结构与算法映射理论,解决好算法结构与系统结构的适配以及处理机分配与进程调度问题。
(5).要有一个具有可控参数的性能评估模型,这种模型应当符合实际情况的本质特点,并且参数应当是可调控的。
(6).以可靠的并行软件实际方法学为指导,研究开发综合的并行程序设计环境,它的主要目标是:辅助并行程序设计,性能监控,人-机交互优化以及开发过程的计划与管理。
并行算发展望
从总体上看,并行技术在几十中已经取得了很多重要进展,但很多方面还处于完善和探索阶段,并行处理技术作为计算机科学的一个重要方向,其应用前景将是非常广阔的,它的发展还需要大量科研工作者的共同努力,来促进并行技术的进一步普及化,实用化。
下面列举两个并行算法在应用领域中的例子
1.生物信息处理并行算法的研究
由于生物信息数据的规模极其巨大,因此国内外都开展了生物信息处理算法并行化方向的研究。主要有NCBI的BLAST机群系统版本、PHRAP程序的SMP机器并行版本,以及在硬件基础上并行化工作,IBM还研制了专门用于基因组数据处理的超级计算机。
NCBI的BLAST系统用于提供网络序列检索服务,在任何时候可能会有大量的用户提交序列检索的请求,NCBI的机群系统版本主要是采用负载均衡系统实现对多用户请求任务在机群的多个节点间的分配,这种系统可以大大提高BLAST检索网站的任务吞吐率。PHRAP程序主要用于大规模的序列拼接过程中,PHRAP程序在数据量比较大的情况下非常耗时间,PHRAP程序的SMP机器并行版本主要是利用多线程技术加速其中具有并行性的部分,获得更好的时间效率。比如SPSOFT(southwest parallel software http://www.spsoft.com),它实现了在普通计算机上提供高性能和高处理量的生物信息软件。其最新提供支持linux下的并行化的Phrap, SWAT, CrossMatch,并且支持SP和PowerPC上的IBM AIX 系统。并行的Phrap在单cpu上能快一倍,并且随着cpu的增多性能会更好。Cross_Match在单cpu上能快30%,在4个cpu机器上快3倍。
国外还开展了特殊生物信息处理中算法的研究以及在硬件基础上的并行化方向的研究,主要是研究生物信息学中的一些关键的算法,研究其中的可并行性,然后将其固化到硬件芯片中,从而提高整个计算系统的性能。比如DeCypher 生物信息处理加速器,它提供了可配置计算的技术(configurable computing See http://www.timelogic.com ),它的目的即是通过添加硬件来达到加速。可配置系统的特点是通过软件来控制硬件,使其具有自动从连线的能力,形成新的功能。从而复杂算法的内循环可以在一个时钟周期中完成,而通常则需要上千的时钟执行。可配置计算机利用FPGA (Field Programmable Gate Array)集成电路,集成电路的逻辑功能是动态的安排。集成电路用软件动态的控制,为每一个计算单元分配尽量少的资源,最大化地提高计算的并行度和速度。DeCypher系统包括一个或多个加速的计算管道,由作业调度软件的统一管理。每一个计算管道集成了多个cpu,可扩展的FPGA加速阵列以及本地RAM和磁盘缓存。标准的DeCypher服务可达到每秒6万亿次的Smith-Waterman letter-pair比对以及每秒250万亿次的letter-pair比对。
IBM宣布将耗资1亿美元研制一套代号为"蓝色基因"(Blue Gene)的超级计算机,通过对各个蛋白质分子聚合到一起的多种力量加以测量,来研究人类蛋白质分子的折叠方式。IBM预计"蓝色基因"将拥有100万个处理器,计算能力达到1千万亿次浮点结果,比目前世界上最快的IBM 计算机的12.3万亿次快了近百倍。据透露,"蓝色基因"将采用一种称为SMASH的全新体系结构,可以在简化指令的基础上实现800万个线程并行处理的能力,并能做到自稳定、自适应和自修复。整套系统由64个6英尺高的机柜互联而成,每个机柜配置8块主板、每块主板上有64个芯片、每个芯片上包含32个处理器。
在国内,中科院计算技术研究所与华大测序中心合作,基于曙光3000超级计算机系统,开发了Balst,Phrap,Smith-Waterman的并行算法,并应用于华大测序中心的数据处理流程中。
2.并行数据库与并行机群
众所周知,计算机的速度是受到芯片水平制约的,而芯片的加工不仅仅是电子工艺的问题,同时涉及到材料等各个方向的问题。在提高计算机速度的方面,计算机工作者是否无能为力了呢?
计算机工作者提出了并行的概念,从计算机体系结构的角度上提高计算机的运算速度,而不是从加快芯片速度上。并行其实是一个不难理解的概念,可以打一个比方说明,一堆砖头要搬走,可以有一个工作效率高的人做,而几个人做可能的到更快的速度。并行就是用多个处理机协同来解决一个问题,以获取更高的运算效率。事实上,现在的超大规模计算机几乎都是通过多处理机的并行实现的,克服了计算机芯片运算速度的限制,得到了比最快的芯片还要快成万上亿倍的速度。
数据库,也就是数据的存储与查询是计算机的重要应用领域,在这个领域中,并行是大有用武之地的。当前,随着需要处理的数据的规模的进一步加大,对运算速度的要求越来越高,并行数据库已经成为数据库研究的热点,特别是并行关系数据库,这是关系数据库本身的并行性决定的,因为关系代数本身的封闭性和数据独立性有着固有的并行性。
最近几年,伴随着MPP的发展,一种新的并行及分布式计算技术,计算机机群技术(Cluster-technology),引起了人们的极大关注,已成为十分活跃的研究领域。机群技术旨在把一群计算机(如工作站、微型机、大型机等)用网络以某种结构互连起来,充分利用各计算机资源,统一调度、协调处理,实现高效率并行计算。在各类机群并行计算系统中,工作站机群尤为引人注目。机群并行计算系统的I/O并行性高、可扩展性好等特点使得它能够比MPP更有效地支持并行数据库系统。目前我国很多单位已经具有大量各种类型的计算机系统(如工作站、微型机等)。只要花费很小的投资就可使用高速网络建立起各种类型的机群并行计算系统。机群并行计算系统十分符合我国的国情。
并行机群数据库的研究近年来虽然已经得到了长足的发展,但还有相当多的工作可以做,包括对海量数据的处理,并行对象关系数据库的研究,并行多媒体数据库,并行环境下的数据挖掘以及机群环境在web环境的应用等等都还是等待研究的领域,而将并行数据库系统产品化,也是开发我国具有独立知识产权系统软件的突破点之一。 |