Views

MDCE

From Centrum Komputerów Dużej Mocy, ICM Uniwersytet Warszawski

Jump to: navigation, search
MDCE w ICM
Produkt: MDCE
Producent: The MathWorks
Licencja: komercyjna
Zainstalowany na: halo
Wersja: 2.0
Email: B.Borucki
Lista oprogramowania

Contents

Matlab Distributed Computing Products

Ditributed Computing Products firmy Mathworks to pakiety rozszerzające możliwości środowiska Matlab o funkcjonalność związaną z zarządzaniem i uruchamianiem zadań Matlaba na klastrze, przyspieszając w ten sposób wykonanie dużych zadań obliczeniowych.

Za całość działania odpowiedzialne są dwa pakiety:

  • MATLAB Distributed Computing Engine
  • Distributed Computing Toolbox


UWAGA!! Matlab nie zrównolegla się sam.

Matlab Distributed Computing Engine

Matlab Distributed Computing Engine to produkt będacy sercem całego systemu Matlab Distributed Computing. Pakiet ten zapewnia srodowisku Matlaba funkcjonalność związaną z zarządzaniem uruchamianymi zadaniami oraz z zarządzaniem licencjami. Składa się on przede wszystkim z tzw. Scheduler'a oraz Worker'ów. Workery to nienteraktywne sesje Matlaba uruchamiane na poszczególnych procesorach klastra, zajmujace się wykonywaniem zadan obliczeniowych. Scheduler to główny program zarządzający.

Zadaniem MDCE jest również zarządzanie przydzielaniem koniecznych licencji do workerów. MDCE ma do swojej dyspozycji wyłączną pulę licencji, odrębych od standardowych licencji Matlaba, możliwych do wykorzystania jedynie w postaci Workerów. W zależności od uruchamianych zadań oraz od wykorzystywanych w obliczeniach Toolbox'ów, MDCE przydziela workerom odpowiednie licencje.

Zatem MDCE odpowiedzialny jest za stronę techniczną zarządzania obliczeniami i nie jest widoczny od strony użytkownika.


Distributed Computing Toolbox

Distributed Coputing Toolbox to skolei produkt dający użytkownikowi możliwość komunikowania się z MDCE i umożliwiający zdefiniowanie zadań, wywołanie odpowiedzniego Schedulera i zaalokowanie zasobów. Jest to przede wszystkim zestaw funkcji uruchamianych przez użytkownika z poziomu skryptu lub środowiska graficznego Matlaba. MDCT jest uruchamiany i licencjonowany niezależnie od MDCE i pełni rolę klienta.


Obliczenia rozproszone - DISTRIBUTED

Charakterystyka:

  • zadanie składa się z jednoprocesorowych NIEZALEŻNYCH podzadań
  • podzadania nie komunikują się między sobą
  • podzadania mogą wykonywać te same lub inne obliczenia
  • podzadania mogą być uruchamiane w dowolnym momencie
  • obliczenia rozproszone sprawdzają się najlepiej przy wielu dużych zadaniach obliczeniowych wymagających względnie długiego czasu obliczeń
  • korzyści licencyjne - każde zadanie korzysta z licencji workera MDCE, a nie z licencji Matlaba
  • wiele małych zadań nie zyska wydajności
  • podzadania muszą oczekiwać w kolejce
  • konfiguracja równolegla niesie więcej funkcjonalności


Uruchamianie:

Zadania rozproszone mogą być uruchamiane ręcznie ze środowiska graficznego, lub poprzez skrypty. W obu przypadkach każde podzadanie ma generowany skrypt PBS i wstawiane jest do kolejki. Podzadania uruchamiają się zatem w kolejności przyznawania zasobów.

Wywołanie schedulera i konfiguracja zadania dla kolejki głownej:

>> s = findResources('scheduler','type','generic');
>> set(s,'configuration','generic');
>> j = createJob(s);
>> set(j,'configuration','generic');


oraz dla kolejki test:

>> s = findResources('scheduler','type','generic');
>> set(s,'configuration','generictest');
>> j = createJob(s);
>> set(j,'configuration','generictest');


Pobieranie wyników:

Po zakończeniu obliczeń pobranie wyników z zapisanych przez Matlab plików możliwe jest po ponownym uruchomieniu Matlaba w katalogu zawierającym pliki wynikowe

use_mdce
matlab

oraz poprze ponowne przywołanie schedulera oraz zadania

>> s = findResources('scheduler','type','generic');
>> j = get(s,'Jobs');

Pobranie wyników wykonujemy poleceniem:

>> wyniki = getAllOutputArguments(j);


Przykładowe zadanie korzystające z obliczeń rozproszonych znajduje się na halo w katalogu /opt/examples/pbs/matlab/mdce/distributed


Obliczenia równoległe - PARALLEL

Charakterystyka:

  • zadanie składa się z jednego podzadania
  • podzadanie jest powielane i uruchamiane JEDNOCZEŚNIE na wielu procesorach
  • workery mogą komunikować się ze sobą podczas wykonywania obliczeń
  • sprawdzają się tam gdzie wymagana jest komunikacja pomiędzy workerami, ale nie obejmująca wielu danych
  • sprawdzają się tam gdzie możliwe jest podzielenie wielokrotnie wykonywanej tej samej czynności na mniejsze fragmenty np. całkowanie, ale komunikacja podczas obliczeń nie jest konieczna
  • korzyści licencyjne - każdy worker korzysta z licencji workera MDCE, a nie z licencji Matlaba
  • konieczność oczekiwania na przydzielenie większej liczby zasobów w tym samym momencie
  • nie sprawdza się dla dużej ilości przesyłanych danych pomiędzy workerami!!
  • najczęściej stosowane do podzielenia większego zadania (np. danych) na mniejsze fragmenty
  • podzadanie może być zdefiniowane w taki sposób, żeby każdy worker wykonywał to samo np. na innym fragmencie danych, lub tak aby wykonywał nieco inne zadania
  • program może być zbudowany tak, aby był wyróżniony nadrzędny worker, który zbierze końcowe wyniki i ewentualnie wykona na nich końcowe obliczenia


Uruchamianie:

Zadani równoległe mogą być uruchamiane wyłącznie z poziomu systemu kolejkowego. Całość zadania wstawiana jest do kolejki, a po przydzieleniu odpowiednich zasobów workery uruchamiane są na wszystkich przydzielonych przez PBS procesorach, a podzadanie powielane jest na każdy worker.

Przed korzystaniem z obliczeń równoległych konieczne jest stworzenie pliku .mpd.conf z hasłem do demona MPD. Można to zrobić wydając z linii poleceń następujące komendy:

cd $HOME
echo MPD_SECRETWORD=mdce_$USER > .mpd.conf
chmod 600 .mpd.conf

Ustawienie środowiska MPI do komunikacji wykonywane jest w skrypcie uruchomieniowym PBS. Przykładowy skrypt znajduje się na halo w katalogu /opt/examples/pbs/matlab/mdce/parallel.


Wywołanie schedulera i konfiguracja zadania:

>> s = findResources('scheduler','type','mpiexec');
>> set(s,'configuration','mpiexec');
>> j = createParallelJob(s);
>> set(j,'configuration','mpiexec');


Przykładowe zadanie korzystające z obliczeń rozproszonych znajduje się na halo w katalogu /opt/examples/pbs/matlab/mdce/parallel