Testy MDCE
From Centrum Komputerów Dużej Mocy, ICM Uniwersytet Warszawski
| MATLAB w ICM | |
|---|---|
| Produkt: | MATLAB |
| Producent: | The MathWorks |
| Licencja: | komercyjna |
| Zainstalowany na: | rekin, burza, halo |
| Wersja: | R2006a |
| Email: | rakowski |
| Lista oprogramowania | |
Matlab Distributed Computing Engine oraz wspomagajacy go Distributed Computing Toolbox to pakiety pozwalajajace na prowadzenie obliczen w srodowisku rozproszonym. Dzieki uzyskaniu licencji ewaluacyjnej na wyzej wymienione pakiety, mozliwe bylo przeprowadzenie testow obliczen rozproszonych i rownoleglych w srodowisku Matlab na klastrze halo w ICM. Ponizej mozna zapoznac sie ze streszczeniem uzyskanych wynikow oraz z najwazniejszymi wnioskami wynikajacymi z przeprowadzonych testow. Pelne sprawozdanie jest do pobrania w formacie pdf.
Wszelikch informacji na temat pakietow MDCE i MDCT oraz korzystania z Matlaba w srodowisku rozproszonym w ICM udziela Bartosz Borucki (B.Borucki@icm.edu.pl).
Contents |
Testy MDCE w ICM
Przetestowane zostały pakiety "MATLAB Distributed Computing Engine" oraz "MATLAB Distributed Computing Toolbox" w wersji 2.0. Pierwszy z nich (MDCE) odpowiedzialny jest za zarządzanie zadaniami w uruchamianych programach wielozadaniowych oraz za zapewnienie komunikacji między nimi w środowisku rozproszonym. Drugi (MDCT), to zestaw funkcji i poleceń umożliwiający użytkownikowi korzystanie z MDCE.
Licencja ewaluacyjna obejmowała korzystanie z jednego pakietu MDCT oraz z pakietu MDCE na 8 procesorach (8 licencji workerów).
Konfiguracja
Pakiet MDCE został skonfigurowany w taki sposób aby jak najlepiej integrował się z istniejącym na klastrze halo systemem kolejkowym PBS. Konfiguracja obejmuje dwa podstawowe rodzaje udostępnianych przez pakiet trybów pracy w środowisku rozproszonym:
- DISTRIBUTED – są to obliczenia rozproszone, bazujące na wielu niezależnych od siebie zadaniach, nie wymagających komunikacji, uruchamianych na poszczególnych procesorach niezależnie od siebie, w dowolnym momencie
- PARALLEL – są to obliczenia równoległe, bazujące na wielu zadaniach, które mogą być od siebie zależne i mogą się komunikować, uruchamianych na wielu procesorach w tym samym momencie
Zadania DISTRIBUTED
Konfiguracja rozproszona została przetestowana poprzez zdefiniowanie kilku zupełnie niezależnych od siebie zadań jednoprocesorowych. Zgodnie z konfiguracją (generic scheduler) uruchomienie tego typu zadania powodowało automatyczne wstawienie do kolejki nowych podzadań, dzięki wygenerowaniu przez MDCE skryptów kolejkowych dla PBS’a, z żądaniem przydzielenia jednego procesora na podzadanie. Po przydzieleniu zasobów przez system, każde podzadanie uruchamiało worker MATLAB’a (worker jest nieinterakcyjną wersją MATLAB’a, bez interfejsu graficznego, zapewnianą przez MDCE i korzystającą z licencji workera MDCE, a nie z pełnej licencji MATLAB’a) i niezależnie od innych podzadań wykonywało swoje obliczenia. Po zakończeniu wszystkich zdefiniowanych podzadań możliwe było pobranie wyników obliczeń poprzez właściwości zadania w MATLAB’ie.
- Ponieważ zadania rozproszone nie są od siebie zależne i nie ma po między nimi komunikacji, nie mają tu znaczenia żadne wyniki czasowe dotyczące pracy poszczególnych workerów oraz wykorzystania czasu procesora – każdy worker pracuje w przybliżeniu tak samo jak zwykła sesja MATLAB’a. Należy jedynie pamiętać o niewielkiej stracie czasowej związanej z samym uruchomieniem i zatrzymaniem workera na przydzielonym węźle klastra.
- Konfiguracja rozproszona, ze względu na swoje przeznaczenie, spełnia się najlepiej w przypadku kilku dużych zadań obliczeniowych, wymagających długiego czasu pracy.
- Nie warto korzystać z konfiguracji rozproszonej do uruchamiania bardzo wielu bardzo krótkich zadań – czas uruchomienia workera oraz czasy oczekiwania podzadań w kolejce przewyższają znacznie korzyści z rozproszenia zadania
- Podstawową korzyścią płynącą z wykorzystania konfiguracji rozproszonej jest korzyść licencyjna – każde podzadanie zużywa jedną licencję workera MDCE (czyli jedną z wykupionego pakietu workerów), a nie całą jedną licencję MATLAB’a.
Zadania PARALLEL
Konfiguracja równoległa została przetestowana na kilku przykładowych prostych zadaniach obliczeniowych w celu ustalenia szczegółów dotyczących czasów pracy zadań oraz czasów komunikacji. Zadania zostały subiektywnie dobrane w taki sposób aby możliwe było również ustalenie warunków pracy w przypadkach granicznych jeśli chodzi o natężenie komunikacji pomiędzy workerami. Zgodnie z konfiguracją (mpiexec scheduler) uruchomienie tego typu zadania wiąże się z koniecznością wstawienia do kolejki skryptu PBS’a z żądana ilością procesorów, które to zadanie (uruchomione jako worker numer 1), po przydzeleniu zasobów, ustawia parametry zadania i uruchamia workery oraz równoległe podzadanie na przydzielonych procesorach. Po zakończeniu obliczeń na wszystkich węzłach i ewentualnym wykonaniu obliczeń końcowych lub pobraniu danych zadanie jest zakańczane.
Zadanie równoległe nr.1 – całkowanie funkcji
Pierwszym testowym zadaniem równoległym było zadanie polegające na obliczeniu liczby pi poprzez obliczenie całki z zadanej funkcji f(x) na przedziale od 0 do 1, z wykorzystaniem różnej liczby procesorów.
Podział zadania na poszczególne procesory polegał na podzieleniu przedziału całkowania – każdy procesor liczył całkę na swoim przedziale (zawartym w przedziale od 0 do1) a następnie przesyłał wynik do pierwszego workera, gdzie wyniki od wszystkich workerów były sumowane do ostatecznego wyniku.
Tak zdefiniowane zadanie charakteryzuje się bardzo małą komunikacją w stosunku do czasu obliczeń - przesyłany jest tylko wynik całki, a zatem pojedyncza liczba rzeczywista. Worker pierwszy poza obliczeniem swojego przedziału całki musiał dodatkowo odebrać dane od innych workerów oraz wykonać procedurę sumowania wyników.
Zadanie zostało uruchomione na 1, 2, 4 i 8 procesorach.
Całkowity czas pracy pierwszego workera – czyli faktyczny czas wykonania całego zadania od uruchomienia poprzez obliczenia, komunikację, aż do zakończenia - w zalezności od liczby użytych procesorów przedstawia poniższy wykres:
Otrzymana krzywa jest w przybliżeniu zlażnością odwtotną (przy bardzo malej komunikacji).
Zadanie równoległe nr.2 – generowanie liczb pseudolosowych
Drugim zadaniem było wygenerowanie n liczb pseudolosowych z wykorzystaniem matlabowej funkcji randn. Tego typu problem pozwalał na przetestowanie wydajności nie tylko w zależności od ilości użytych procesorów, ale również od wielkości zadania (ilości liczb). Globalnie zadanie polegało na wygenerowaniu n-elementowej macierzy liczb pseudolosowych, natomiast podział zadania na procesory polegał na podzieleniu generowanej macierzy na mniejsze tablice.
Dodatkowo zadanie to zostało przetestowane na dwa sposoby – z komunikacją oraz bez komunikacji. W przypadku zadania z komunikacją, każdy worker po wygenerowaniu swojej macierzy przesyłał ją do 1 workera, a ten składał otrzymane macierze w jedną całość. W przypadku zadania bez komunikacji, każdy worker jedynie generował swoją macierz, ale nie przesyłał jej. Takie podejście pozwoliło na dokładne przeanalizowanie wpływu komunikacji na czas całego zadania.
Zadanie zostało uruchomione na 1, 2 i 4 procesorach. W każdym przypadku losowana była macierz kwadratowa o rozmiarze 1000, 2000, 3000, … do 10 000, a zatem losowane ilości liczb n równe były 1, 4, 9, 16, 25, 36, 49, 64, 81 i 100 milionów.
W przypadku braku komunikacji zależność czasu pracy pierwszego workera od liczby procesorów jest ponownie zależnością odwrotną:
Natomiast w przypadku zadania wykonanego z komunikacją (przesyłanie bardzo dużych macierzy) zależność ta wygląda następująco:
Jak widać całkowity czas pracy zadania jest coraz większy dla większej liczby procesorów. Jest to efektem bardzo długiego czasu przesyłania danych przez workery. Poniżej przedstawiony jest schemat czasowy pracy poszczególnych workerów - obliczony dla 4 procesorów, dla 100 milionów losowanych liczb:
Podsumowanie
Przeprowadzone testy oprogramowania do obliczeń w środowisku MATLAB w systemie rozproszonym pozwoliły na wyciągnięcie wielu kluczowych wniosków. Otrzymane wyniki umożliwiły zarówno ustalenie podstawowych schematów optymalnego wykorzystania tego oprogramowania na klastrze halo, jak również pozwoliły potwierdzić słuszność zakupu pakietów MDCE oraz MDCT dla zastosowań obliczeniowych w ICM. Poniżej przedstawione jest zestawienie najistotniejszych z nich:
- Oprogramowanie MDCE i MDCT w wersji 2.0 daje się skutecznie zintegrować z konfiguracją klastra halo i z systemem kolejkowym PBS
- W porównaniu do innych, darmowych prób zrównoleglenia obliczeń w MATLAB’ie, pakiety firmy Mathworks niosą za sobą przede wszystkim korzyść związaną z licencjami – każde zadanie zabiera tylko jedną pełną licencję MATLAB’a, niezależnie od liczby procesorów, a każdy worker (na jeden procesor) pobiera jedną licencję z wykupionego pakietu MDCE. Dzięki temu podczas obliczeń równoległych i rozproszonych nie są w dużych ilościach zużywane drogie licencje pełne, a jedynie znacznie tańsze licencje MDCE.
- Konfiguracja rozproszona (distributed) sprawdza się jedynie dla kilku dużych zadań obliczeniowych. Główną korzyścią są względy licencyjne, natomiast głównym mankamentem jest konieczność oczekiwania poszczególnych podzadań w kolejce.
- Konfiguracja równoległa (paralel) sprawdza się zarówno dla zadań rozproszonych – bez komunikacji, jak i dla zadań równoległych – z komunikacją. Konieczne jest jednak rozsądne przeanalizowanie zadania pod kątem korzystania z komunikacji. Największy zysk czasowy na obliczeniach uzyskiwany jest przy minimalnej komunikacji – odwrotna zależność całkowitego czasu obliczeń od liczby procesorów. Bardzo duże obciążenie komunikacyjne prowadzi do gorszych rezultatów czasowych niż w przypadku korzystania z pojedynczego procesora. Głównymi korzyściami z wykorzystania z tej konfiguracji (rozsądnego) są duży zysk czasowy oraz względy licencyjne, natomiast głównym mankamentem są opóźnienia pojawiające się przy zbyt dużej komunikacji.
