BOINC – nie tylko obliczenia

Łukasz Świerczewski

O BOINC miałem już okazję pisać w FA nr 11/2010 (BOINC – jedynie ciekawostka? ). Po długim czasie postanowiłem odświeżyć temat, poruszając już nie samą stronę techniczną platformy Berkeley, lecz aspekt bardziej „społecznościowy”.

Wiele osób uczestniczyło w projekcie SETI@Home, który został uruchomiony 15 lat temu, 17 maja 1999 roku. W tamtych czasach udostępnienie komputera naukowcom z wielkiego amerykańskiego ośrodka naukowego było dla szarego internauty wirtualną przygodą. Badania prowadzone na udostępnionych komputerach dotyczyły (i cały czas dotyczą) dość nośnego tematu poszukiwania w falach radiowych sygnałów, które mogą pochodzić od obcych cywilizacji. Projekt zyskał popularność i pod tym względem porównanie do dzisiejszego Facebooka może być dość trafne. Należy jednak pamiętać, że to całkowicie różne systemy komputerowe, a SETI@Home rozpoczęło działalność w 1999 roku, gdy internet, np. w Polsce, dopiero raczkował. Niemniej SETI@Home i BOINC okazały się wielką inicjatywą, która już prawie od dwóch dekad skupia ludzi wokół obliczeń rozproszonych.

Wkład wymierny w punktach

Początkowo z obliczeń rozproszonych na platformie BOINC korzystał jedynie wcześniej wspomniany projekt SETI@Home. Dzisiaj, według statystyk BOINCStats, takich projektów jest ponad 77. Duża ich część jest prowadzona przez takie instytucje naukowe, jak: CERN, Uniwersytet Oksfordzki lub Uniwersytet Waszyngtoński. Są jednak także i kierowane przez osoby prywatne.

Za obliczenia wykonane w ramach BOINC użytkownik nagradzany jest punktami kredytowymi. Określają one, a raczej określać powinny, wniesiony przez daną osobę wkład w obliczenia naukowe. Nie jest to jednak rozwiązanie całkowicie klarowne. W ostatnich latach administratorzy projektów ujawnili wiele udanych lub nieudanych prób uzyskania nieprawidłowej (zbyt dużej) liczby punktów za określony czas procesora. Każdy taki atak przyczynia się jednak do poprawy luk w bezpieczeństwie i sprawiedliwym wynagradzaniu użytkowników. Ze względu na bardzo dużą różnicę wydajności trudno także porównać osiągnięcia punktowe uzyskane za pomocą kart graficznych (GPU – ang. Graphics Processing Unit) z tymi przydzielonymi za pracę wykonaną na zwykłym procesorze (CPU – ang. Central Processing Unit). Dla przykładu w ciągu jednej godziny karta graficzna może dla nas zdobyć aż 10 tys. punktów kredytowych. W takim samym czasie nowoczesny komputer, ale bez karty graficznej wspierającej obliczenia, uzyska np. tylko 200 punktów kredytowych. Bardzo duża różnica wynika z tego, że GPU w specyficznych warunkach faktycznie może być 50x szybsze od klasycznego procesora. Trudno więc o oczywiste porównanie wkładu, jeżeli jako punkt odniesienia mamy tylko jedną liczbę określającą punktację. Jedna osoba próg 50 tys. punktów może przekroczyć w godzinę, a inna bez użycia kart graficznych dopiero po miesiącu.

Musimy także wiedzieć, że wszystkie obliczenia można wykonać na CPU, ale już na karty graficzne nie da się przenieść programów niektórych projektów naukowych, ze względu na ich architekturę sprzętową. Część projektów więc musi się ograniczyć do zwykłych procesorów. Internauta i tak sam zdecyduje, do którego projektu BOINC dołączy. Czasem będzie musiał wybrać między bardziej wartościowymi obliczeniami dla nauki a trochę mniej interesującymi, ale za to bardziej opłacalnymi ze względu na punkty.

113 lat pracy

BOINC to nie tylko obliczenia. Według statystyk portalu Ohloh, tworzonego przez byłych pracowników Microsoftu, BOINC to 427 899 linii kodu źródłowego, które zostały napisane przez 81 programistów (dane aktualne na 29 stycznia 2014 roku). Gdy spróbujemy ocenić koszt stworzonego systemu według modelu inżynierii oprogramowania o nazwie COCOMODO, uzyskamy 113 roboczych lat pracy dla jednego programisty. Większość projektów wykorzystujących BOINC także udostępnia kody źródłowe własnych aplikacji lub modułów. Wielu liczydłowych (tak brzmi w polskim żargonie użytkowników BOINC nazwa osoby udostępniającej swój komputer do obliczeń) często próbuje zoptymalizować kod aplikacji tak, aby ta wykonała się szybciej. Czasem takie ulepszone oprogramowanie trafia do administratorów projektu, zostaje oficjalnie dodane i wykorzystywane standardowo na wszystkich komputerach w systemie.

Ciekawym pomysłem może być także ogłoszenie konkursu na najlepszy algorytm i jego implementację w danym języku programowania. Tego typu znacznie bardziej „społecznościowe” rozwiązanie użyto ostatnio na platformie OProject@Home (www.oproject.info) w podprojekcie Weird Engine, który ma na celu wyszukiwanie tzw. liczb dziwnych (ang. weird number). Po dwóch miesiącach i otrzymaniu kilku ciekawych propozycji okazało się, że najlepsze rozwiązanie nadesłał Francuz Cedric Den Drijver. Na bazie nowego pomysłu dodano do platformy BOINC nową wersję aplikacji, która była kilkaset razy szybsza od wcześniejszej. Zmiana ta w znaczący sposób przyczyniła się do rozwoju projektu OProject@Home. Dzięki niej obecnie można uzyskać lepsze wyniki niż przy wykorzystaniu wcześniejszej wersji oprogramowania wykonywanego na znacznie większej, niż było to kiedyś możliwe, liczbie komputerów.

Wniosek z tego może płynąć tylko taki, że czasem warto opisać jakiś problem i poprosić na forum międzynarodowym o pomoc w jego rozwiązaniu. Jeżeli zagadnienie jest dość ciekawe, to mimo że poziom wiedzy wymagany do jego rozwiązania jest bardzo duży i wykracza poza statystycznego studenta, możemy spodziewać się nadesłania odpowiedzi z jakiegoś zakątka świata. Dla twórcy projektu BOINC badania mogą poruszać się na dwóch torach. Pierwszym są właśnie czyste obliczenia wykonywane na tysiącach komputerów, a drugim praca nad coraz to doskonalszymi formami streszczonymi w jakimś języku programowania, które często wcale nie są pisane tylko przez oficjalnych deweloperów. Wkład w nie, podobnie jak i w same obliczenia, ma także całe społeczeństwo, które tworzy się wokół danego projektu.

Łukasz Świerczewski, absolwent informatyki w Państwowej Wyższej Szkole Informatyki i Przedsiębiorczości w Łomży. Aktualnie administrator dwóch projektów BOINC – OProject@Home oraz Beal@Home.