Beowulf 中文HOWTO(2)
2008-02-23 07:23:03来源:互联网 阅读 ()
2.3 分类
Beowulf系统已经由各种不同部份组成,为了效能的考量,一些非商品化周边设备(只由一家制造商生产)已经问世,为了易於解说和讨论各种不同类型的系统,我们提出下列简单的分类方式:
第一类BEOWULF:
这类机器完全由商品化、直接从市面上贩售的零件所组成,我们用电脑购买者(Computer Shopper)认定标准来定义商品化、直接从市面上贩售的零件(电脑购买者是一种每月出版的杂志,有一英□厚,内容介绍各种电脑系统和零件目录),认定标准如下:
A 第一类Beowulf是一种机器,它的组成零件至少必须在三种国际性或全球性商业目录上找到。
第一类系统的好处有:
硬体设备有很多来源(价格低、容易维护)
不会依赖特定一家硬体供应商
Linux支援的驱动程式
通常有一标准基础(如SCSI、Ethernet等)
第一类系统的缺点有:
需要第二类系统的硬体才有较好的效能
第二类BEOWULF
任何没有通过电脑购买者认定标准的机器称之。这并不一定是件坏事,它只是分类的一种。
第二类系统的好处有:
效能相当地好
第二类系统的缺点有 :
驱动程式的供应经常更换
依赖特定一家硬体供应商
可能比第一类系统昂贵
没有一种类别比其他的优秀,全凭使用者的需求和预算,这种分类纯粹希望让接下来的讨论更加简明,後头的系统设计章节将会帮助你决定哪一种系统最符合你的要求。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3. 架构简介
3.1 它长什麽样?
我认为描述Beowulf超级电脑架构最合适的方法是举一个真实的□例,并且是大多数系统管理者所熟悉的。那就是一个UNIX主机实验室,内有一台伺服端和一群用户端,更精准地说,我会举位在南昆士兰大学理学院DEC Alpha大学部计算机实验室为例,伺服器被称为 beldin 用户端机器分别称为 scilab01, scilab02, scilab03, 一直到 scilab20. 每台用户端内部都安装Digital Unix 4.0作业系统,但是使用者档案空间(/home)和 /usr/local 都是透过NFS(网路档案系统)从伺服端上获得,每个用户端都可以进入伺服端,并且所有其他的用户端都会记载在 /etc/hosts.equiv 档案内,因此每个用户端都可以用远端操作壳(rsh)。伺服端也是整个实验室的NIS伺服器,因此所有的机器都有相同的帐号资料,某人可以坐在scilab02的控制台前登入,就像他登入伺服端或scilab15. 一样有相同的环境,所有的用户端有相同环境的原因在於所有的机器都安装和规划相同的作业系统,并且使用者的/home 和 /usr/local 区域实体上都位在伺服端上,可以透过NFS进入。NIS和NFS更进一步的讯息请参阅 NIS 和 NFS HOWTOs.
3.2 如何有效利用其他节点?
现在我们对系统架构有些概念,让我们看看如何使用计算机实验室内可供使用的CPU。任何人可以登入任何一台机器,并且在每个人自己的目录下执行程式,他们也可以透过远端操作壳在其他电脑上启动(spawn)相同的程式。举例来说,假设我们要计算1到10内整数平方根的总和,我们写了个简单的程式名为 sigmasqrt (请参见 source code) ,为了得到结果,我们执行以下的步骤
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10
22.468278
real 0m0.029s
user 0m0.001s
sys 0m0.024s
time 指令可以告诉我们执行程式所花的时间(实际经过的时间),我们可以看到,这个例子只花了很短的时间(0.029秒),假如我想计算1到1,000,000,000内整数的平方根总和,让我们试试看,重新计算所花的时间
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 1000000000
21081851083600.559000
real 16m45.937s
user 16m43.527s
sys 0m0.108s
这次执行程式所花的时间非常久,一个明显的问题就是我们如何加快执行的时间?我们该如何改变执行程式的方式以减少执行所花的时间?最明显的答案就是将整个工作分成许多小工作,并且同时在所有的电脑上执行,我们可以将加法的工作分成二十份,每个部份做一段开根号的工作,并加起来,当所有的节点完成计算,并传回来,将二十个数加起来就得到最後的答案。在执行程式之前,我们需要做个标有记号的输送管,可以让所有的行程写下它们的结果。
[jacek@beldin sigmasqrt]$ mkfifo output
[jacek@beldin sigmasqrt]$ ./prun.sh & time cat output | ./sum
[1] 5085
21081851083600.941000
[1] Done ./prun.sh
real 0m58.539s
user 0m0.061s
sys 0m0.206s
这回我们花了大约58.5秒,这时间是从开始到所有的节点都完成计算,并将结果写到输送管,这个时间并不包括最後将二十个数加起来,不过那个时间非常地短,可以忽略不计。我们可以看到平行计算可以有效地改进执行程式,事实上这个平行工作整整快了约17倍,相对於使用了二十倍CPU数目,效能是相当合理的。上述□例的目的是要展示同时平行程式最简单的方法,实际操作上,如此简单的□例是很少见的,其他技巧(PVM和MPI APIs)经常用来达成平行的工作。
3.3 Beowulf如何与COW不同?
上述的计算机实验室算是一个工作站群(Cluster of Workstations,COW),那麽Beowulf有何不同?它和COW有何差异?实际上二者没多大差别,不过Beowulf倒是有些不同的特色。第一、大多数的Beowulf群的用户端没有键盘、滑鼠、显示卡和萤幕,所有到用户端的方式都是从伺服端、特定控制端或是序列控制端经过远端连接登入,因为对用户端而言,从电脑群外登入电脑或是从外头的电脑直接登入用户端是没有必要的,用户端通常是使用私有的IP位址,例如从10.0.0.0到10.0.0.8或是192.168.0.0到192.168.0.16(参见RFC 1918 http://www.alternic.net/rfcs/1900/rfc1918.txt.html). 通常唯一要用到第二张网路卡对外连接的机器是伺服端,使用这套电脑群最常见的方法是直接进入伺服端,或是从个人工作站使用telnet或远端登入伺服端。一但进入伺服端,使用者可以编辑和编译他们的程式,也可以在电脑群内的用户端上启动行程。大多数情形的COW是在晚上用来执行平行计算,和在人们不使用工作站的周末时间,使用□置的CPU。而通常Beowulf专用来平行计算,并且对这些平行计算做最佳化,当利用市售电脑零组件和免费软体建构的Beowulf也提供较好的价格效能比,并且Beowulf给人一种单一系统的印象,很容易让使用者将Beowulf群看作是一台计算用工作站。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
