RSS

Spotkanie Forum HPC

Liczba odsłon: 21

Szybkie rozproszone przetwarzanie danych (HPC — ang. High Performance Computing) to dziedzina, w której firma Microsoft dotychczas nie miała zbyt atrakcyjnej oferty. Uczelnie i ośrodki obliczeniowe korzystają głównie z systemów linuksowych — tanich, mocno zoptymalizowanych i doskonale znanych administratorom sieci, silnie związanym emocjonalnie ze światem Uniksa.

Nic więc dziwnego, że firma zapowiedziała, opracowała, a teraz promuje nowy produkt ukierunkowany właśnie na szybkie równoległe obliczenia. Windows Compute Cluster Server 2003 przez wiele miesięcy budził całkiem sporo emocji; dzisiaj jest już dostępny, a w ramach jego promocji polska centrala korporacji zorganizowała we wtorek 4 grudnia jednodniowe seminarium pod nazwą Spotkanie Forum HPC.

Dojazd

Budynek Microsoftu w nocy Dojazd do Warszawy oznacza dla Ślązaka konieczność pobudki w środku nocy. Podróż – wraz z kolegami z Wydziału – rozpocząłem o godzinie 4:30 i przez 290 km jej tempo było rewelacyjne. Na 10 kilometrów przed siedzibą firmy (Aleje Jerozolimskie 195A) niestety ugrzęźliśmy w tradycyjnym podwarszawskim korku, przez co dotarliśmy na miejsce dopiero o godzinie 9:50. Na szczęście budynek z wielkim logo Microsoft trudno przegapić, a na jego zapleczu znajduje się hipermarket, na którego parkingu bez problemu znajdzie się miejsce do zaparkowania.

Wyjazd z Warszawy również był nieco uciążliwy, choć tym razem korek – trafiający nie na tamującą ruch sygnalizację świetlną, lecz na puste drogi wylotowe – rozładowywał się zdecydowanie szybciej. Mimo to droga powrotna trwała tylko o kilkadziesiąt minut krócej, niż dojazd pod siedzibę firmy.

Na ludziach z zewnątrz, przedmieścia Warszawy robią przerażające wrażenie: nieustające korki uliczne na szerokich przecież drogach, mnóstwo robót drogowych, ogłuszający hałas silników samochodowych i przeciętne oznakowanie kierunkowe. Codzienny dojazd do pracy w podmiejskich przedsiębiorstwach musi być przeżyciem nie do pozazdroszczenia. Z kolei przy potężnych odległościach (to jednak spore miasto...) często trudno marzyć o docieraniu do pracy na własnych nogach — co dla mnie jest czymś najzupełniej normalnym. Muszę przyznać, że z radością wyszedłem po powrocie na gliwickie ulice, może nie tak imponujące, lecz mniej zatłoczone, ładniej zabudowane i o niebo cichsze.

Program spotkania i prelegenci

Spotkanie przebiegało według wcześniej ustalonego – i bardzo skrupulatnie przestrzeganego przez cały dzień – programu (z niewiadomych przyczyn nazywanego przez Microsoft „agendą”, co zalatuje mi kalką językową):

Od Do Prelegent Tytuł, opis
9:00 9:30   Rejestracja i kawa poranna
9:30 10:15 Tomasz Kopacz Przegląd koncepcji i rozwiązań związanych z HPC
Sesja omawiała różne aspekty związane z tworzeniem wydajnych aplikacji: architekturę rozwiązań, wykorzystanie systemów klastrowych/farm serwerów, usług Excel Services, mechanizmu Windows Resource Manager, a także Windows Compute Cluster Server.
10:15 10:30   Przerwa
10:30 11:45 Sandro Cambruzzi Wprowadzenie do Windows Compute Cluster Server 2003
Sesja omawiała architekturę WCCS, możliwości tej platformy, a także ekosystem rozwiązań związanych z koncepcją HPC. Omówione były między innymi mechanizmy autoryzacji i narzędzia do zarządzania, a także sposób analizowania wydajności rozwiązań HPC. Część prezentacji pokazywała, w jaki sposób WCCS może działać przy użyciu „standardowych” mechanizmów komunikacyjnych (jak Ethernet) jak łatwo można użyć bardziej specjalizowanych rozwiązań (Infiniband czy Myrinet), a także w jaki sposób koncepcje związane z HPC można łatwo zintegrować z istniejącą infrastrukturą w przedsiębiorstwie.
11:45 12:00   Przerwa
12:00 13:00 Sandro Cambruzzi WCCS: wdrożenie, administracja i uwagi o utrzymaniu
W trakcie sesji przedstawione były zagadnienia związane z praktyczną implementacją WCCS (bezpieczeństwo, autoryzacja, podział zadań do wykonania i tym podobne). Pokazane zostały różne topologie i architektury rozwiązań WCCS.
13:00 14:00   Lunch
14:00 14:45 Tomasz Kopacz Uwagi o pisaniu aplikacji wykorzystujących WCCS
W trakcie tej sesji przedstawione zostały podstawy pisania rozwiązań, które mogą być uruchomione na klastrze WCCS. Omówiono między innymi elementy MPI (Message Passing Infrastructure) a także w jaki sposób skonfigurować Visual Studio do śledzenia i kompilacji aplikacji dla WCCS.
14:45 15:00   Przerwa
15:00 16:00 Vsevolod Ukrainsky Excel Services i WCCS
Sesja pokazywała, w jaki sposób można wykorzystać Microsoft Windows Compute Cluster Server 2003 do zwiększenia mocy obliczeniowej Excel Services (część Microsoft Office SharePoint Server 2007). W trakcie prezentacji pokazano pełne rozwiązanie przeznaczone do obliczeń i analiz, gdzie arkusz Excela jest często jednym z głównych narzędzi do podejmowania krytycznych decyzji biznesowych. Przykłady poruszały tematy specyficzne dla zagadnień finansowych.

Oto krótkie charakterystyki prelegentów:

Program spotkania, zamieszczone w nim skrótow opisy sesji oraz sylwetki prelegentów zostały skopiowane z materiałów informacyjnych firmy Microsoft.

Czego się spodziewałem

Gdy pierwszy raz usłyszałem o inicjatywie Microsoft mającej na celu stworzenie odmiany Windows Server przeznaczonej do szybkich, rozproszonych obliczeń numerycznych, oczami wyobraźni zobaczyłem zoptymalizowaną, pozbawioną większości zbędnych funkcji, specjalną wersję Windows. Bez interfejsu graficznego, zbędnego w tych zastosowaniach, bez funkcjonalności serwera Active Directory, bez wbudowanego kalkulatora czy notatnika — słowem, bez wszystkiego, co w takich zastosowaniach zajmowałoby tylko miejsce na dysku (i czasem w pamięci), przeszkadzając w głównym zadaniu: uruchamianiu pisanego we własnym zakresie oprogramowania obliczeniowego, wymagającego od systemu operacyjnego jedynie sprawnego systemu plików, szybkich mechanizmów komunikacyjnych i – co najważniejsze – wysokiej skalowalności na wyposażonych w dziesiątki rdzeni i gigabajty pamięci operacyjnej węzłach klastrów.

Wyobrażałem sobie również – zaprojektowane z gracją i łatwością obsługi, typową dla produktów Windows Server – narzędzia do automatycznego rozprowadzania programów uruchamianych równolegle. Dzięki nim nowa wersja programu – powstająca co parę minut w czasie intensywnej pracy nad kodem – byłaby rozprowadzana automatycznie w momencie uruchomienia z poziomu środowiska programistycznego, bez konieczności używania jakichkolwiek narzędzi czy replikowania systemu z jednego węzła na pozostałe.

To wszystko powinno zostać okraszone prostym w użyciu, nowoczesnym API umożliwiającym zlecanie zadań do wykonania, zbieranie wyników i odpytywanie klastra o aktualny stan poszczególnych zadań.

Windows Compute Cluster Services

Rzeczywistość – przynajmniej widziana w perspektywnie kolejnych plansz prezentacji – daleka była od tych moich oczekiwań.

Przede wszystkim, Windows Compute Cluster Server 2003 nie jest żadną specjalną wersją Windows. W zasadzie w edycję Compute Cluster możemy przekształcić dowolną wersję Windows Server 2003, instalując w niej moduł Compute Cluster Pack (preferowana jest wersja Standard systemu). Nie ma zatem mowy o braku zbędnych modułów, inaczej zoptymalizowanym jądrze systemu czy mniejszej zajętości pamięci: Compute Cluster Server dziedziczy wszystkie wady i zalety po znanym doskonale serwerowym systemie operacyjnym.

Po drugie, nie ma mowy (a przynajmniej nie było o tym mowy na żadnej z prezentacji) o automatycznym rozprowadzaniu modułów obliczeniowych pomiędzy węzłami klastra. Najpierw dobre wieści: moduł Remote Installation Service umożliwia szybkie instalowanie całego systemu operacyjnego i niezbędnego oprogramowania na poszczególnych węzłach. Wystarczy uruchomić na serwerze moduł umożliwiający rozprowadzanie systemu za pomocą DHCP Boot, kupić jednostki obliczeniowe wyposażone w funkcję ładowania systemu poprzez sieć, a węzeł nadzorujący Windows Compute Cluster Server automatycznie uruchomi instalację systemu na nowych węzłach, rozprowadzi wskazane pakiety oprogramowania i przyłączy nową maszynę do klastra. Na tym jednak kończy się automatyzacja: nie ma wykonywanej w razie potrzeby synchronizacji plików wykonywalnych. Jeżeli niezbędne jest uruchamianie coraz to nowej wersji programu, należy udostępnić pliki składowe za pomocą zasobu sieciowego.

Co według mnie najgorsze, Microsoft nie zaprezentował żadnego nowego API. Wszystko wskazuje na to, żę pisząc nowy program przeznaczony do realizacji równoległej musimy korzystać z kilkunastoletnich interfejsów API w rodzaju OpenMP czy MPI. Owszem, są one standardem przemysłowym, jest mnóstwo używających ich aplikacji i jeszcze więcej wspomagających ich wykorzystanie przykładów. Z drugiej strony jednak zostały one stworzone z myślą o zupełnie innym systemie operacyjnym i o językach programowania, które trudno nazwać eleganckimi czy przyszłościowymi. Microsoft dzisiaj nie promuje Fortranu czy C, skupiając się na C++ i C# — dlaczego zatem przygotowuje interfejs programistyczny, którego wykorzystanie w tych nowoczesnych językach wymaga korzystania z modułu dostosowującego, niekoniecznie elegancko integrującego się z językiem?

Mogę się mylić, ale kierunek, w którym poszła firma Microsoft, wydaje się dla mnie jasny: celem nie jest stworzenie nowego rozwiązania dla centrów obliczeniowych, tylko konkurencji dla systemów uniksowych, dotychczas wykorzystywanych w tych centrach. Nie mogło być zatem mowy o nowych API i promowaniu nowoczesnych języków programowania: trzeba było dostosować do Windows rozwiązania głęboko zakorzenione w świecie HPC, by zwolennicy Windows mogli spokojnie, powoli migrować swoje programy bez konieczności wprowadzania rewolucyjnych zmian w kodzie. Biorąc pod uwagę, że możliwe jest dodanie do Visual Studio kompilatora języka Fortran, drzwi (a raczej okna) do świata olbrzymich bibliotek numerycznych stoją dla koncernu otworem.


Sandro Cambruzzi omawia obsługiwane topologie sieci LAN łączącej węzły klastra

Administrowanie klastrem

Jeżeli chodzi o narzędzia do zarządzania klastrem, Microsoft stanął na wysokości zadania. Do dyspozycji administratora są kreatory umożliwiające wybór topologii sieci, przyłączanie i wyłączanie węzłow klastra, nadawanie użytkownikom uprawnień do uruchamiania zadań, przeglądanie kolejek realizowanych (i oczekujących na realizację) zadań i zmienianie priorytetu zadań w kolejce.

Administrator może na bieżąco podglądać obciążenie klastra, korzystając ze standardowego narzędzia Performance Monitor, obecnego w systemach Windows. Compute Cluster Pack instaluje dodatkowy moduł zbierający dane o węzłach klastra, który może służyć za źródło danych do automatycznie tworzonych raportów i wykresów.

Obsługiwanych jest kilka topologii sieciowych klastra, od najprostszych (wykorzystujących jedną wspólną warstwę fizyczną) przez pośrednie (z dwiema warstwami fizycznymi — jedną do rozprowadzania kodu i danych i drugą, obsługującą prywatną wymianę danych między węzłami) aż po najbardziej rozbudowane, z trzema warstwami fizycznymi. W większości zastosowań najprawdopodobniej stosowane będą dwa najprostsze rozwiązania, bowiem już gigabitowy Ethernet zapewnia pasmo wystarczające do większości zastosowań, a na horyzoncie mamy rozwiązania 10 Gbps i 100 Gbps. Z wykorzystaniem okablowania CAT6A można stworzyć sieć 10 Gbps w nawet całkiem sporym centrum przetwarzania danych bez konieczności sięgania po technologię światłowodową, ale i światłowody (i osprzęt) tanieją w niesamowitym tempie. Niepotrzebnie zatem według mnie wspominano co chwilę o możliwości stosowania połączeń Infiniband — będzie to może interesujące dla najważniejszych graczy na rynku (szczególnie tych, którzy zainwestowali już w odpowiedni sprzęt lub koniecznie potrzebują już dzisiaj dziesiątek gigabitów pasma czy dynamicznego reagowania na awarię poszczególnych łączy), jednak gros użytkowników będzie wiernych niezbyt wyrafinowanemu, lecz taniemu i dobrze poznanemu Ethernetowi.

Uruchamianie i testowanie

Duży nacisk firma położyła na dostosowanie swojego sztandarowego produktu dla programistów – Visual Studio – do potrzeb świata obliczeń równoległych. Obsługiwany jest standard OpenMP, zrzucający na kompilator obowiązek podziału programu na wykonywane równolegle (choć tylko w ramach jednego komputera) fragmenty. Również biblioteka MPI dostępna jest w wersji dostosowanej bezpośrednio do dołączania do projektu — choć żal, że nie ma specjalnych szablonów OpenMP i MPI, zdejmujących z początkujących programistów konieczność ręcznego doklejania nazw bibliotek w ustawieniach projektu.

Największe zmiany zaszły w module uruchomieniowym (ang. debugger) Visual Studio. Nowy zdalny moduł uruchomieniowy (ang. remote debugger) umożliwia centralne śledzenie fragmentów kodu uruchamianych na węzłach klastra, przerywanie działania w momencie wykonania określonego wiersza kodu (opcjonalnie tylko w przypadku wystąpienia podanego warunku) i wstrzymywanie działania wszystkich węzłów w czasie, gdy śledzimy jeden z nich. Można określić, które węzły chcemy poddawać śledzeniu i na których ustawiona pułapka powinna być respektowana, a nawet wyświetlić listę węzłów wykonujących równoległe fragmenty programu, wybrać jeden z nich i przyłączyć się do niego. Śledzenie programów wielowątkowych zawsze było uciążliwe, a rozproszonych — praktycznie niemożliwe; Visual Studio ze zdalnym modułem uruchomieniowym daje co najmniej podstawowe możliwości w tym zakresie, pozwalając zapomnieć o własnych rozwiązaniach monitorujących klaster.

Pierwsze zastosowania

Jedynym w zasadzie praktycznym przykładem zastosowania Compute Cluster Server, przedstawionym w czasie seminarium, był moduł Excel Services, będący częścią składową jednej z odmian Microsoft Office SharePoint Server 2007. Połączenie Excel Services z Compute Cluster Server całkowicie zmienia sposób, w jaki należy pojmować arkusz kalkulacyjny. Nie ma tu prostej płachty przechowywanej na dysku komputera i wyświetlanej w Excelu. Arkusz w Excel Services przechowywany jest w bazie SQL, przygotowywany z wykorzystaniem Visual Studio, a oglądany i uruchamiany z poziomu przeglądarki WWW — choćby z pokoju hotelowego w Kuala Lumpur. Oczywiście można też uzyskać dostęp do arkusza za pomocą samego Excela, w takim przypadku będzie on jednak pełnił wyłącznie rolę „przeglądarki arkusza”, zlecającej wszystkie zadania serwerowi.

Do wad należy brak obsługi Visual Basic for Applications, nie ma zatem mowy o prostym przeniesieniu gotowych aplikacji stworzonych na bazie arkuszy kalkulacyjnych i uruchomieniu ich na kilkunastu węzłach klastra. Preferowane są też zastosowania, w których na bazie jednego zestawu danych należy wykonać wiele identycznych, skomplikowanych obliczeń, których wyniki nie zależą od wyników pośrednich obliczeń realizowanych dla innych danych. Zaprezentowany w czasie prezentacji (niestety tylko na odtworzonej sekwencji wideo) przykład obliczeń finansowych uruchamiał symulację cen akcji na podstawie kilkuset zestawów danych, po czym w miarę docierania wyników obliczeń wprowadzał nowe wiersze do tabeli wyników i aktualizował wykres — wszystko w oknie klienta Excel 2007. Nie wiem, jakiej mocy obliczeniowej wymagał ten algorytm symulacyjny, ale widok wyników dodawanych do tabeli nie pojedynczo, lecz paczkami po kilka uzyskanych równolegle, robił wrażenie.

Excel Services nie ma wielkich aspiracji. Klastry przeznaczone do realizacji takich „szablonów arkuszy” nie powinny zawierać więcej niż kilkanaście węzłów. Straszliwy wydaje się też narzut działań niezbędnych do uruchomienia obliczeń: sam arkusz kalkulacyjny w systemie SharePoint Server zapisywany jest w bazie SQL, a dane przesyłane poszczególnym węzłom klastra formowane są w obiekty XML. Całość za bardzo sprawia wrażenie technologii stworzonej dla zasady „bo się da”, pod presją klientów z rynku finansowego, nie znających się na niczym innym niż Excel i uważających, że taniej jest kupić wielki „przyspieszacz” Excela i wcisnąć w niego arkusze z milionami komórek, niż zatrudnić programistę, który te same algorytmy zapisze w specjalizowanej aplikacji, choćby nawet zintegrowanej z Excelem, liczącej jednak to wszystko znacznie szybciej — i bez konieczności inwestowania w kilka wydajnych komputerów wraz z oprogramowaniem.

Organizacja

Microsoft wie, jak organizować tego typu spotkania. Do dyspozycji prelegentów była sala seminaryjna z projektorem (dającym niestety straszliwie ciemny obraz), nagłośnieniem i przyłączem sieciowym. Uczestnikom rozdano ankiety, w których można było ocenić każdy wykład z osobna oraz organizację imprezy. W przerwach z kolei – by wyrwani w środku nocy z łóżek uczestnicy nie posnęli przy pierwszym bardziej monotonnym fragmencie prelekcji – serwowano kawę, herbatę, pyszne ciastka i smakowite z wyglądu sałatki (nie wspominając o obiedzie w czasie długiej przerwy).

Podsumowanie

Dobrze, że firma Microsoft zainteresowała się rynkiem klastrów obliczeniowych. Konkurencji nigdy za wiele, spośród wielu konkurujących rozwiązań mogą się bowiem wyłonić funkcje całkiem nowe, znacząco zmieniające sposób, w jaki realizuje się przetwarzanie równoległe.

Dobrze, że organizowane są takie spotkania, jak seminarium Spotkanie Forum HPC. Osoby zajmujące się programowaniem równoległym mają przy takiej okazji możliwość podglądnięcia, jak dalekie są ich rozwiązania od oferty giganta rynku oprogramowania. Czasem może okazać się, że własne rozwiązanie, ściśle dostosowane do danego algorytmu, wcale nie jest dużo gorsze od przetestowanego, zoptymalizowanego, jednak uniwersalnego i często zbyt „dużego” rozwiązania standardowego.

Warto też obserwować w jakim kierunku rozwija się oprogramowanie wspomagające przetwarzanie równoległe. Na podstawie prezentacji można wysnuć wniosek, że najwięcej wysiłku idzie dzisiaj w usprawnienie dystrybucji oprogramowania nowych węzłów klastra oraz konfiguracji logicznych i fizycznych połączeń sieciowych między węzłami. Sporo dzieje się również w dziedzinie śledzenia działających równoległe programów.

Szkoda tylko, że Microsoft nie zdecydował się na odważniejszy ruch: na zerwanie z balastem starych rozwiązań i wprowadzenie nowego, czystego interfejsu API, napisanego w duchu Win32 i dostępnego – prosto, czytelnie i bezpośrednio – z poziomu zarówno C++, jak i języków programowania platformy .Net. Nie ma nic złego w obsługiwaniu starych standardów (wręcz przeciwnie, taka funkcjonalność jest zawsze bardzo mile widziana), jednak ruch w stylu Apple – zerwanie z dotychczasowym spojrzeniem na biblioteki i wprowadzenie czegoś nowego – to coś, na co ja osobiście czekałem i – niestety – nie doczekałem się.


"Dojazd do Warszawy oznacza dla Ślązaka konieczność pobudki w środku nocy. Podróż – wraz z kolegami z Wydziału – rozpocząłem o godzinie 4:30 i przez 290 km jej tempo było rewelacyjne. Na 10 kilometrów przed siedzibą firmy (Aleje Jerozolimskie 195A) niestety ugrzęźliśmy w tradycyjnym podwarszawskim korku, przez co dotarliśmy na miejsce dopiero o godzinie 9:50. Na szczęście budynek z wielkim logo Microsoft trudno przegapić, a na jego zapleczu znajduje się hipermarket, na którego parkingu bez problemu znajdzie się miejsce do zaparkowania."

Czemu nie koleją?
Bo przy obecnych remontach magistral kolejowych najlepszy pociąg przyjeżdzał o co najmniej 30 minut za późno, a wcześniejszy o co najmniej 2 godziny za wcześnie. Wyszłoby więc na to samo (jak nie gorzej), a przy takiej liczbie osób – na pewno drożej :)
"Tomasz K. – Senior Architect Evangelist" Wiem (z usenetu), że Microsoft to tak naprawdę sekta ale nie wiedziałem, że zatrudniają (może pracują za darmo dla chwały firmy(?)) ewangelistów ;P
Tak się nazywa u nich osoba odpowiedzialna za szerzenie wiedzy na temat produktów i rozwiązań.
Fakt, po angielsku brzmi to bardziej zwykle; w języku polskim kojarzy się praktycznie jednoznacznie.