科技时代新浪首页 > 科技时代 > 滚动新闻 > 正文

计算机群集技术概述 四


http://www.sina.com.cn 2006年09月11日 18:49 ChinaByte

  二、并行应用程序技术

  应用程序决定了计算过程中的指令流和数据流,所以应用程序能否并行化是能否利用并行计算机的硬件架构的关键所在。以下是一些对并行应用程序常用技术的简单介绍。

  ■ 数据和功能并行化:

  这时将计算任务分配到多个处理器上执行的最基本方法。数据并行化是指将需要处理的数据划分到不同的处理器上,然后所有处理器执行相同的指令流来处理各自的数据。设想一下一个求1000个数的正弦函数的程序,如果您有1000个处理器,您可以为每个处理器分配一个计算正弦函数的任务,然后让1000个处理器同时开始执行。这是一种SIMD的实现技术。功能并行化是指将应用程序中的不同功能分配到不同的处理器/内存上去完成,是一种MIMD的实现方法。

  ■ 循环级并行化:

  对于大多数科学计算任务而言,大部分的时间花费在循环计算之中。在共享内存架构的系统中,"并行编译器"可以检测到循环中互无关联的计算步骤并将它们分配给不同的处理器去执行。

  ■ 数组语句(Array Syntax):

  SIMD的另一种实现方法。在程序设计语言中包含对数组成员进行一次性赋值和计算的语句。在并行系统上,并行编译器会自动对这些赋值和计算进行并行化处理。

  ■ 信息传递(Message passing):

  在分布式内存架构上,每个处理器只能访问自己的内存。当处理器之间需要进行数据交换时,信息传递是目前最为广泛使用的技术。从程序员的角度来看,这种技术就是一系列发送与接收调用的组合。当应用程序变得比较庞大而复杂时,这种技术的使用会变得非常复杂和容易出错,比如一个处理器等待的消息永远无法收到等等。但是一旦程序设计成功,这种技术在分布式内存系统和共享内存系统上都能够获得很好的性能。

  三、常用的并行计算工具软件

  并行计算工具软件是指那些帮助程序设计人员更好或更简单地利用并行架构的工具。下面我们介绍最常用的几种。

  ■ 编译器(Compiler):

  编译器在并行计算中的作用分为两个层面,一是像在串行系统上一样生成优化的代码序列,二是将可以并行执行的部分进行并行化处理。尽管编写出能够把传统的、串行结构的应用程序编译为完美的并行代码的编译器是几乎不可能的任务,但计算机科学家们的不懈努力正在使编写并行程序越来越容易。目前很多的编译器可以借助程序员写在程序中的简单编译指导生成高质量的并行代码,如数组语句的处理等。在目前的多数共享内存架构的系统上,编译器已经可以进行循环级的并行化。

  ■ 调试器(Debugger):

  调试器可以说是程序设计的必备工具。在并行计算系统中,特别是分布式内存架构的系统中,一个调试器通常面临以下的挑战:必须能够反映出信息传递的过程和状态;在查看变量时,必须能够查看每个处理器上的同名变量的状态;由于在科学计算中大数组的广泛应用,必须能够以直观的方式表示出数组成员的值,等等等等。

  ■ 性能监测/分析工具:

  由于并行计算所带来的程序并行执行的复杂性和不可预见性,您会需要一个功能强大的性能监测/分析工具来帮助您完成分析并行化程度、信息传递特性以及判定系统瓶颈等工作,以便使并行系统投入产能应用时能够有最好的性能状态。

  ■ 并行

化工具/API:

  并行化工具是指将串行源代码转化为并行源代码的工具,通常只需要程序员在程序中插入简单的宏,就可以完成向并行源代码的转化。并行API主要是指实现了完整信息传递功能的软件包,使得程序员指需要进行简单的调用就可以实现信息传递,而无须自己实现其中的每一个细节。

  综上所述,一个成功的并行计算系统的核心是硬件架构、应用程序和辅助软件。目前广为应用的硬件架构是共享内存和分布式内存,前者可以简化程序设计但成本高,可扩展性差;后者成本低,扩展性好但会导致程序设计复杂化。应用程序在设计上会因为硬件架构的不同而有所不同,其中信息传递技术虽然设计复杂但在两种硬件架构上都能够获得高性能。恰当的辅助工具不仅使程序设计更为简单,而且实际上,在大规模的应用系统中,没有这些工具几乎不可能实现稳定的、高性能的并行计算。

  Linux HPC Cluster

  HPC(高性能计算)虽然已经有很多年的历史了,但是其普及程度一直不是很高。主要原因不外乎以下几点:

  价格昂贵。相对较小的生产规模使得相关的部件成本极高,价格常常使用户望而却步。

  不容易扩展。由于没有使用市面上通用的模块,HPC系统的扩展要么不容易在技术上实现,要么成本难以令用户接受。

  对使用环境要求苛刻。过去,一套大的HPC系统可能需要像篮球场那么大的机房去安装,可以想见配套的建筑、电源、布线和散热措施的准备会有多么复杂和昂贵。

  近年来,随着计算机技术的进步,一种新的HPC系统正迅速崛起,这就是使用运行Linux

操作系统的Intel平台的计算机来构建HPC Cluster。这是一种分布式内存的HPC架构,针对上面提出的三个问题,它能够提供如下的好处:

  由于使用Linux操作系统和通用的Intel平台,集群中的各个节点(计算机)的价格将会相对低廉;

  由于使用通用的硬件平台和标准的网络组件,集群的扩展容易实现而且价格低廉;

  不难看出,Linux HPC最大的优点是廉价!这一特点使得更多的"计算饥渴"的用户可以选择使用HPC系统。作为HPC技术最先进的公司,几年前IBM就已经帮助包括壳牌石油在内的许多客户建立了1000节点以上的Linux HPC系统,这些系统至今仍然在全世界最快速的计算机系统中占据着一席之地。

  一个好的Linux HPC系统完全不会在任何方面逊色于其它的分布式内存HPC系统,但问题是想要构建一个好的Linux HPC系统事实上是很难的。请考虑以下这些问题:

  您想要一个廉价的Linux HPC系统。您应该购买什么样的计算机来构成这个系统才能避免在实施和使用中的问题?

  您有64台Intel平台的计算机来运行Linux系统。为了把它们组建成为一个HPC系统,您还需要购买哪些硬件设备?

  为了放置这些硬件设备,您需要多少个标准机架和什么样的机房来安装?

  为了将新的HPC系统整合到您的网络环境中,您需要多少个额外的IP地址?您应该怎样分配它们?

  为了将新的HPC系统整合到您的网络环境中,您需要多少根网线?如果数目很多的话,您如何保证在安装的时候不会弄错?

  您打算怎么为这些计算机安装系统?如果系统崩溃了,您又如何保证在最短的时间里让它们恢复运作?

  您的应用程序打算使用什么并行API开发?

  您打算使用什么样的程序调度机制和哪一个调度器?

  您如何做到像管理一台计算机一样管理这个HPC Cluster?

  负载平衡技术

爱问(iAsk.com)



论坛】【收藏此页】【 】【多种方式看新闻】【下载点点通】【打印】【关闭




科技时代意见反馈留言板 电话:010-82628888-5595   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2006 SINA Inc. All Rights Reserved

新浪公司 版权所有