?? beowulf-howto-3.html
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>3</title>
</head>
<body>
<table>
<tr>
<td bgColor="#FFFFFF" vAlign="top"><a href="Beowulf-HOWTO-4.html"><img alt="Next" src="next.gif" width="16" height="16"></a>
<a href="Beowulf-HOWTO-2.html"><img alt="Previous" src="prev.gif" width="16" height="16"></a> <a href="Beowulf-HOWTO.html#toc3"><img alt="Contents" src="toc.gif" width="16" height="16"></a>
<hr>
<h2><a name="s3">3. 架構(gòu)簡介</a></h2>
<p>
<p>
<h2><a name="ss3.1">3.1 它長什麼樣?</a></h2>
<p>我認(rèn)為描述Beowulf超級電腦架構(gòu)最合適的方法是舉一個(gè)真實(shí)的範(fàn)例,並且是大多數(shù)系統(tǒng)管理者所熟悉的。那就是一個(gè)UNIX主機(jī)實(shí)驗(yàn)室,內(nèi)有一臺(tái)伺服端和一群用戶端,更精準(zhǔn)地說,我會(huì)舉位在南昆士蘭大學(xué)理學(xué)院DEC
Alpha大學(xué)部計(jì)算機(jī)實(shí)驗(yàn)室為例,伺服器被稱為 <i>beldin</i>
用戶端機(jī)器分別稱為 <i>scilab01</i>, <i>scilab02</i>, <i>scilab03</i>,
一直到 <i>scilab20</i>. 每臺(tái)用戶端內(nèi)部都安裝Digital Unix 4.0作業(yè)系統(tǒng),但是使用者檔案空間(<code>/home</code>)和
<code>/usr/local</code> 都是透過NFS(網(wǎng)路檔案系統(tǒng))從伺服端上獲得,每個(gè)用戶端都可以進(jìn)入伺服端,並且所有其他的用戶端都會(huì)記載在
<code>/etc/hosts.equiv</code>
檔案內(nèi),因此每個(gè)用戶端都可以用遠(yuǎn)端操作殼(rsh)。伺服端也是整個(gè)實(shí)驗(yàn)室的NIS伺服器,因此所有的機(jī)器都有相同的帳號資料,某人可以坐在<i>scilab02</i>的控制臺(tái)前登入,就像他登入伺服端或<i>scilab15</i>.
一樣有相同的環(huán)境,所有的用戶端有相同環(huán)境的原因在於所有的機(jī)器都安裝和規(guī)劃相同的作業(yè)系統(tǒng),並且使用者的<code>/home</code>
和 <code>/usr/local</code>
區(qū)域?qū)嶓w上都位在伺服端上,可以透過NFS進(jìn)入。NIS和NFS更進(jìn)一步的訊息請參閱
<a href="http://sunsite.unc.edu/LDP/HOWTO/NIS-HOWTO.html">NIS</a> 和 <a href="http://sunsite.unc.edu/LDP/HOWTO/NFS-HOWTO.html">NFS</a>
HOWTOs.
<p>
<p>
<h2><a name="ss3.2">3.2 如何有效利用其他節(jié)點(diǎn)?</a></h2>
<p>
<p>現(xiàn)在我們對系統(tǒng)架構(gòu)有些概念,讓我們看看如何使用計(jì)算機(jī)實(shí)驗(yàn)室內(nèi)可供使用的CPU。任何人可以登入任何一臺(tái)機(jī)器,並且在每個(gè)人自己的目錄下執(zhí)行程式,他們也可以透過遠(yuǎn)端操作殼在其他電腦上啟動(dòng)(spawn)相同的程式。舉例來說,假設(shè)我們要計(jì)算1到10內(nèi)整數(shù)平方根的總和,我們寫了個(gè)簡單的程式名為
<code>sigmasqrt</code> (請參見 <a href="http://www.linux.org.tw/CLDP/Beowulf-HOWTO-6.html#sigmasqrt">source
code</a>) ,為了得到結(jié)果,我們執(zhí)行以下的步驟
<pre>[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10
22.468278
real 0m0.029s
user 0m0.001s
sys 0m0.024s
</pre>
<code>time</code>
指令可以告訴我們執(zhí)行程式所花的時(shí)間(實(shí)際經(jīng)過的時(shí)間),我們可以看到,這個(gè)例子只花了很短的時(shí)間(0.029秒),假如我想計(jì)算1到1,000,000,000內(nèi)整數(shù)的平方根總和,讓我們試試看,重新計(jì)算所花的時(shí)間
<p>
<pre>[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 1000000000
21081851083600.559000
real 16m45.937s
user 16m43.527s
sys 0m0.108s
</pre>
<p>
<p>這次執(zhí)行程式所花的時(shí)間非常久,一個(gè)明顯的問題就是我們?nèi)绾渭涌靾?zhí)行的時(shí)間?我們該如何改變執(zhí)行程式的方式以減少執(zhí)行所花的時(shí)間?最明顯的答案就是將整個(gè)工作分成許多小工作,並且同時(shí)在所有的電腦上執(zhí)行,我們可以將加法的工作分成二十份,每個(gè)部份做一段開根號的工作,並加起來,當(dāng)所有的節(jié)點(diǎn)完成計(jì)算,並傳回來,將二十個(gè)數(shù)加起來就得到最後的答案。在執(zhí)行程式之前,我們需要做個(gè)標(biāo)有記號的輸送管,可以讓所有的行程寫下它們的結(jié)果。
<p>
<pre>[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
</pre>
<p>這回我們花了大約58.5秒,這時(shí)間是從開始到所有的節(jié)點(diǎn)都完成計(jì)算,並將結(jié)果寫到輸送管,這個(gè)時(shí)間並不包括最後將二十個(gè)數(shù)加起來,不過那個(gè)時(shí)間非常地短,可以忽略不計(jì)。我們可以看到平行計(jì)算可以有效地改進(jìn)執(zhí)行程式,事實(shí)上這個(gè)平行工作整整快了約17倍,相對於使用了二十倍CPU數(shù)目,效能是相當(dāng)合理的。上述範(fàn)例的目的是要展示同時(shí)平行程式最簡單的方法,實(shí)際操作上,如此簡單的範(fàn)例是很少見的,其他技巧(PVM和MPI
APIs)經(jīng)常用來達(dá)成平行的工作。
<p>
<p>
<h2><a name="ss3.3">3.3 Beowulf如何與COW不同?</a></h2>
<p>上述的計(jì)算機(jī)實(shí)驗(yàn)室算是一個(gè)工作站群(Cluster of
Workstations,COW),那麼Beowulf有何不同?它和COW有何差異?實(shí)際上二者沒多大差別,不過Beowulf倒是有些不同的特色。第一、大多數(shù)的Beowulf群的用戶端沒有鍵盤、滑鼠、顯示卡和螢?zāi)唬械接脩舳说姆绞蕉际菑乃欧恕⑻囟刂贫嘶蚴切蛄锌刂贫私?jīng)過遠(yuǎn)端連接登入,因?yàn)閷τ脩舳硕裕瑥碾娔X群外登入電腦或是從外頭的電腦直接登入用戶端是沒有必要的,用戶端通常是使用私有的IP位址,例如從10.0.0.0到10.0.0.8或是192.168.0.0到192.168.0.16(參見RFC
1918 <a href="http://www.alternic.net/rfcs/1900/rfc1918.txt.html">http://www.alternic.net/rfcs/1900/rfc1918.txt.html</a>).
通常唯一要用到第二張網(wǎng)路卡對外連接的機(jī)器是伺服端,使用這套電腦群最常見的方法是直接進(jìn)入伺服端,或是從個(gè)人工作站使用telnet或遠(yuǎn)端登入伺服端。一但進(jìn)入伺服端,使用者可以編輯和編譯他們的程式,也可以在電腦群內(nèi)的用戶端上啟動(dòng)行程。大多數(shù)情形的COW是在晚上用來執(zhí)行平行計(jì)算,和在人們不使用工作站的週末時(shí)間,使用閒置的CPU。而通常Beowulf專用來平行計(jì)算,並且對這些平行計(jì)算做最佳化,當(dāng)利用市售電腦零組件和免費(fèi)軟體建構(gòu)的Beowulf也提供較好的價(jià)格效能比,並且Beowulf給人一種單一系統(tǒng)的印象,很容易讓使用者將Beowulf群看作是一臺(tái)計(jì)算用工作站。
<p>
<p>
<hr>
<a href="Beowulf-HOWTO-4.html"><img alt="Next" src="next.gif" width="16" height="16"></a> <a href="Beowulf-HOWTO-2.html"><img alt="Previous" src="prev.gif" width="16" height="16"></a>
<a href="Beowulf-HOWTO.html#toc3"><img alt="Contents" src="toc.gif" width="16" height="16"></a></td>
</table>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -