Twój komputer w służbie nauki - obliczenia rozproszone

Z ogromnej mocy obliczeniowej, którą dysponują procesory w naszych komputerach, w typowych zastosowaniach wykorzystujemy zaledwie ułamek. Można to zmienić, biorąc udział w tworzeniu prawdziwej nauki. Jak to zrobić? Odpowiedź znajdziesz poniżej.

Zużycie mocy obliczeniowej w typowych zastosowaniach jest niewielkie. Większość ogromnego potencjału współczesnych procesorów marnuje się, chociaż można go łatwo wykorzystać do szczytnych celów.

Zużycie mocy obliczeniowej w typowych zastosowaniach jest niewielkie. Większość ogromnego potencjału współczesnych procesorów marnuje się, chociaż można go łatwo wykorzystać do szczytnych celów.

Jeśli w danej chwili nie wykonujemy skomplikowanych obliczeń ani nie gramy w wyrafinowane gry, procesor naszego komputera pozostaje praktycznie bezczynny. Korzystanie z edytora tekstu czy innych programów z pakietu Office, serfowanie po Internecie, sciąganie plików z sieci P2P, proste gry - wszystko to nie stanowi dla niego wielkiego wyzwania. Można to łatwo sprawdzić, uruchamiając menedżer zadań (naciśnij Ctrl+Alt+Del) np. podczas pisania w Wordzie. Wskaźnik użycia procesora nie powinien przekroczyć 5% na większości współczesnych komputerów. Pozostałe 95% mocy obliczeniowej zwyczajnie się marnuje. Oczywiście im szybszy procesor, tym częściej "ma wolne", pełniąc głównie rolę miniaturowego piecyka. W tym miejscu nieodparcie nasuwa się niedorzeczna myśl, że... nasze komputery po prostu się nudzą.

Spójrzmy na to w ten sposób: jaki sens ma kupowanie komputerów z coraz szybszymi procesorami, skoro później przeważająca część ich gigantycznej mocy obliczeniowej pozostaje niewykorzystana? To tak, jakby wielkim TIR-em rozwozić pizzę - cóż za marnotrawstwo.

Na szczęście potencjałem drzemiącym w naszych procesorach można się łatwo podzielić, przystępując do jednego lub kilku projektów realizowanych w oparciu o obliczenia rozproszone. Uczestnictwo w nich jest dobrowolne i bezpłatne. Jeśli zdecydujesz się na ten krok, to kto wie - może w niedalekiej przyszłości staniesz się współautorem jakiegoś doniosłego odkrycia naukowego?

Na czym to polega?

Aby przybliżyć temat, posłużymy się porównaniem. Załóżmy, że mamy do czynienia z biurem tłumaczeń, które dostało zlecenie na przetłumaczenie stu tysięcy stron. Jeden tłumacz ślęczałby nad tym kilka lat, zespół kilkudziesięciu osób - znacznie krócej. Biuro dzieli więc zadanie na małe części i rozsyła do poszczególnych tłumaczy. Ci odsyłają gotowe tłumaczenia, które w biurze są łączone w całość. Jeśli ktoś zachoruje albo nawali, jego część zadania zostanie przekazana innemu wykonawcy. Tłumacze kontaktują się z biurem zdalnie, nie znają się nawzajem ani nie wiedzą, ilu ludzi realizuje projekt.

SETI@Home - czcigodny protoplasta

Historia obliczeń rozproszonych jest tak stara, jak sama koncepcja sieci komputerowych. Pierwsze próby wykorzystania grup komputerów do wykonywania wspólnych obliczeń miały miejsce jeszcze w czasach ARPANET-u, a więc w latach 60. ubiegłego stulecia. Jednak tak naprawdę idea ta mogła się urzeczywistnić dopiero wtedy, gdy Internet stał się siecią publiczną (na początku był to tajny projekt wojskowy), a komputery PC rozpowszechniły się na całym świecie. Prawdziwa eksplozja zainteresowania obliczeniami rozproszonymi nastąpiła pod koniec lat 90., gdy powstał legendarny już dziś projekt SETI@Home.

Jego założeniem było zgromadzenie wolnych mocy obliczeniowych pojedynczych pecetów i wykorzystanie ich do analizy danych zbieranych przez radioteleskopy astronomiczne. Poszukiwania miały na celu znalezienie sygnałów, które mogłyby pochodzić od cywilizacji pozaziemskich. Jak dotąd nie udało się znaleźć choćby jednego dowodu na istnienie "zielonych ludzików", ale SETI@Home okazał się doskonałym poligonem doświadczalnym dla kolejnych tego typu projektów. Dzięki niemu przetestowano wiele różnych sposobów komunikacji pomiędzy serwerem a klientami oraz wypróbowano, i później zoptymalizowano, liczne wersje oprogramowania.

Taka właśnie zasada podzielonej na fragmenty pracy zespołowej ma zastosowanie w przypadku żmudnych obliczeń. Można je wykonać na jednym komputerze, co trwałoby bardzo długo, lub na wielu, dzięki czemu zyskujemy na czasie. Rolę koordynatora pełni komputer centralny (serwer), który przydziela jednostki pracy innym komputerom (klientom). Te, gdy zakończą swoją część zadania, odsyłają mu wyniki. Serwer łączy je w całość, analizuje i przygotowuje kolejne porcje obliczeń do wykonania. I tak w kółko, aż do skutku. Oczywiście, żeby to wszystko miało ręce i nogi, zarówno serwer, jak i klienty muszą być wyposażone w odpowiednie oprogramowanie - zostanie ono omówione w dalszej części artykułu.

Jak to działa w praktyce?

Aby użyczyć wolnych zasobów swojego procesora na potrzeby obliczeń rozproszonych, nie musisz być specjalistą z branży IT. Prawdę mówiąc, możesz w ogóle nie znać się na tych sprawach, tym bardziej że przypuszczalnie i tak nie dowiesz się dokładnie co w danej chwili oblicza twój komputer. Cały problem sprowadza się więc do wyboru projektu, w którym chciałbyś uczestniczyć.

Potem kolej na przygotowanie własnego komputera do udziału w zbiorowych obliczeniach. Jest to operacja bardzo prosta. Najpierw powinieneś się zarejestrować jako potencjalny uczestnik, a następnie ściągnąć i zainstalować odpowiedni program klienta, w zależności od systemu operacyjnego, którego używasz. Najlepiej wykonać wszystko krok po kroku, tak jak nakazuje instrukcja znajdująca się na stronie danego projektu. W tym momencie kończy się twoja aktywna rola. Cała reszta wykonywana jest przez komputer automatycznie. Po uruchomieniu programu połączy się on z odpowiednim serwerem, dostanie od niego porcję danych do obliczeń i rozpocznie pracę.

Zgodnie z filozofią obliczeń rozproszonych, współudział w nich nie powinien zaburzać normalnej pracy. Dlatego programy klienckie poszczególnych projektów mają domyślnie ustawiony najniższy możliwy priorytet dostępu do zasobów procesora. Jeśli wykonujesz na komputerze czynności, które wymagają pełnego zaangażowania procesora, klient obliczeń rozproszonych po prostu się nie uaktywni, pozostając w uśpieniu. Jeśli korzystasz z aplikacji wykorzystujących tylko część potencjału procesora, to pozostała jego część zostanie przeznaczona na "działalność charytatywną" w ramach wybranego projektu. A jeśli pójdziesz na kawę, zostawiając komputer włączony, obliczenia ruszą pełną parą.

Powyższy opis jest nieco uproszczony. Dużo zależy od konkretnego projektu, w którym bierzesz udział. W większości przypadków masz możliwość precyzyjnego dostosowania programu klienta do własnych wymagań. Na przykład, możesz zarezerwować dla niego określony procent mocy obliczeniowej, ustawić czy będzie działał stale w tle czy tylko w "trybie wygaszacza" (podczas bezczynności procesora), jak ma prezentować postępy działania na ekranie itp.

Co ciekawe, w obliczeniach rozproszonych możesz brać udział nawet wtedy, gdy nie jesteś podłączony do Internetu. Wówczas program kliencki wykonuje tylko bieżące obliczenia - wysłanie wyników i pobranie kolejnych danych następuje w momencie nawiązania połączenia z Siecią.

Obecnie we wszystkich projektach BOINC bierze udział ponad 1,6 miliona ochotników z 276 krajów. Najwięcej z USA, Niemiec, Wielkiej Brytanii i Kanady. Polska jest na 12. miejscu z liczbą ponad 30 tys. użytkowników.

Warto dodać, że nie ma większego znaczenia, jakim komputerem dysponujesz. Nawet starsze maszyny doskonale sobie radzą z obliczeniami, ponieważ programy klienckie są doskonale zoptymalizowane zarówno pod kątem procesora, jak i używanego systemu operacyjnego.


Zobacz również