Beowulf HOWTO pl


Beowulf HOWTO Autor: Jacek Radajewski i Douglas Eadline v1.1.1, 22 padziernik 1998 WWeerrssjjaa ppoollsskkaa:: AAddaamm BByyrrtteekk aallpphhaa@@iirrcc..ppll v1.0, lipiec 1999 Ten dokument jest wprowadzeniem do architektury superkomputerw Beowulf i dostarcza podstawowych informacji na temat programowania rwnolegego, wraz z odnonikami do bardziej szczegowych dokumentw oraz stron WWW. ______________________________________________________________________ Spis treci 1. Wstp 1.1 Zastrzeenie 1.2 Prawa autorskie 1.3 Informacje o dokumencie 1.4 Informacje o autorach 1.5 Podzikowania 2. Wstp 2.1 Kto powinien czyta ten dokument? 2.2 Czym jest Beowulf? 2.3 Klasyfikacja 3. Oglny opis architektury 3.1 Jak to wyglda? 3.2 Jak wykorzysta pozostae wzy? 3.3 Czym Beowulf rni si od COW? 4. Planowanie systemu 4.1 Krtkie wprowadzenie do przetwarzania rwnolegego. 4.2 Metody przetwarzania rwnolegego 4.2.1 Po co wicej ni jeden procesor? 4.2.2 Sklep z przetwarzaniem rwnolegym 4.2.2.1 Jednozadaniowy system operacyjny 4.2.2.2 Wielozadaniowy system operacyjny 4.2.2.3 Wielozadaniowe systemy operacyjne z wieloma CPU 4.2.2.4 Wtki w wielozadaniowym systemie operacyjnym z wieloma CPU 4.2.2.5 Wysyanie komunikatw w wielozadaniowych systemach z wieloma CPU 4.3 Architektury przetwarzania rwnolegego 4.3.1 Architektury sprztowe 4.3.2 Programowe architektury API 4.3.2.1 Komunikaty 4.3.2.2 Wtki 4.3.3 Architektura aplikacji 4.4 Suitability 4.5 Pisanie i przenoszenie oprogramowania rwnolegego 4.5.1 Wyznaczanie konkurencyjnych czci programu 4.5.2 Obliczanie efektywnoci rwnolegej 4.5.3 Opisywanie konkurencyjnych czci programu 4.5.3.1 Metody wyrane 4.5.3.2 Domniemane metody 5. Zasoby dotyczce Beowulfa 5.1 Punkty startowe 5.2 Documentation 5.3 Dokumenty 5.4 Oprogramowanie 5.5 Maszyny Beowulf 5.6 Inne interesujce strony 5.7 Historia 6. Kod rdowy 6.1 sum.c 6.2 sigmasqrt.c 6.3 prun.sh ______________________________________________________________________ 11.. WWssttpp 11..11.. ZZaassttrrzzeeeenniiee Nie ponosimy adnej odpowiedzialnoci za jakiekolwiek bdne informacje zawarte w tym dokumencie, ani za uszkodzenia ktre mog one spowodowa. 11..22.. PPrraawwaa aauuttoorrsskkiiee Copyright (C) 1997 - 1998 Jacek Radajewski and Douglas Eadline. Udzielono zezwolenia na dystrybucj i modyfikowanie tego dokumentu zgodnie z licencj GNU General Public Licence. 11..33.. IInnffoorrmmaaccjjee oo ddookkuummeenncciiee Jacek Radajewski rozpocz prac nad tym dokumentem w padzierniku 1997, niedugo potem doczy do niego Douglas Eadline. W przecigu kilku miesicy dokument Beowulf HOWTO znacznie si rozrs, i w sierpniu 1998 zosta podzielony na trzy dokumenty: Beowulf HOWTO, Beowulf Architecture Design HOWTO, oraz Beowulf Installation and Administration HOWTO. Wersja 1.0.0 Beowulf HOWTO zostaa wydana w ramach Linux Documentation Project (Projektu Dokumentacji Linuxa) 11 padziernika 1998. Mamy nadziej, e to jedynie pocztek tego, co stanie si wkrtce Beowulf Documentation Project (Projektem Dokumentacji Beowulfa). 11..44.. IInnffoorrmmaaccjjee oo aauuttoorraacchh +o Jacek Radajewski pracuje jako zarzdca sieci i studiuje nauki komputerowe na Uniwersytecie Poudniowego Queensland, w Australii. Jacek pierwszy raz spotka si z Linuxem w 1995 roku, i bya to mio od pierwszego spojrzenia. Jacek wybudowa swj pierwszy klaster Beowulf w maju 1997 i od tamtego czasu eksperymentuje, starajc si znale nowe i lepsze sposoby rozwizywania problemw. Mona skontaktowa si z Jackiem wysyajc mu email na adres jacek@usq.edu.au +o Douglas Eadline, Ph.D. jest Prezesem i Pierwszym Naukowcem w Paralogic, Inc., Bethlehem, PA, USA. Z wyksztacenia chemik fizyczny/analityczny, zainteresowany komputerami od 1978, gdy zbudowa swj pierwszy komputer do uycia z instrumentami chemicznymi. Teraz Dr. Eadline interesuje si Linuxem, klastrami Beowulf i algorytmami rwnolegymi. Mona skontaktowa si z nim wysyajc email na adres deadline@plogic.com 11..55.. PPooddzziikkoowwaanniiaa Pisanie Beowulf HOWTO byo dugim procesem, zakoczonym dziki wielu osobom. Chciaem podzikowa nastpujcym ludziom za pomoc i wkad w ten dokument. +o Becky za jej mio, wsparcie i zrozumienie. +o Tom'owi Sterling, Don'owi Becker oraz innym ludziom z NASA, ktrzy rozpoczli projekt Beowulf. +o Thanh Tran-Cong i Katedrze Inynierii i Pomiarw za stworzenie maszyny Beowulf _t_o_p_c_a_t, udostpnionej do eksperymentw. +o Mojemu nadzorcy Christopher'owi Vance za wiele wietnych pomysw. +o Mojemu przyjacielowi Russell'owi Waldron za wietne pomysy programistyczne, jego zainteresowanie projektem i wsparcie. +o Mojemu przyjacielowi David'owi Smith za przeczytanie tego dokumentu w poszukiwaniu bdw. +o Wielu innym ludziom z listy dyskusyjnej Beowulfa, ktrzy dostarczyli mi opinii i pomysw. +o Wszystkim ludziom odpowiedzialnym za system operacyjny Linux i pozostae darmowe oprogramowanie wykorzystywane na _t_o_p_c_a_t i innych maszynach Beowulf. 22.. WWssttpp Jako e wydajno sprztu komputerowego i sieciowego wci ronie, a jego ceny spadaj, bardziej praktyczne ni kupowanie bardzo kosztownego superkomputera staje si budowanie rwnolegych systemw obliczeniowych ze skadnikw dostpnych w kadym sklepie. W rzeczywistoci wskanik wydajnoci do ceny maszyny typu Beowulf jest od trzech do dziesiciu razy wyszy ni tradycyjnych superkomputerw. Architektura Beowulf jest atwo skalowalna, atwa w budowie i paci si jedynie za sprzt, jako e wikszo oprogramowania jest darmowa. 22..11.. KKttoo ppoowwiinniieenn cczzyyttaa tteenn ddookkuummeenntt?? To HOWTO jest zaprojektowane dla osoby majcej przynajmniej podstawowe dowiadczenie z systemem operacyjnym Linux. Znajomo technologii Beowulf czy rozumienie bardziej zoonych koncepcji zwizanych z systemami operacyjnymi i sieciami nie jest konieczne, ale podstawowa wiedza o przetwarzaniu rwnolegym bdzie przydatna (w kocu musisz mie jaki powd, czytajc ten dokument). To HOWTO nie odpowie na wszystkie moliwe pytania na temat Beowulf'a, ale by moe da ci pomysy i poprowadzi we waciwym kierunku. Celem tego dokumentu jest udzielenie podstawowych informacji, oraz odnonikw do bardziej zaawansowanych dokumentw. 22..22.. CCzzyymm jjeesstt BBeeoowwuullff?? _F_a_m_e_d _w_a_s _t_h_i_s _B_e_o_w_u_l_f_: _f_a_r _f_l_e_w _t_h_e _b_o_a_s_t _o_f _h_i_m_, _s_o_n _o_f _S_c_y_l_d_, _i_n _t_h_e _S_c_a_n_d_i_a_n _l_a_n_d_s_. _S_o _b_e_c_o_m_e_s _i_t _a _y_o_u_t_h _t_o _q_u_i_t _h_i_m _w_e_l_l _w_i_t_h _h_i_s _f_a_t_h_e_r_'_s _f_r_i_e_n_d_s_, _b_y _f_e_e _a_n_d _g_i_f_t_, _t_h_a_t _t_o _a_i_d _h_i_m_, _a_g_e_d_, _i_n _a_f_t_e_r _d_a_y_s_, _c_o_m_e _w_a_r_r_i_o_r_s _w_i_l_l_i_n_g_, _s_h_o_u_l_d _w_a_r _d_r_a_w _n_i_g_h_, _l_i_e_g_e_m_e_n _l_o_y_a_l_: _b_y _l_a_u_d_e_d _d_e_e_d_s _s_h_a_l_l _a_n _e_a_r_l _h_a_v_e _h_o_n_o_r _i_n _e_v_e_r_y _c_l_a_n_. Beowulf to najstarszy zachowany poemat epicki w jzyku angielskim. Jest to opowie o bohaterze dysponujcym wielk si i odwag, ktry pokona potwora zwanego Grendel. Patrz do dziau ``Historia'' aby dowiedzie si wicej o walecznym Beowulf'ie. Prawdopodobnie istnieje co najmniej tyle definicji Beowulf'a, ile ludzi ktrzy budowali lub korzystali z architektury superkomputera Beowulf. Niektrzy twierdz e system moe zosta nazwany Beowulf tylko jeli zosta zbudowany tak samo, jak oryginalna maszyna NASA. Inni zmierzaj do drugiej skrannoci, nazywajc imieniem Beowulf kady system stacji roboczych wykonujcych kod rwnolegy. Moja definicja Beowulf'a mieci si mniej wicej porodku, i jest oparta na wielu opiniach z listy dyskusyjnej Beowulf'a: Beowulf to wielo-komputerowa architektura ktra moe zosta uyta do oblicze rwnolegych. Jest to system, ktry na ogl skada si z jednego wz- serwera i jednego lub wicej wza-klienta poczonego przez Ethernet lub jak inn sie. Jest to system zbudowany w oparciu o powszechnie dostpne komponenty sprztowe, jak kady PC zdolny do uruchomienia Linuxa, standardowe karty Ethernet i switch'e. Nie zawiera adnych unikalnych komponentw sprztowych i jest atwy w tworzeniu. Beowulf korzysta rwnie ze zwykego oprogramowania, jak system operacyjny Linux, Parallel Virtual Machine (PVM) oraz Message Passing Interface (MPI). Wze-serwer kontroluje cay klaster i udostpnia pliki klientom. Peni on take funkcj konsoli klastra i jest jego bram do zewntrznego wiata. Due maszyny Beowulf mog posiada wicej ni jeden wze-serwer, oraz inne wzy stworzone dla specyficznych zada, na przykad konsole lub stacje monitorujce. W wikszoci przypadkw wzy-klienci w systemie Beowulf s gupie, im gupsze tym lepiej. Wzy s konfigurowane i kontrolowane przez wze-serwer, i robi tylko to, co kazano im robi. W konfiguracji bezdyskowej klienci nie znaj nawet swojego adresu IP lub nazwy, dopki serwer im ich nie poda. Jedn z podstawowych rnic pomidzy Beowulf'em a architektur Cluster of Workstations (COW) jest to, e Beowulf zachowuje si bardziej jak jedna maszyna, ni wiele stacji roboczych. W wikszoci przypadkw wzy-klienci nie posiadaj klawiatur czy monitorw, a dostp do nich jest moliwy jedynie przez odlege logowanie bdz opcjonalny terminal szeregowy. Wezy Beowulf mona sobie wyobrazi jako pakiej CPU + pami, ktry moe zosta podczony do klastra, tak jak CPU czy modu pamici moe zosta doczony do pyty gwnej. Beowulf to nie aden specjalny pakiet oprogramowania, nowa topologia sieci czy nowa nakadka na jdro. Beowulf to technologia czenia komputerw Linux aby utworzy rwnolegy, wirtualny superkomputer. Chocia istnieje wiele pakietw oprogramowania, takich jak modyfikacje jdra, biblioteki PVM i MPI, narzdzia konfiguracyjne, ktre przyspieszaj architektur Beowulf, uatwiaj konfiguracj i zwikszaj uyteczno, jednak moliwe jest zbudowanie maszyny Beowulf wykorzystujc standardow dystrybucj Linux, bez adnego dodatkowego oprogramowania. Jeli masz przynajmniej dwa usieciowione komputery Linux ktre dziel przynajmniej katalog /home poprzez NFS, i ufaj sobie nawzajem na tyle, aby uruchomi odleg powok (rsh), moesz si upiera e dysponujesz prost, dwu-wzow maszyn Beowulf. 22..33.. KKllaassyyffiikkaaccjjaa Systemy Beowulf za konstruowane z rnorodnych czci. W celu zwikszenia moliowci obliczeniowych czasami korzysta ci z pewnych niedostpnych powszechnie komponentw (tzn. produkowanych przez pojedynczego producenta). W celu odrnienia osigw rnych typw systemw, i uatwienia dyskusji na ich temat, proponujemy nastpujc klasyfikacj: BEOWULF KLASY I: Maszyna tej klasy jest zbudowana wycznie z powszechnie dostpnych komponentw. W celu sprawdzenia powszechnoci elementw przeprowadzmy test przy uyciu "Computer Shopper" (calowej gruboci miesicznika/katalogu systemw PC i komponentw). Test ten wyglda nastpujco: Beowulf KLASY I to maszyna, ktra moe zosta skonstruowana z czci znalezionych przynajmiej w 3 krajowych/oglnowiatowych katalogach reklamowych. Zalety systemw KLASY I to: +o sprzt dostpny z wielu rdel (niskie ceny, atwa konserwacja) +o niezalenoc od konkretnego producenta +o wsparcie standardowych sterownikw Linux +o najczciej oparte o standardy (SCSI, Ethernet itp.) Wady systemw KLASY I to: +o najlepsza wydajno moe wymaga sprztu KLASY II BEOWULF KLASY II Beowulf KLASY II to po prostu kada maszyna ktra nie przejdzie testu z uyciem "Computer Shopper". To nie jest co zego, jest to jedynie klasyfikacja maszyny. Zalety systemw KLASY II to: +o cakiem dobra wydajno! Wady systemw KLASY II to: +o problemy ze sterownikami +o zaleno od konkretnego producenta +o moe by droszy ni system klasy I adna KLASA nie jest lepsza ni inna. Wszystko zaley wycznie do potrzeb i moliwoci finansowych. Ta klasyfikacja zostaa utworzona jedynie w celu uatwienia i wikszej zwizoci dyskusji na temat systemw Beowulf. Dzia "Projektowanie systemu" moe pomc ustali, ktry typ systemu pardziej pasuje do twoich potrzeb. 33.. OOggllnnyy ooppiiss aarrcchhiitteekkttuurryy 33..11.. JJaakk ttoo wwyyggllddaa?? Myl, e najlepszym sposobem opisu architektury superkomputera Beowulf jest uycie przykadu, ktry jest bardzo podobny do prawdziwego Beowulf'a, ale znany wikszoci administratorw systemu. Przykad najbliszy Beowulf'owi to laboratorium komputerw Unix z serwerem i klientami. Aby by bardziej szczegowym uyj jako przykadu laboratorium komputerw DEC Alpha na Katedrze Nauk Komputerowych, USQ. Serwer nazywa si _b_e_l_d_i_n, a klienci nazywaj si _s_c_i_l_a_b_0_1, _s_c_i_l_a_b_0_2, a do _s_c_i_l_a_b_2_0. Wszyscy klienci maj zainstalowan lokaln kopi systemu operacyjnego Digital Unix 4.0, ale korzystaj z katalogw uytkownika (/home) oraz /usr/local serwera poprzez NFS (Network File System). Kady klient posiada wpis dla serwera i wszystkich pozostaych klientw w swoim pliku /etc/hosts.equiv, wic wszyscy klienci mog uruchomi rsh na kadym innym. Serwer jest jednoczenie serwerem NIS dla caego laboratorium, wic informacje ksigowania s identyczne dla wszystkich maszyn. Osoba moe siedzie przed konsol _s_c_i_l_a_b_0_2, zalogowa si i pracowa w tym samym rodowisku, w jakim pracowaa by gdyby zalogowaa si z serwera bdz z _s_c_i_l_a_b_1_5. Spowodowane jest to tym, e system operacyjny na wszystkich komputerach jest zainstalowany i skonfigurowany w ten sam sposb, a katalogi uytkownika /home i /usr/local mieszcz si fizycznie na serwerze, i s udostpniane przez NFS. Wicej informacji o NIS i NFS znajdziesz w dokumentach HOWTO NIS oraz NFS. 33..22.. JJaakk wwyykkoorrzzyyssttaa ppoozzoossttaaee wwzzyy?? Gdy mamy ju jakie pojcie o architekturze systemu, moemy spojrze jak wykorzysta dostpne cykle CPU maszyn w laboratorium komputerowym. Kada osoba moe zalogowa si na dowolnej maszynie, i uruchomi program i swoim katalogu domowym, ale moe take wykona to zadanie na innej maszynie wywoujc po prostu odleg powok. Przykadowo zamy e chcemy obliczy sum pierwiastkw kwadratowych wszystkich liczb cakowitych od 1 do 10 wcznie. Piszemy prosty program nazwany sigmasqrt (patrz ``kod rdowy''), ktry wykonuje oblicznia. Aby obliczy sum pierwiastkw kwadratowych liczb od 1 do 10 wykonujemy: [jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10 22.468278 real 0m0.029s user 0m0.001s sys 0m0.024s Komenda time pozwala nam ledzi upyw czasu podczas wykonywania zadania. Jak wida, ten przykad zaj jedynie may uamek sekundy (0.029s), ale co bdzie jeli sprbujemy doda pierwiastki kwadratowe liczb od 1 do 1000000000? Sprbujmy, ponownie obliczajc upyw czasu. [jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 1000000000 21081851083600.559000 real 16m45.937s user 16m43.527s sys 0m0.108s Tym razem wykonianie programu trwao znacznie duej. Oczywistym pytaniem jest co moemy zrobi aby przyspieszy wykonanie programu? Jak moemy zmieni sposb wykonania zadania aby zmniejszy upyw czasu? Oczywist odpowiedzi jest rozbicie zadania na wiele pod-zada rwnolegych na wszystkich komputerach. Moemy rozbi jedno due zadanie dodawania na 20 czci, obliczajc jeden zakres pierwiastkw kwadratowych i dodajc je na kadym wle. Gdy wszystkie wzy zakocz obliczenia i zwrc rezultaty, 20 liczb powinno zosta dodanych do siebie aby otrzyma kocowy wynik. [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 Tym razem zajo to okoo 58.5s. Jest to czas od rozpoczcia zadania do zakoczenia go przez wszystkie wzy i zwrcenia rezultatu przez potok. Ten czas nie zawiera kocowego dodania 20 liczb, ale to jedynie may uamek sekundy, ktry moe zosta zignorowany. Zauwaamy e nastpia znaczna poprawa przy rwnolegym wykonaniu zadania. Rwnolege zadanie wykonao si ponad 17 razy szybciej, co jest bardzo dobrym wynikiem przy 20-krotnym zwikszeniu iloci CPU. Powyszy przykad ma na celu zilustrowanie najprostszej metody zmiany zwykego kodu na rwnolegy. W praktyce takie proste przypadki s niezwykle rzadkie, i rne techniki (takie jak API PVM i PMI) s wykorzystywane do osignicia rwnolegoci. 33..33.. CCzzyymm BBeeoowwuullff rrnnii ssii oodd CCOOWW?? Laboratorium komputerowe opisane powyej jest doskonaym przykadem klastra stacji roboczych (COW). Tak wic co jest szczeglnego w Beowulf'ie, i w jaki sposb rni si on od COW? Prawd jest, e nie jest to wielka rnica, ale Beowulf posiada kilka unikalnych cech. Po pierwsze, w wikszoci przypadkw wzy-klienci klastra Beowulf nie posiadaj klawiatury, myszy, karty graficznej czy monitora. Dostp do wzw-klientw odbywa si poprzez odlege poczenia z wza-serwera, dedykowanego wza- konsoli lub konsoli szeregowej. Jako e wzy-klienci nie musz mie dostpu do maszyn spoza klastra, ani maszyny spoza klastra nie musz mie bezporedniego dostpu do wzw-klientw, powszechnie stosowan praktyk jest nadawanie wzom-klientom prywatnych adresw IP, z prywatnych zakresw takich jak 10.0.0.0/8 czy 192.168.0.0/16 (RFC 1918 http://www.alternic.net/rfcs/1900/rfc1918.txt.html). Na og jedyn maszyn podczon do wiata zewntrznego za pomoc drugiej karty sieciowej jest wze-serwer. Najczciej korzysta si z systemu poprzez bezporedni dostp do konsoli serwera, lub poprzez telnet czy odlege logowanie na serwer z odlegej stacji roboczej. Na serwerze uytkownicy mog edytowa i kompilowa swj kod, a take uruchamia procesy na wszystkich wzach w klastrze. W wikszoci przypadkw systemy COW s uywane do oblicze rwnolegych w nocy i w weekendy, gdy uytkownicy nie korzystaj ze swoich stacji roboczych do pracy, wykorzystujc w ten sposb z niepotrzebne cykle procesora. Z kolei maszyna Beowulf jest maszyn dedykowan do przetwarzania rwnolegego, i zoptymalizowan w tym celu. Beowulf zapewnia take wikszy wspczynnik ceny do wydajnoci, jako e jest zbudowany z oglnie dostpnych komponentw i korzysta na og z darmowego oprogramowania. Beowulf ma take wicej cech pojedynczego systemu, ktre pomagaj uytkownikom dostrzega klaster Beowulf jako pojedyncz obliczeniow stacj robocz. 44.. PPllaannoowwaanniiee ssyysstteemmuu Przed zakupem sprztu dobrym pomysem moe okaza si przemylenie planu gotowego systemu. Przy tworzeniu systemu Beowulf naley wzi pod uwag przede wszystkim dwie gwne kwestie sprztowe: typ komputerw/wzw ktrych masz zamiar uy, oraz sposb ich poczenia. Istnieje jedna kwestia programowa, ktra moe wpyn na decyzj w sprawie sprztu: biblioteka komunikacyjna lub API. Bardziej szczegowe rozwaania na temat sprztu i oprogramowania znajduj si w innym miejscu tego dokumentu. Mimo e wybr nie jest zbyt wielki, istniej jednak pewne istotne decyzje ktre musz zosta podjte przy konstruowaniu systemu Beowulf. Jako e dziedzina wiedzy (bd sztuka) "przetwarzanie rwnolege" posiada wiele moliwych interpretacji, poniej zamieszczone wprowadzenie do niej. Jeli nie jeste zainteresowany takim materiaem wprowadzajcym, moesz pomin t sekcj, jednak zaleca si, aby przeczyta sekcj ``Suitability'' zanim podejmiesz ostateczne decyzje sprztowe. 44..11.. KKrrttkkiiee wwpprroowwaaddzzeenniiee ddoo pprrzzeettwwaarrzzaanniiaa rrwwnnoolleeggeeggoo.. Ta sekcja stanowi wprowadzenie do koncepcji przetwarzania rwnolegego. NIE jest to wyczerpujcy materia, jest to jedynie krtki opis spraw, ktre mog by istotne dla projektanta i uytkownika Beowulf'a. Podczas projektowania i budowania Beowulf'a, wiele z opisanych poniej zagadnie moe okaza si istotnych dla twoich decyzji. Ze wzgldu na szczeglne cechy komponentw superkomputera Beowulf, naley uwanie zastanowi si nad wieloma aspektami, dopki jeszcze zale one od ciebie. Wcale nie jest tak trudno zrozumie podstawowe zagadnienia zwizane z przetwarzaniem rwnolegym. W rzeczywistoci gdy ju zrozumie si te zagadnienia, oczekiwania oka si bardziej rzeczywiste i sukces bdzie bardziej prawdopodobny. W przeciwiestwie do "wiata sekwencyjnego", gdzie szybko procesora jest najwaniejszym aspektem, szybko procesora w "wiecie rwnolegym" jest tylko jednym z wielu aspektw wpywajcych na ogln wydajno i efektywno systemu. 44..22.. MMeettooddyy pprrzzeettwwaarrzzaanniiaa rrwwnnoolleeggeeggoo Przetwarzanie rwnolege moe zosta osignite w rny sposb. Z perspektywy uytkownika istotne jest rozpatrzenie zalet i wad kadej metody. Ponisze dziay prbuj dostarczy informacji na temat metod przetwarzania rwnolegego i stwierdzaj, czy maszyna Beowulf podpada pod t kategori. 44..22..11.. PPoo ccoo wwiicceejj nnii jjeeddeenn pprroocceessoorr?? Odpowied na to pytanie jest bardzo istotna. Korzystanie z 8 procesorw aby uruchomi twj ulubiony edytor tekstw to lekka przesada. A co z serwerem www, baz danych, programem renderujcym? Moe wicej CPU pomoe. A co ze zoon symulacj, kodem dynamiki cieczy czy aplikacj grnicz? Dodatkowe CPU na pewno pomog w tych przypadkach. Faktem jest e architektury wieloprocesorowe s wykorzystywane do rozwizywania coraz wikszej liczby problemw. Najczciej nastpnym pytaniem jest: "Dlaczego potrzebuj dwch czy czterech CPU? Po prostu poczekam na turbo-hiper ukad 986." Istnieje kilka powodw: 1. Podczas korzystania z wielozadaniowych systemw operacyjnych mona robi wicej ni jedn rzecz w tym samym czasie. Jest to naturalna "rwnolego", ktra moe by atwo wykorzystana przez wicej ni jeden tani CPU. 2. Szybko procesorw podwaja si co kade 18 miesicy, ale co z prdkoci pamici i dysku twardego? Niestety te szybkoci nie rosn tak szybko, jak szybko CPU. Pamitaj, e wikszo aplikacji wymaga dostpu do pamici i twardego dysku. Wykonywanie zada rwnolegle jest sposobem obejcia tych ogranicze. 3. Badania wskazuj, e szybko procesorw przestanie rosn dwukrotnie co 18 miesicy po roku 2005. Istniej pewne bardzo powane przeszkody ktre naley pokona aby utrzyma ten wskanik. 4. Zalenie od aplikacji, przetwaanie rwnolege moe przyspieszy dziaanie od 2 do 500 razy (w pewnych przypadkach nawet wicej). Taka wydajno nie jest dostpna przy uyciu pojedynczego procesora. Nawet superkomputery, ktre kiedy korzystay z bardzo szybkiego, specjalnego procesora teraz s budowane z wielu oglnodostpnych CPU. Jeli do rozwizania zoonego problemu potrzebujesz szybkoci, przetwarzanie rwnolege jest warte rozwaenia. Poniewa przetwarzanie rwnolege moe zosta zaimplementowane na rne sposoby, rozwizanie problemu wymaga podjcia pewnych bardzo wanych decyzji. Te decyzje mog drastycznie wpyn na przenono, wydajno i koszt systemu. Zanim dojdziemy do spraw technicznych, spjrzmy na realny problem dla przetwaania rwnolegego, korzystajc z przykadu ktry dobrze znamy -- oczekiwania w dugich kolejkach w sklepie. 44..22..22.. SSkklleepp zz pprrzzeettwwaarrzzaanniieemm rrwwnnoolleeggyymm Rozwamy wielki sklep z omioma kasami zgrupowanymi razem na przedzie sklepu. Zamy e kada kasa/kady kasjer jest CPU, a kady klient jest programem komputerowym. Wielko zamwienia kadego klienta jest rozmiarem programu komputerowego (iloci pracy). Te analogie mog zosta wykorzystane do zilustrowania poj przetwarzania rwnolegego. 44..22..22..11.. JJeeddnnoozzaaddaanniioowwyy ssyysstteemm ooppeerraaccyyjjnnyy Tylko jedna kasa jest otwarta, i musi obsuy kadego klienta pojedynczo. Przykad: MS-DOS 44..22..22..22.. WWiieelloozzaaddaanniioowwyy ssyysstteemm ooppeerraaccyyjjnnyy Otwarta jest jedna kasa, ale teraz przetwarzany jest tylko fragment zamwienia klienta, a nastpnie obsugiwany jest fragment zamwienia klienta nastpnego. Kademu wydaje si, e wszyscy s obsugiwani jednoczenie, ale jeli nie ma nikogo innego w kolejce klient zostanie obsuony szybciej. Przykad: UNIX, NT korzystajcy z jednego CPU 44..22..22..33.. WWiieelloozzaaddaanniioowwee ssyysstteemmyy ooppeerraaccyyjjnnee zz wwiieelloommaa CCPPUU Teraz sklep dysponuje wieloma kasami. Kade zamwienie moe zosta przetworzone przez odrbn kas i kolejka moe zosta obsuona szybciej. Nazywane jest to SMP -- Symmetric Multi-processing. Mimo e istnieje wiele kas, to jeli jeste sam w kolejce, nie zostaniesz obsuony szybciej, ni gdyby istniaa tylko jedna kasa. Przykad: UNIX oraz NT z wieloma CPU 44..22..22..44.. WWttkkii ww wwiieelloozzaaddaanniioowwyymm ssyysstteemmiiee ooppeerraaccyyjjnnyymm zz wwiieelloommaa CCPPUU Jeli podzielisz produkty w zamwieniu, by moe zdoasz szybciej przej przez kolejk korzystajc z kilku kas jednoczenie. Najpierw musimy zaoy, e posiadasz du ilo towaru, poniewa czas powicony na rozbijanie zamwienia musi zwrci si przez korzystanie z wielu kas. Teoretycznie powiniene przej kolejk n-razy szybciej ni poprzednio, gdzie `n' to ilo kas. Gdy kasjer musi podsumowa zamwienie, moe wymieni informacj i komunikowa si z wszystkimi innymi `lokalnymi' kasami. Kasy mog nawet `zaglda' do innych kas aby uzyska informacj, ktra przyspieszy ich prac. Istnieje jednak limit iloci kas w jednym sklepie, aby praca przebiegaa efektywnie. Prawo Amdala take ogranicza prdko programu do prdkoci jego najwolniejszego, sekwencyjnego fragmentu. Przykad: UNIX lub NT z wielona CPU na jednej pycie gwnej uruchamiajce programy wielo-wtkowe. 44..22..22..55.. WWyyssyyaanniiee kkoommuunniikkaattww ww wwiieelloozzaaddaanniioowwyycchh ssyysstteemmaacchh zz wwiieelloommaa CCPPUU Aby zwikszy wydajno, sklep dodaje 8 kas na tyach sklepu. Jako e nowe kasy s daleko od kas z przodu, kasjerzy musz przekazywa sobie sumy czstkowe przez telefon. Ta odlego zwiksza nieco opnienie w komunikacji midzy kasjerami, ale jeli uda si zminimalizowa komunikacj, to wszystko jest w porzdku. Jeli masz naprawd wielkie zamwienie, wymagajce wszystkich kas jednoczenie, to przed obliczeniem zyskw czasowych naley rozway opnienia komunikacji. W pewnych przypadkach sklep moe posiada pojedyncze kasy (lub zgrupowania kas) rozmieszczone na terenie caego sklepu -- kada kasa (lub zgrupowanie) musi komunikowa si przez telefon. Jako e kady kasjer moe rozmawia z dowolnym innym, nie jest istotne gdzie oni si znajduj. Przykad: Jedna lub wicej kopii UNIX lub NT z wieloma CPU na tej samej lub innej pycie gwnej, porozumiewajcych si poprzez komunikaty. Powysze scenariusze, mimo e niedokadne, s dobym przykadem ogranicze nakadanych na system rwnolegy. W przeciwiestwie do pojedynczego CPU (lub kasy) komunikacja jest istotna. 44..33.. AArrcchhiitteekkttuurryy pprrzzeettwwaarrzzaanniiaa rrwwnnoolleeggeeggoo Popularne metody i architektury przetwarzania rwnolegego s zaprezentowane poniej. Mimo e opis ten nie jest pod adnym wzgldem wyczerpujcy, jest jednak wystarczajcy do zrozumienia podstaw projektu Beowulf. 44..33..11.. AArrcchhiitteekkttuurryy sspprrzzttoowwee Istniej dwa podstawowe sposoby czenia sprztu: 1. Maszyny z pamici lokaln, komunikujce si przez komunikaty (klastry Beowulf) 2. Maszyny z pamici dzielon, komunikujce si przez pami (maszyny SMP) Typowy Beowulf to zbir jednoprocesorowych maszyn poczonych przez szybk sie Ethernet, a wic jest systemem z wasn pamici. System SMP to maszyna z pamici dzielon, ktra moe zosta wykorzystana do przetwarzania rwnolegego -- aplikacje rwnolege komunikuj si przez pami dzielon. Tak jak w przykadzie sklepu, maszyny z pamici lokaln (pojedyncze kasy) s skalowalne do duej liczby CPU, gdy liczba CPU maszyn z pamici dzielon jest ograniczona przez pami. Jest jednak moliwe poczenie wielu maszyn z pamici dzielon aby utworzy "hybrydow" maszyn z pamici dzielon. Te hybrydowe maszyny wygldaj dla uytkownika jak pojedyncze, due maszyny SMP i czsto zwane s maszynami NUMA (non uniform memory access -- nietypowy dostp do pamici), poniewa globalna pami widoczna dla programisty i dzielona przez wszystkie CPU moe by ukrywana. Jednak na pewnym poziomie maszyna NUMA musi przekazywa wiadomoci pomidzy lokalnymi obszarami pamici dzielonej. Moliwe jest take podczenie maszyn SMP jako lokalnych wzw obliczeniowych. Typowe pyty gwne KLASY I maj 2 lub 4 procesory, jest to sposb zredukowania kosztw. Wewntrzny scheluder Linuxa okrela, w jaki sposb te CPU s dzielone. W tym przypadku uytkownik nie moe okreli odrbnego zadania dla konkretnego procesora SMP. Uytkownik moe jednak rozpocz dwa niezalene procesy lub proces wielowtkowy i spodziewa si poprawy wydajnoci w stosunku do systemu z pojedynczym CPU. 44..33..22.. PPrrooggrraammoowwee aarrcchhiitteekkttuurryy AAPPII Istniej dwa podstawowe sposoby okrelania momentw zbienych w programie: 1. Komunikaty wysyane midzy procesorami 2. Wtki systemu operacyjnego Istniej inne metody, ale powysze s najszerzej wykorzystywane. Naley zapamita, e sposb okrelania zbienoci nie musi zalee od warstwy sprztowej. Zarwno komunikaty, jak i wtki mog zosta zaimplementowane w systemach SMP, NUMA-SMP jak i klastrach -- mimo e, jak wyjaniono poniej, istotnymi kwestiami s efektywno i przenono. 44..33..22..11.. KKoommuunniikkaattyy Z punktu widzenia historii, technologia przekazywania komunikatw odzwierciedla projekty wczesnych komputerw rwnolegych z lokaln pamici. Komunikaty wymagaj kopiowania danych, podczas gdy wtki korzystaj z danych na miejscu. Tajno i szybko kopiowania komunikatw to wartoci ograniczajce ten model. Komunikat jest stosunkowo prosty: jakie dane oraz procesor docelowy. Najpopularniejsze API do przesyania komunikatw to: PVM lub MPI. Przekazywanie komunikatw moe zosta efektywnie zaimplementowane przy wykorzystaniu wtkw, a komunikaty pracuj rwnie dobrze na maszynach SMP i pomidzy klastrami maszyn. Zalet korzystania z komunikatw na maszynach SMP, w przeciwiestwie do wtkw, jest to, e jeli zdecydujesz si na korzystanie w przyszoci z klastrw, dodawanie maszyn i skalowanie aplikacji bdzie bardzo atwe. 44..33..22..22.. WWttkkii Wtki systemu operacyjnego zostay stworzone, poniewa projekty SMP (symmetrical multiprocessing -- symetryczna wieloprocesowo) dopuszczay bardzo szybk komunikacj poprzez pami dzielon, oraz synchronizacj pomidzy zbienymi fragmentami programu. Wtki dziaaj bardzo dobrze na systemie SMP, poniewa komunikuje si on poprzez pami dzielon. Z tego powodu uytkownik musi oddzieli dane lokalne od globalnych, w przeciwnym wypadku programy nie bd dziaa poprawnie. W przeciwiestwie do komunikatw, wiele operacji kopiowania moe zosta wyeliminowanych przez uycie wtkw, poniewa dane s dzielone pomidzy procesami (wtkami). Linux wspomaga wtki POSIX. W przypadku wtkw problemem jest to, e trudno rozszerzy ich zasig poza maszyn SMP oraz, poniewa dane j dzielone pomidzy procesory, koherencja pamici podrcznej moe doprowadzi do opnie. Efektywne rozcignicie wtkw poza granic SMP wymaga technologi NUMA, ktra jest kosztowna i nie wspomagana bezporednio przez Linuxa. Implementacja wtkw poprzez wiadomoci jest moliwa (http://syntron.com/ptools/ptools_pg.htm), ale wtki s czsto nieefektywne gdy zaimplementowane przy uyciu komunikatw. Mona wycignc nastpujce wnioski jeli chodzi o wydajno: wydajno na wydajno w skalowalno maszynie SMP klastrze ----------- --------------- ----------- messages dobra najlepsza najlepsza threads najlepsza saba* saba* * wymaga kosztownej technologii NUMA. 44..33..33.. AArrcchhiitteekkttuurraa aapplliikkaaccjjii Aby uruchomi aplikacj rwnolegle na wielu CPU, musi ona zosta rozbita na konkurencyjne czci. Standardowa jednoprocesorowa aplikacja nie bdzie dziaa szybciej na wielu procesorach. Istniej pewne narzdzia i kompilatory, ktre potrafi podzieli program, ale przeksztacenie kodu na rwnolegy nie jest operacj "plug and play". Zalenie od aplikacji, moe to by proste, ekstremalnie trudne a w pewnych przypadkach nawet niemoliwe, ze wzgldu na zalenoci algorytmw. Zanim zostan omwione kwestie sprztowe, koncepcja musi zosta wprowadzona. Before the software issues can be addressed the concept of Suitability needs to be introduced. 44..44.. SSuuiittaabbiilliittyy Odpowiedzi na wikszo pyta dotyczcych przetwarzania rwnolegego jest: "Wszystko zaley od zastosowania." Zanim przejdziemy do tego tematu, naley dokona jeszcze jednego bardzo wanego podziau -- rnicy pomidzy KONKURENCYJNYM i RWNOLEGYM. Dla celw tej dyskusji zdefiniujemy te dwa pojcia nastpujco: KONKURENCYJNE czci programu, to te, ktre mog zosta wykonane niezalenie. RWNOLEGE czci programu, to te KONKURENCYJE czci, ktre s wykonywane na osobnym procesorze w tym samym czasie. Rnica jest bardzo wana, poniewa KONKURENCJA to wasno programu, a efektywna RWNOLEGO, to wano maszyny. Na og wykonywanie RWNOLEGE powoduje przyspieszenie pracy. Czynnikiem ograniczajcym wydajno systemu rwnolegego jest prdko komunikacji i opnienie pomidzy wzami (opnienie wystpuje take w wielowtkowych aplikacji SMP, z powodu koherencji pamici podrcznej). Wikszo programw testujcych wydajno jest wysoce rwnolega, a komunikacja i opnienia nie s wskim gardem. Ten tym zadania mona nazwa "typowo rwnolegym". Inne aplikacje nie s takie proste i wywoanie KONKURENCYJNYCH czci programu RWNOLEGLE moe spowolni go, zmniejszajc tym samym zysk z innych KONKURENCYJNYCH czci. Mwic prosto, koszt czasu komunikacji musi zwrci si w oszczdnociach czasu obliczenia, w przeciwnym wypadku RWNOLEGE wykonanie KONKURENCYJNEJ czci jest nieefektywne. Zadaniem programisty jest stwierdzenie, ktre KONKURENCYJNE czci programu POWINNY by wykonane RWNOLEGLE, a ktre NIE. Od odpowied na te pytania zaley EFEKTYWNO aplikacji. Poniszy wykres podsumowuje sytuacj: | * | * | * % | * zasto- | * sowa | * | * | * | * | * | * | **** | **** | ******************** +----------------------------------- czas komunikacji/czas przetwarzania W idealnym komputerze rwnolegym, wskanik komunikacji/przetwarzania jest rwny i wszystko, co jest KONKURENCYJNE moe zosta zaimplementowane RWNOLEGLE. Niestety, rzeczywiste komputery rwnolege, wczajc w to maszyny z pamici dzielon, podlegaj efektom pokazanym na wykresie. Podczas projektowania Beowulfa, uytkownicy powinni zapamita ten wykres, poniewa efektywno rwnolega zaley do wskanika czasu komunikacji do czasu przetwarzania dla KONKRETNEGO KOMPUTERA RWNOLEGEGO. Aplikacje mog by przenone, ale nie mona zagwarantowa e bd efektywne na innej platformie. NA OG NIE ISTNIEJE PRZENONY I EFEKTYWNY PROGRAM RWNOLEGY Jest jeszcze jedna konsekwencja powyszego wykresu. Jako e efektywno zaley od wskanika komunikacji/przetwarzania, zmiana jedynie jednego elementu wskanika nie musi koniecznie powodowa wzrostu szybkoci. Zmiana prdkoci procesora, nie zmieniajc czasu komunikacji, moe mie nietypowy wpyw na program. Na przykad podwojenie albo potrojenie prdkoci CPU, zachowujc t sam prdko komunikacji, moe sprawi, e poprzednio efektywne RWNOLEGE fragmenty programu stan si bardziej efektywne gdy zostan uruchomione SEKWENCYJNIE. To znaczy uruchomienie poprzednio RWNOLEGYCH fragmentw jako SEKWENCYJNE moe okaza si lepsze. Wykonywanie nieefektywnych czci programu rwnolegle uniemoliwia uzyskanie maksymalnej prdkoci. Tak wic dodajc szybszy procesor, moesz spowolni aplikacj (CPU nie wykorzystuje swojej penej szybkoci). ZMIANA CPU NA SZYBSZY MOE SPOWOLNI APLIKACJ Podsumowujc, aby wiedzie, czy mona wykorzysta rodowisko rwnolege, naley przyjrze si, czy konkretna maszyna pasuje do aplikacji. Musisz wzi pod uwag wiele kwestii, takich jak prdko CPU, kompilator, API przekazywania komunikatw, sie itd. Naley zauway, e zwyke profilowanie aplikacji nie zamyka sprawy. Moesz zidentyfikowa fragment programu wymagajcy wielu oblicze, ale nie znasz kosztw komunikacji tego fragmentu. Moe si zdarzy, e koszty komunikacji sprawi, e kod rwnolegy nie bdzie efektywny. Ostatnia uwaga na temat pewnego niedomwienia. Czsto twierdzi si, e program "jest RWNOLEGY", ale w rzeczywistoci jedynie zidentyfikowano KONKURENCYJNE fragmenty. Z powodw podanych powyej program nie jest RWNOLEGY. Efektywna RWNOLEGO jest wasnoci maszyny. 44..55.. PPiissaanniiee ii pprrzzeennoosszzeenniiee oopprrooggrraammoowwaanniiaa rrwwnnoolleeggeeggoo Gdy zdecydujesz, e potrzebujesz przetwarzania rwnolegego i chcesz zaprojektowa i zbudowa Beowulfa, dobrym pomysem jest kilka chwil zastanowienia nad aplikacj, z poszanowaniem wczeniejszych uwag. No og moesz zrobi dwie rne rzeczy: 1. I dalej i skonstruowa Beowulfa KLASY I a nastpnie "dopasowa" do niego swoj aplikacj, lub korzysta z istniejcej rwnolegej aplikacji o ktrej wiesz, e pracuje na Beowulfie (ale pamitaj o kwestiach efektywnoci i przenonoci poruszanych wczeniej). 2. Przyjrze si aplikacjom ktre maj dziaa na Beowulfie i na ich podstawie dokona wyboru sprztu i oprogramowania. W kadym z przypadkw w pewnym momencie musisz zastanowi si nad kwestiami efektywnoci. Na og powiniene zrobi trzy rzeczy: 1. Wyznaczy konkurencyjne czci programu 2. Obliczy rwnoleg efektywno 3. Opisa konkurencyjne czci programu Przyjrzyjmy si im po kolei. 44..55..11.. WWyyzznnaacczzaanniiee kkoonnkkuurreennccyyjjnnyycchh cczzccii pprrooggrraammuu Ten krok jest czsto nazywany "urwnolegleniem programu". Decyzje podejmiemy dopiero w kroku 2. Teraz musisz jedynie wyznaczy zalenoci pomidzy danymi. Z praktycznego punktu widzenia, aplikacje mog wykazywa dwa typy konkurencji: oblicze i wejcia/wyjcia. Mimo e w wielu wypadkach konkurencje oblicze i wejcia/wyjcia s niezalene, to istniej aplikacje, ktre wymagaj obu. Istniej narzdzia, ktre mog wykona analiz konkurencji istniejcej aplikacji. Wiele z tych narzdzi jest projektowanych dla FORTANa. S dwa powody dla ktrych uywa si FORTAN: historycznie wikszo aplikacji obliczeniowych byo pisanych w FORTANie oraz jest on atwiejszy w analizie. Jeli nie istniej adne narzdzia, to ten krok moe okaza si do trudny dla istniejcych aplikacji. 44..55..22.. OObblliicczzaanniiee eeffeekkttyywwnnooccii rrwwnnoolleeggeejj Bez pomocy narzdzi, ten krok wymaga by uycia metody prb i bdw, lub po prostu zgadywania. Jeli bierzesz pod uwag pojedyncz aplikacj, postaraj si okreli czy jest ograniczona przez CPU (granica obliczeniowa) lub przez twardy dysk (granica wejcia/wyjcia). Wymagania Beowulfa mog by do rne, zalenie od potrzeb. Na przykad problem ograniczony obliczeniowo moe wymaga kilku bardzo szybkich CPU i szybkiej sieci z maym opnieniem, gdy problem ograniczony przez wejcie/wyjcie moe dziaa lepiej na wolniejszym CPU i szybkiej sieci Ethernet. To zalecenem czsto zaskakuje wiele osb, poniewa zwykle uwaa si, e szybszy procesor jest zawsze lepszy. Jest to prawd jeli dysponuje si nieograniczonym budetem, jednak w przypadku prawdziwych systemw powinno si minimalizowa koszty. Dla problemw ograniczonych przez wejcie/wyjcie istnieje prosta zasada (zwana Prawem Eadline'a-Dedkova) ktra jest do pomocna: Z dwch komputerw rwnolegych o tej samym zsumowanym wskaniku wydajnoci CPU lepsz wydajno dla aplikacji z dominujcymi operacjami wejcia/wyjcia bdzie mia ten, ktry posiada wolniejsze procesory (i prawdopodobnie take wolniejsz komunikacj midzyprocesorow). Dowd tego prawa wychodzi poza zakres tego dokumenty, jednak moe zainteresowa ci dokument _P_e_r_f_o_r_m_a_n_c_e _C_o_n_s_i_d_e_r_a_t_i_o_n_s _f_o_r _I_/_O_-_D_o_m_i_n_a_n_t _A_p_p_l_i_c_a_t_i_o_n_s _o_n _P_a_r_a_l_l_e_l _C_o_m_p_u_t_e_r_s (w formacie Postscript 109K) (ftp://www.plogic.com/pub/papers/exs-pap6.ps) Gdy ju okrelie typ konkurencji aplikacji, musisz obliczy jak efektywna bdzie ona rwnolegle. Patrz dzia ``Oprogramowanie'' aby znale opis narzdzi programowych. W razie nieobecnoci narzdzi, moesz prbowa po prostu zgadn. Jeli ptla obliczeniowa trwa minuty, a dane mog zosta przesane w cigu sekund, to prawdopodobnie jest to dobry kandydat na program rwnolegy. Ale pamitaj, jeli rozbijesz 16-minutow ptle na 32 czci, a transfer danych wymaga kilku sekund, to zaczyna robi si ciasno. 44..55..33.. OOppiissyywwaanniiee kkoonnkkuurreennccyyjjnnyycchh cczzccii pprrooggrraammuu Istnieje kilka sposobw opisu konkurencyjnych czci programu: There are several ways to describe concurrent parts of your program: 1. Wyrane wykonanie rwnolege 2. Domniemane wykonanie rwnolege Te dwa sposoby rni si gwnie tym, e rwnolego "wyrana" jest okrelana przez uytkownika, a domniemana jest okrelana przez kompilator. 44..55..33..11.. MMeettooddyy wwyyrraannee S to po prostu metody, w ktrych uytkownik musi zmodyfikowa kod rdowy specjalnie dla komputera rwnolegego. Uytkownik musi doda obsug komunikatw korzystajc z PVM lub MPI, albo wtkw korzystajc z wtkw POSIX (pamitaj jednak e wtki nie dziaaj na komputerach SMP). Metody wyrane s bardzo trudne w implementacji i poprawianiu bdw. Uytkownicy najczciej osadzaj wyrane wywoania funkcji w standardowym kodzie rdowym FORTAN 77 lub C/C++. Biblioteka MPI dodaje pewne funkcje uatwiajce implementacj standardowych rwnolegych metod (np. funkcje scatter/gather). Dodatkowo moliwe jest take uycie standardowych bibliotek napisanych dla rwnolegych komputerw. Pamitaj jednak, e przenono nie idzie w parze z efektywnoci. Ze wzgldw historycznych, wikszo programw operujcych na liczbach zostao napisanych w FORTANie. Z tego powodu FORTAN posiada najwiksze wsparcie (narzdzia, biblioteki itp.) dla przetwarzania rwolegego. Teraz wielu programistw korzysta z C, lub przepisuje istniejce programy FORTAN w C, jako e C dziaa szybciej. Moe jest prawd, e C jest najblisze uniwersalnemu kodowi maszynowemu, posiada jednak kilka powanych wad. Uycie wskanikw w C znacznie utrudnia wyznaczanie zalenoci pomidzy danymi. Automatyczna analiza wskanikw jest bardzo trudna. Jeli dysponujesz gotowym programem w FORTANie i mylisz, e mgby uczyni go rwnolegym w przyszoci -- NIE KONWERTUJ GO NA C! 44..55..33..22.. DDoommnniieemmaannee mmeettooddyy Domniemane metody to te, w ktrych uytkownik pozostawia niektre (lub wszystkie) decyzje dotyczce rwnolegoci kompilatorowi. Przykadem jest FORTAN 90, High Performance FORTAN, Bulk Synchronous Parallel (BSP) oraz caa lista metod rozwijanych obecnie. Metody domylne wymagaj od uytkownika podania pewnych informacji na temat konkurencyjnej natury aplikacji, ale to kompilator podejmie nastpnie decyzje jak wykonywa t konkurencj rwnolegle. Te metody gwarantuj pewien stopie przenonoci i efektywnoci, jednak cigle nie istnieje najlepszy sposb opisu problemu konkurencyjnego dla komputera rwnolegego. 55.. ZZaassoobbyy ddoottyycczzccee BBeeoowwuullffaa 55..11.. PPuunnkkttyy ssttaarrttoowwee +o Lista dyskusyjna Beowulf. Aby si zapisa napisz list do beowulf- request@cesdis.gsfc.nasa.gov ze sowem _s_u_b_s_c_r_i_b_e w treci listu. +o Beowulf Homepage http://www.beowulf.org +o Extreme Linux http://www.extremelinux.org +o Extreme Linux Software from Red Hat http://www.redhat.com/extreme 55..22.. DDooccuummeennttaattiioonn +o Najnowsza wersja Beowulf HOWTO http://www.sci.usq.edu.au/staff/jacek/beowulf. +o Building a Beowulf System http://www.cacr.caltech.edu/beowulf/tutorial/building.html +o Jacek's Beowulf Links http://www.sci.usq.edu.au/staff/jacek/beowulf. +o Beowulf Installation and Administration HOWTO (DRAFT) http://www.sci.usq.edu.au/staff/jacek/beowulf. +o Linux Parallel Processing HOWTO http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html 55..33.. DDookkuummeennttyy +o Chance Reschke, Thomas Sterling, Daniel Ridge, Daniel Savarese, Donald Becker, and Phillip Merkey _A _D_e_s_i_g_n _S_t_u_d_y _o_f _A_l_t_e_r_n_a_t_i_v_e _N_e_t_w_o_r_k _T_o_p_o_l_o_g_i_e_s _f_o_r _t_h_e _B_e_o_w_u_l_f _P_a_r_a_l_l_e_l _W_o_r_k_s_t_a_t_i_o_n. Proceedings Fifth IEEE International Symposium on High Performance Distributed Computing, 1996. http://www.beowulf.org/papers/HPDC96/hpdc96.html +o Daniel Ridge, Donald Becker, Phillip Merkey, Thomas Sterling Becker, and Phillip Merkey. _H_a_r_n_e_s_s_i_n_g _t_h_e _P_o_w_e_r _o_f _P_a_r_a_l_l_e_l_i_s_m _i_n _a _P_i_l_e_-_o_f_-_P_C_s. Proceedings, IEEE Aerospace, 1997. http://www.beowulf.org/papers/AA97/aa97.ps +o Thomas Sterling, Donald J. Becker, Daniel Savarese, Michael R. Berry, and Chance Res. _A_c_h_i_e_v_i_n_g _a _B_a_l_a_n_c_e_d _L_o_w_-_C_o_s_t _A_r_c_h_i_t_e_c_t_u_r_e _f_o_r _M_a_s_s _S_t_o_r_a_g_e _M_a_n_a_g_e_m_e_n_t _t_h_r_o_u_g_h _M_u_l_t_i_p_l_e _F_a_s_t _E_t_h_e_r_n_e_t _C_h_a_n_n_e_l_s _o_n _t_h_e _B_e_o_w_u_l_f _P_a_r_a_l_l_e_l _W_o_r_k_s_t_a_t_i_o_n. Proceedings, International Parallel Processing Symposium, 1996. http://www.beowulf.org/papers/IPPS96/ipps96.html +o Donald J. Becker, Thomas Sterling, Daniel Savarese, Bruce Fryxell, Kevin Olson. _C_o_m_m_u_n_i_c_a_t_i_o_n _O_v_e_r_h_e_a_d _f_o_r _S_p_a_c_e _S_c_i_e_n_c_e _A_p_p_l_i_c_a_t_i_o_n_s _o_n _t_h_e _B_e_o_w_u_l_f _P_a_r_a_l_l_e_l _W_o_r_k_s_t_a_t_i_o_n. Proceedings,High Performance and Distributed Computing, 1995. http://www.beowulf.org/papers/HPDC95/hpdc95.html +o Donald J. Becker, Thomas Sterling, Daniel Savarese, John E. Dorband, Udaya A. Ranawak, Charles V. Packer. _B_E_O_W_U_L_F_: _A _P_A_R_A_L_L_E_L _W_O_R_K_S_T_A_T_I_O_N _F_O_R _S_C_I_E_N_T_I_F_I_C _C_O_M_P_U_T_A_T_I_O_N. Proceedings, International Conference on Parallel Processing, 95. http://www.beowulf.org/papers/ICPP95/icpp95.html +o Dokumenty na stronie Beowulf http://www.beowulf.org/papers/papers.html 55..44.. OOpprrooggrraammoowwaanniiee +o PVM - Parallel Virtual Machine http://www.epm.ornl.gov/pvm/pvm_home.html +o LAM/MPI (Local Area Multicomputer / Message Passing Interface) http://www.mpi.nd.edu/lam +o BERT77 - FORTRAN program konwertujcy http://www.plogic.com/bert.html +o Oprogramowanie ze strony Beowulf Project http://beowulf.gsfc.nasa.gov/software/software.html +o Jacek's Beowulf-utils ftp://ftp.sci.usq.edu.au/pub/jacek/beowulf- utils +o bWatch - program monitorujcy klaster http://www.sci.usq.edu.au/staff/jacek/bWatch 55..55.. MMaasszzyynnyy BBeeoowwuullff +o Avalon skada si z 140 procesorw Alpha, 36GB RAM i jest prawdopodobnie najszybsz maszyn Beowulf, osigajc prdko 47.7Gflops i zajmujc 144-te miejsce w rankingu Top 500. http://swift.lanl.gov/avalon/ +o Megalon-A Massively PArallel CompuTer Resource (MPACTR) skada si z 14 poczwrnych wzw Pentium Pro 200 i 14 GB RAM. http://megalon.ca.sandia.gov/description.html +o theHIVE - Highly-parallel Integrated Virtual Environment jest innym szybkim superkomputerem Beowulf. theHIVE skada si z 64 wzw, 128 CPU posiadajc w sumie 4GB RAM. http://newton.gsfc.nasa.gov/thehive/ +o Topcat to o wiele mniejsza maszyna, skada si z 16 CPU i 1.2GB RAM. http://www.sci.usq.edu.au/staff/jacek/topcat +o MAGI cluster - to bardzo interesujca strona z wieloma dobrymi odnonikami. http://noel.feld.cvut.cz/magi/ 55..66.. IInnnnee iinntteerreessuujjccee ssttrroonnyy +o SMP Linux http://www.linux.org.uk/SMP/title.html +o Paralogic - kup Beowulfa http://www.plogic.com 55..77.. HHiissttoorriiaa +o Legends - Beowulf http://legends.dm.net/beowulf/index.html +o The Adventures of Beowulf http://www.lnstar.com/literature/beowulf/beowulf.html 66.. KKoodd rrddoowwyy 66..11.. ssuumm..cc /* Jacek Radajewski jacek@usq.edu.au */ /* 21/08/1998 */ #include #include int main (void) { double result = 0.0; double number = 0.0; char string[80]; while (scanf("%s", string) != EOF) { number = atof(string); result = result + number; } printf("%lf\n", result); return 0; } 66..22.. ssiiggmmaassqqrrtt..cc /* Jacek Radajewski jacek@usq.edu.au */ /* 21/08/1998 */ #include #include int main (int argc, char** argv) { long number1, number2, counter; double result; if (argc < 3) { printf ("usage : %s number1 number2\n",argv[0]); exit(1); } else { number1 = atol (argv[1]); number2 = atol (argv[2]); result = 0.0; } for (counter = number1; counter <= number2; counter++) { result = result + sqrt((double)counter); } printf("%lf\n", result); return 0; } 66..33.. pprruunn..sshh #!/bin/bash # Jacek Radajewski jacek@usq.edu.au # 21/08/1998 export SIGMASQRT=/home/staff/jacek/beowulf/HOWTO/example1/sigmasqrt # $OUTPUT must be a named pipe # mkfifo output export OUTPUT=/home/staff/jacek/beowulf/HOWTO/example1/output rsh scilab01 $SIGMASQRT 1 50000000 > $OUTPUT < /dev/null& rsh scilab02 $SIGMASQRT 50000001 100000000 > $OUTPUT < /dev/null& rsh scilab03 $SIGMASQRT 100000001 150000000 > $OUTPUT < /dev/null& rsh scilab04 $SIGMASQRT 150000001 200000000 > $OUTPUT < /dev/null& rsh scilab05 $SIGMASQRT 200000001 250000000 > $OUTPUT < /dev/null& rsh scilab06 $SIGMASQRT 250000001 300000000 > $OUTPUT < /dev/null& rsh scilab07 $SIGMASQRT 300000001 350000000 > $OUTPUT < /dev/null& rsh scilab08 $SIGMASQRT 350000001 400000000 > $OUTPUT < /dev/null& rsh scilab09 $SIGMASQRT 400000001 450000000 > $OUTPUT < /dev/null& rsh scilab10 $SIGMASQRT 450000001 500000000 > $OUTPUT < /dev/null& rsh scilab11 $SIGMASQRT 500000001 550000000 > $OUTPUT < /dev/null& rsh scilab12 $SIGMASQRT 550000001 600000000 > $OUTPUT < /dev/null& rsh scilab13 $SIGMASQRT 600000001 650000000 > $OUTPUT < /dev/null& rsh scilab14 $SIGMASQRT 650000001 700000000 > $OUTPUT < /dev/null& rsh scilab15 $SIGMASQRT 700000001 750000000 > $OUTPUT < /dev/null& rsh scilab16 $SIGMASQRT 750000001 800000000 > $OUTPUT < /dev/null& rsh scilab17 $SIGMASQRT 800000001 850000000 > $OUTPUT < /dev/null& rsh scilab18 $SIGMASQRT 850000001 900000000 > $OUTPUT < /dev/null& rsh scilab19 $SIGMASQRT 900000001 950000000 > $OUTPUT < /dev/null& rsh scilab20 $SIGMASQRT 950000001 1000000000 > $OUTPUT < /dev/null&

Wyszukiwarka

Podobne podstrony:
beowulf howto pl 3
beowulf howto pl 1
beowulf howto pl 6
beowulf howto pl
beowulf howto pl 4
beowulf howto pl 2
beowulf howto pl 5
beowulf howto pl
bootdisk howto pl 8
PPP HOWTO pl 6 (2)
NIS HOWTO pl 1 (2)
cdrom howto pl 1
jtz howto pl 5
Keystroke HOWTO pl (2)
PostgreSQL HOWTO pl 14
printing howto pl 5
debian apt howto pl
Kernel HOWTO pl 12 (2)
XFree86 HOWTO pl (3)

więcej podobnych podstron