61 Topologie wirtualne
Transkrypt
61 Topologie wirtualne
61 Topologie wirtualne • pozwalają opisać dystrybucję procesów w przestrzeni z uwzględnieniem struktury komunikowania się procesów aplikacji między sobą, • umożliwiają łatwą odpowiedź na pytanie: kto jest moim sąsiadem w danej topologii?, • pozwalają zoptymalizować efektywność odwzorowania topologii aplikacji na fizyczną topologię sprzętową w komputerach masywnie równoległych, 61.1 Topologia kartezjańska Funkcja: int MPI Cart create(MPI Comm oldcomm, int ndims, int *dims, int *periods, int reorder, MPI Comm *comm cart) • tworzy komunikator topologii kartezjanskiej i zwraca do niego uchwyt comm cart, • argument oldcomm okresla kopiowany komunikator, • liczbe wymiarów okresla argument ndims, • tablica dims zawiera rozmiary poszczególnych wymiarów, • jesli reorder = false, to indeksy procesów w nowym komunikatorze sa takie same, jak w oldcomm, inaczej moga byc inne (dopasowanie do architektury systemu), • tablica periods okresla, czy kolejne wymiary sa cykliczne (= true) – tworza pierscien, czy nie (= false), • jesli liczba procesów w oldcomm jest wieksza ni wynikajaca z rozmiarów dims, to tworzony komunikator ma mniej procesów, a w nadmiarowych procesach jest wpisywane MPI COMM NULL. 61.2 Topologia grafu (ogólna) Funkcja: int MPI Graph create(MPI Comm comm old, int nnodes, int *index, int *edges, int reorder, MPI Comm *comm graph) 1 • tworzy komunikator topologii grafu i zwraca do niego uchwyt comm graph, • graf jest określony liczbą wezłów i indeksów sąsiadów, • liczbę węzłów okresla argument nnodes, • indeksy sąsiadów kolejnych węzłów sa umieszczane w tablicy edges, • tablica index zawiera sumy liczb sąsiadów danego węzła i węzłów o indeksach niższych. Rysunek 1: Przykład wbudowanej topologii: Kartezjańska 62 Przegląd rozszerzeń MPI-2 Nowe funkcje w MPI2 (najważniejsze) • równoległe we/wy • zdalne operacje na pamięci • dynamiczne zarządzanie procesami – udziału w tworzeniu nowego procesu MPI – ustanowienia komunikacji z procesem MPI, który został uruchomiony oddzielnie Nowe funkcje w MPI2 (dodatkowo) • rozszerzone operacje kolektywne • wsparcie dla C++ i Fortran90 • współdziałanie między językami (programowanie w wielu językach jednocześnie) • zewnętrzne interfejsy • wątki 2 62.1 Równoległe we/wy Równoległe we/wy, czasem nazywane MPI-IO, jest inicjatywą IBM, badającą analogię między we/wy a przesyłaniem komunikatów. Zapis oraz odczyt z pliku jest analogią do nadawania oraz odbierania komunikatów do systemu plików (czyli dane zamiast umieszczać w pamięci umieszczamy je do pliku lub z tego pliku odczytujemy je). Rysunek 2: we/wy MPI do jednego pliku 62.2 Zdalne operacje na pamięci Powstałe rozwiązanie jest oparte na idei okien zdalnego dostępu do pamięci. Okno zdalnego dostępu do pamięci to porcja przestrzeni adresowej każdego procesu, na którym mogą być przeprowadzane zdalne operacje przez inne procesy występujące w komunikatorze MPI, wtedy mogą na tym oknie być dokonane operacje jednostronne: put, get i accumulate, do zapamiętania do, ładowania z i aktualizacji okna wystawionego dla innych procesów. Wszystkie zdalne operacje na pamięci są operacjami nieblokującymi, stąd są konieczne operacje synchronizacji do zapewnienia ich zakoączenia. Rysunek 3: RMA - zdalny dostęp do pamięci 3 63 Równoległa maszyna wirtualna i elementy środowiska PVM 63.1 Równoległa maszyna wirtualna PVM - Wirtualna Maszyna Równoległa (ang.Parallel Virtual Machine), to zestaw narzędzi do tworzenia oprogramowania dla sieci równolegle połączonych komputerów. Został zaprojektowany i stworzony, by umożliwić łączenie komputerów (o różnych konfiguracjach sprzętowych) w jeden równolegle działający komputer. 63.2 Elementy środowiska PVM • Program konsoli zarzadzania maszyna wirtualna – pvm • Program demon, umoliwiajacy współdziałanie procesów (programów) aplikacji rozproszonej – pvmd3 • Serwer grup, zapewniajacy identyfikacje grup procesów – pvmgs • Biblioteka funkcji podstawowych – libpvm3.a • Biblioteka funkcji operujacych na grupach procesów – libgpvm3.a • Biblioteka interfejsu Fortranu – libfpvm3.a 64 Uruchomienie i działanie maszyny wirtualnej 64.1 Uruchomianie PVM • Instalacja pakietu PVM na wszystkich wezłach (architekturach) maszyny wirtualnej. • Zdefiniowanie zmiennych środowiskowych: – PVM ARCH – okreslajaca architekture sprzetowa danego wezła np. LINUX, – PVM ROOT – wskazujaca katalog, gdzie pakiet został zainstalowany. • W katalogu $PVM ROOT/lib/$PVM ARCH znajdą się biblioteki, a w $PVM ROOT/bin/$PVM ARCH programy. 4 64.2 Działanie maszyny wirtualnej • Uruchomienie maszyny wirtualnej (osobnej) dla każdego użytkownika nastepuje po wystartowaniu procesu demona zarzadzajacego na pierwszym komputerze: – przydziela on identyfikatory procesów, zarzadza grupami procesów, itp. • Demon ten za pomoca polecenia rsh startuje demony na pozostałych komputerach konfiguracji, rozszerzajac maszyne wirtualna. 65 Konsola PVM Program obsługi konsoli maszyny wirtualnej: pvm [hostfile] gdzie hostfile jest opcjonalną nazwą pliku konfiguracyjnego, definiującego początkowy skład maszyny wirtualnej. Podstawowe komendy konsoli: • add hostname [hostname] ... – dodaje węzły • delete hostname [hostname] ... – usuwa węzły z maszyny, procesy sa zabijane • conf – wyswietla bieżacą konfiguracje; • halt – przerywa wszystkie procesy, zamyka demony PVM (maszynę wirtualna) i kończy działanie konsoli • quit – kończy działanie tylko konsoli • spawn – uruchamia nowy proces użytkownika na wybranym węźle maszyny wirtualnej • help [command] – wyświetla opis (danej komendy). 5