Sieci i systemy komputerowe Jama Mastaha
 http://infojama.pl Newsy  ·  Artykuły ·  Forum  ·  Szukaj  ·  O nas  ·  Dodaj Newsa!  
Menu główne
Jama to nie tylko codzienna porcja wiadomości o sieciach i systemach z rodziny Windows XP i Vista oraz Windows Server 2003 i 2008

Publicystyka

Forum

Pomoc

Kontakt

O nas


Ostatnie artykuły
Windows 2003
Server

Sieci

Windows XP

Pozostałe

Redakcja
Zespół redakcyjny:
Jacek Kolonko
Adam Stępień
Sebastian Sawicki
Tomasz Sadkowski
Mikołaj Kamiński
syndrom windziarza
Marcin Jankowski
Marcin Gondek
Marcin Mierzejewski

Kontakt z redakcją:

Napisz do nas na
adres mailowy lub
na forum bądź wejdź na kanał irc #jama (np. via chat) Zapraszamy!

Szczegółowe informacje dostępne są tutaj.

Kto nas ogląda
Aktualnie przegląda
nas 20888 gości.

Wywołano nas już
1509503 razy.

Na forum znajduje
się obecnie
uczestników.

System superkomputerowy Beowulf od kuchni

(14914 odsłon) 



Wstęp
Na wstępie chciałbym zaznaczyć, że artykuł ten jest skierowany do osób, które miały choć podstawowe doświadczenie z systemem operacyjnym Linux. Opisuję w nim teoretyczny zarys technologii Beowulf, wstępne informacje wraz z odsyłaczami do bardziej obszernej dokumentacji dla osób chcących się zająć tym tematem (i być może zbudować własny superkomputer) oraz superkomputer skonstruowany przez mnie i moich znajomych.


Teoretyczny zarys technologii Beowulf
Różni ludzie tworzą różne definicje, czym jest superkomputer Beowulf. Jedni twierdzą, że tak nazwać możemy jedynie komputer zbudowany dokładnie w ten sam sposób jak oryginalny NASA, inni nazywają tak każdy system obliczeń równoległych. Lecz najbliższa prawdzie definicja jest pośrodku. Beowulf to wielokomputerowy system zdolny do wykonywania obliczeń równoległych, zbudowany z wielu komputerów klasy PC. Składa się najczęściej z jednego węzła - serwera i jednego lub więcej węzła - klienta połączonych siecią Ethernet lub dowolną inną. W większych konfiguracjach możemy także spotkać się z kilkoma serwerami i węzłami do zadań specjalnych, na przykład monitorującymi. W dużej liczbie przypadków pojedyncze węzły nie dostają nawet własnej nazwy i numeru IP. Zostają im one przydzielone przez serwer.

Węzeł-serwer kontroluje cały klaster i udostępnia pliki klientom. Pełni on także funkcję konsoli klastra i jest jego bramą do zewnętrznego świata. Superkomputery Beowulf są budowane w oparciu o ogólnodostępne komponenty takie jak zwykłe komputery PC, switche i karty sieciowe. Nie mają żadnych specjalnych urządzeń. Jeśli chodzi o oprogramowanie, to jest ono najczęściej darmowe (Linux, Parallel Virtual Machine - PVM oraz Message Passing Interface - MPI). Najważniejszą cechą odróżniającą Beowulfa od systemu, którego klaster składa się jedynie z stacji roboczych (COW - Cluster of Workstations) jest to, że Beowulf zachowuje się jak jeden komputer.

Podsumowując, można powiedzieć o superkomputerze Beowulf, gdy mamy doczynienia z dwoma komputerami zainstalowanym Linuxem, współdzielącymi przez NFS katalog /home i dającymi sobie dostęp do powłoki rsh.

Komputery klasy Beowulf możemy sklasyfikować. Istnieją dwie klasy, różniące się kilkoma parametrami:

Superkomputer jest zbudowany z części, które możemy zobaczyć w przynajmniej trzech katalogach reklamowych o tematyce komputerowej. Cechuje go trochę niższa wydajność, ale nie ma problemów ze sterownikami, bo takie części zwykle są standardowymi podzespołami. Komputery klasy pierwszej są na ogół trochę tańsze niż klasy drugiej.

Superkomputer, którego nie da się zbudować w oparciu o taki katalog. Jest budowany w oparciu o nietypowe komponenty. Te komputery osiągają najwyższą wydajność, ale nietypowe urządzenia powodują problemy ze zdobyciem sterowników. Komputery tej klasy są zwykle droższe niż klasy pierwszej.

Musisz pamiętać, że żadna klasa nie jest gorsza, a to, jakiego superkomputera będziesz używać warunkuje jedynie jego zastosowanie.


Jak wygląda praca na superkomputerze Beowulf?
Opowiem na konkretnym przypadku. Powiedzmy, że mamy laboratorium, w którym taki komputer pracuje. Jest serwer i 20 klientów. Pracownicy laboratorium mogą normalnie używać swoich komputerów, tylko, że katalogi /home i /usr/local dzielą z serwerem. Dopóki jeden z pracowników nie potrzebuje wykorzystać mocy całego klastra, wykonuje programy na swojej stacji. Lecz gdy potrzebuje to zrobić, loguje się poprzez SSH lub Telnet na serwerze i tam dopiero wykonuje kod programu. Nie jest możliwe zadanie pracy całemu klastrowi bezpośrednio z jednego weszła klienckiego. Zawsze robi się to z serwera.

Przykład (wzięty z Beowulf-HOWTO):

Obliczanie sumy pierwiastków kwadratowych liczba całkowitych od 1 do 10 włącznie. Piszemy prosty program (kod źródłowy znajduje się na końcu artykułu), kompilujemy i uruchamiamy:

[root@Aster sigmasqrt]# time ./sigmasqrt 1 10
22.468278

real 0m0.029s
user 0m0.001s
sys 0m0.024s

Polecenie time pozwala śledzić jak długo program jest wykonywany. Ten program wykonał się w 0.024s. Ale teraz obliczmy sumę pierwiastków kwadratowych liczb od 1 do 1000000000.

[root@Aster sigmasqrt]# time ./sigmasqrt 1 1000000000
21081851083600.559000

real 16m45.937s
user 16m43.527s
sys 0m0.108s

Program był wykonywany o wiele dłużej. I teraz najważniejsze pytanie: jak przyśpieszyć ten proces? Odpowiedź: Zlecić to całemu klastrowi. Po prostu rozbijemy całe zadanie na dwadzieścia części, tak, aby każdy komputer liczył pojedynczą część a potem serwer złożył wynik w jedną całość.

[root@Aster sigmasqrt]$ mkfifo output
[root@Aster sigmasqrt]$ ./prun.sh & time cat output | ./sum
[1] 5085
21081851083600.941000
[1]+ Done ./prun.sh

real 0m58.539s
user 0m0.061s
sys 0m0.206s

W efekcie to samo zadanie zostało wykonane 17 razy szybciej, co przy 20 procesorach jest bardzo dobrym wynikiem. (Dla eksperymentatorów: kody źródłowe i skrypty są zamieszczone na końcu artykułu). Jak widzimy architektura Beowulf bardzo usprawnia obliczenia i stworzenie takiego komputera jest bardzo praktyczne.


Nasza maszyna
Zainspirowani jednym z wydań Telekspresu gdzie był reportaż o superkomputerze skonstruowanym na uniwersytecie Gdańskim, zapragnęliśmy sami taki złożyć. Znaleźliśmy Beowulf HOWTO. Od dawna chcieliśmy zrobić sieć komputerową z dostępem do Internetu, więc mieliśmy już przygotowane kable, karty sieciowe huby i switche. Naszego Beowulfa tworzy serwer [Pentium 4, 1 Gb RAM, 40 Gb HDD SCSI], switch i siedem komputerów Celeron 700 MHz. Używamy kart sieciowych Realtek RTL 8139/810X PCI. Sieć jest złożona za pomocą skrętki. Nasz superkomputer stanowi również nasz serwer dostępowy, WWW, ftp, shelli i MySQL. Na naszym superkomputerze rozwiązujemy zaawansowane problemy matematyczne, jak generowanie fraktali.

Jeśli chodzi o architekturę programową, każdy węzeł ma Linux Slackware, a serwer Digital Unixa 4.05. Serwer nazywa się Aster, a węzły od stacja01 do stacja 07. Pracuemy także nad zaadaptowaniem systemu BeOS na serwerze, ale na razie z mizernym skutkiem. Programy wykonujące obliczenia są pisane w języku C++, chociaż napisałem raz taki program w asemblerze. Często korzystamy także z gotowego oprogramowania. Zbudowanie takiego komputera naprawdę nie jest trudne. Całe potrzebne oprogramowanie i dokumentacja jest dostępna w Internecie.


Odsyłacze do szczegółowej dokumentacji
Lista dyskusyjna Beowulf. Aby się zapisać napisz list do beowulf-request@cesdis.gsfc.nasa.gov ze słowem subscribe w treści listu.
Beowulf Homepage http://www.beowulf.org
Extreme Linux http://www.extremelinux.org
Extreme Linux Software from Red Hat http://www.redhat.com/extreme

Documentacja:
Jacek's Beowulf Links http://www.sci.usq.edu.au/staff/jacek/beowulf
Beowulf Installation and Administration HOWTO (DRAFT) http://www.sci.usq.edu.au/staff/jacek/beowulf
Linux Parallel Processing HOWTO http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html

Oprogramowanie:
PVM - Parallel Virtual Machine http://www.epm.ornl.gov/pvm/pvm_home.html
LAM/MPI (Local Area Multicomputer / Message Passing Interface) http://www.mpi.nd.edu/lam
BERT77 - FORTRAN program konwertujący http://www.plogic.com/bert.html
Oprogramowanie ze strony Beowulf Project http://beowulf.gsfc.nasa.gov/software/software.html
Jacek's Beowulf-utils ftp://ftp.sci.usq.edu.au/pub/jacek/beowulf-utils
bWatch - program monitorujący klaster http://www.sci.usq.edu.au/staff/jacek/bWatch

Maszyny Beowulf:
Avalon składa się z 140 procesorów Alpha, 36GB RAM i jest prawdopodobnie najszybszą maszyną Beowulf, osiągając prędkość 47.7Gflops i zajmując 144-te miejsce w rankingu Top 500. http://swift.lanl.gov/avalon/
Megalon-A Massively PArallel CompuTer Resource (MPACTR) składa się z 14 poczwórnych węzłów Pentium Pro 200 i 14 GB RAM. http://megalon.ca.sandia.gov/description.html
theHIVE - Highly-parallel Integrated Virtual Environment jest innym szybkim superkomputerem Beowulf. theHIVE składa się z 64 węzłów, 128 CPU posiadając w sumie 4GB RAM. http://newton.gsfc.nasa.gov/thehive/
Topcat to o wiele mniejsza maszyna, składa się z 16 CPU i 1.2GB RAM. http://www.sci.usq.edu.au/staff/jacek/topcat
MAGI cluster - to bardzo interesująca strona z wieloma dobrymi odnośnikami. http://noel.feld.cvut.cz/magi/

Inne interesujące strony:
SMP Linux http://www.linux.org.uk/SMP/title.html
Paralogic - kup Beowulfa http://www.plogic.com

Historia:
Legends - Beowulf http://legends.dm.net/beowulf/index.html
The Adventures of Beowulf http://www.lnstar.com/literature/beowulf/beowulf.html


Kody źródłowe i informacje o źródłach
Przykładowe kody źródłowe programów mających zastosowanie w środowisku Beowulf znajdziecie tutaj. W tym artykule wykorzystano materiały z Beowulf-HOWTO. Autorzy Beowulf-HOWTO wyrazili zgodę na dystrybucję i modyfikowanie swojego dokumentu zgodnie z założeniami GNU General Public Licence.


Łukasz Krawczyk
c3rn@lava.pl
  


[ Indeks sekcji ]

Komentarze Dodaj komentarz» Nie napisano jeszcze ani jednego komentarza. Twój może być pierwszy...


Dodaj swój komentarz
Autor:  
Komentarz:
Dodaj komentarz

 

Grupa CentrumXP.pl

O Jamie Mastaha  |  O Grupie CentrumXP.pl

Nasze serwisy: CentrumXP.pl |  Sklep on-line  |  Komputer w firmie  |  Xbox 360  |  Live Blog  |  MS Blog Jama Mastaha |  Developers.pl