Ćwiczenie nr: 9 Obliczenia rozproszone MPI



Podobne dokumenty
Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Obliczenia rozproszone MPI

Obliczenia rozproszone MPI

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Wprowadzenie. Dariusz Wawrzyniak 1

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Algorytmy i Struktury Danych

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Klient-Serwer Komunikacja przy pomocy gniazd

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Mechanizmy pracy równoległej. Jarosław Kuchta

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Middleware wprowadzenie października 2010

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Protokoły zdalnego logowania Telnet i SSH

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Sieciowe Systemy Operacyjne

5. Model komunikujących się procesów, komunikaty

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Działanie systemu operacyjnego

Programowanie współbieżne i rozproszone

61 Topologie wirtualne

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC

Działanie systemu operacyjnego

Zdalne wywoływanie procedur RPC

Usługi sieciowe systemu Linux

Laboratorium podstaw telekomunikacji

router wielu sieci pakietów

Działanie systemu operacyjnego

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

System komputerowy. System komputerowy

AKADEMIA GÓRNICZO-HUTNICZA. Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KATEDRA INFORMATYKI. SyncFile

Wykaz zmian w programie WinAdmin Replikator

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

SIECI KOMPUTEROWE Adresowanie IP

KARTA KURSU. Systemy operacyjne

Konspekt pracy inżynierskiej

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Wprowadzenie. Co to jest klaster? Podział ze względu na przeznaczenie. Architektury klastrów. Cechy dobrego klastra.

Dokumentacja aplikacji Szachy online

Model sieci OSI, protokoły sieciowe, adresy IP

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

27/13 ZAŁĄCZNIK NR 4 DO SIWZ. 1 Serwery przetwarzania danych. 1.1 Serwery. dostawa, rozmieszczenie i zainstalowanie 2. serwerów przetwarzania danych.

Zdalne wywoływanie procedur RPC 27. października 2010

1. Etapy rozwoju systemów komputerowych

Wstęp do Informatyki. Klasyfikacja oprogramowania

Warstwy systemu Windows 2000

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Telnet. Telnet jest najstarszą i najbardziej elementarną usługą internetową.

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

7. zainstalowane oprogramowanie zarządzane stacje robocze

Sieci równorzędne, oraz klient - serwer

Java jako język programowania

Tomasz Greszata - Koszalin

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Opis komunikacji na potrzeby integracji z systemem klienta (12 kwiecień, 2007)

w sieciach szerokopasmowych CATV i ISP - Model OSI

Programowanie obiektowe zastosowanie języka Java SE

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Klaster obliczeniowy

Biuletyn techniczny. CDN OPT!MA 12.0 Drukarki fiskalne w usługach terminalowych. Copyright 2007 COMARCH SA

Podstawowe zagadnienia

Skrócony Poradnik Użytkownika

Kolejkowanie wiadomości Standard MQ (JMS)

Microsoft System Center Virtual Machine Manager 2012

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Materiały dodatkowe. Simulink Real-Time

WYKŁAD: Przetwarzanie rozproszone typu klient-serwer.

Wywoływanie procedur zdalnych

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Opracowanie protokołu komunikacyjnego na potrzeby wymiany informacji w organizacji

System operacyjny Linux

1. Opis aplikacji. 2. Przeprowadzanie pomiarów. 3. Tworzenie sprawozdania

Programowanie Rozproszone i Równoległe. Edward Görlich goerlich@th.if.uj.edu.pl

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Szkolenie autoryzowane. MS Administracja i obsługa Windows 7. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Transkrypt:

Ćwiczenie nr: 9 Temat: Obliczenia rozproszone MPI 1. Informacje ogólne MPI (Message Passing Interface) nazwa standardu biblioteki przesyłania komunikatów dla potrzeb programowania równoległego w sieciach rozproszonych. Aktualna wersja standardu to 3.0. MPI zawiera tylko specyfikacje interfejsu, nie zawiera żadnego konkretnego pakietu oprogramowania. Jest zbiorem funkcji API umożliwia programistom pisanie programów równoległych o wysokiej wydajności, które przekazują komunikaty pomiędzy procesami danego zadania. MPICH to darmowa i przenośna implementacja standardu MPI zrealizowana w Argonne National. Laboratory, ośrodku prowadzącym badania nad przetwarzaniem rozproszonym. Dostępna jest wersja dla platform UNIX jak i Windows, dla kompilatorów Fortran 77 i C. Biblioteka zawiera funkcje konieczne do uruchomienia, przesyłania komunikatów, synchronizacji i zakończenia programu. Możliwe jest przenoszenie programów na inne komputery. OpenMPI - biblioteka open-source implementująca standard MPI agregująca kilka poprzednich projektów dotyczących programowania równoległego (FT/LA/LAM/PACX - MPI). Trzy główne moduły wchodzące w skład biblioteki to: OMPI - implementacja kodu MPI, ORTE - środowisko uruchomienowe, OPAL - warstwa dostępowa. PVM środowisko oprogramowania do realizacji programów rozproszonych. Komputery połączone siecią tworzą równoległą maszynę wirtualną. Poszczególne procesy mogą pracować w różnych systemach operacyjnych. PVM dostarcza programiście procedury i funkcje przesyłania komunikatów między procesami. 2. Komunikacja Systemy rozproszone opierają się na dzieleniu zasobów i na przezroczystości ich rozmieszczenia. Składowe systemu są rozłączne logicznie i fizycznie. Rozproszone systemy i aplikacje są tworzone z oddzielnych składowych oprogramowania, współpracujących przy wykonywaniu zadań. Komunikacja między parą procesów obejmuje działania po stronie procesu nadawczego i odbiorczego, dając: a) przenoszenie danych ze środowiska procesu nadawczego do środowiska procesu odbiorczego; komunikujące procesy muszą wspólnie użytkować kanał komunikacyjny b) synchronizację czynności odbiorczych z czynnościami nadawczymi, tak aby powstrzymać działanie procesu nadawczego lub odbiorczego do czasu, aż inny proces go uwolni Równoważenie obciążenia może odbywać się z wywłaszczaniem lub bez wywłaszczania. W mechanizmie bez wywłaszczania zadanie jest wyznaczane do przeniesienia na inny węzeł przed swoim startem. W mechanizmie z wywłaszczaniem zadanie może być przeniesione po rozpoczęciu jego wykonywania. Zarówno MPI jak i PVM stosują tę pierwszą metodę. Konstrukcje programowania przyjmują postać działań wyślij i odbierz. Działania te dokonują przekazania komunikatu między parą procesów. Przekazanie komunikatu obejmuje przesłanie przez proces nadawczy zbioru wartości danych (komunikat) za pomocą mechanizmu komunikacji (kanału lub portu) i akceptację komunikatu przez proces odbiorczy. Mechanizm może być: a) synchroniczny z blokowaniem - nadawca czeka po wysłaniu komunikatu do czasu, aż odbiorca wykona operację odbioru b) asynchroniczny bez blokowania - komunikat jest umieszczany w kolejce komunikatów oczekujących na przyjęcie przez odbiorcę, a proces nadawczy może kontynuować działanie Najczęściej stosowane schematy komunikacji stosowane w systemach rozproszonych: 1. klient - serwer służą do łączności między parami procesów; model komunikacji nastawiony na dostarczanie usług, można w nim wyróżnić następujące etapy: a) przesłanie zamówienia do procesu klienta do procesu serwera b) wykonanie zamówienia przez serwer c) przesłanie odpowiedzi do klienta Schemat komunikacji klient-serwer można zrealizować za pomocą podstawowych operacji: przekazywanie komunikatów - wywołanie procedury zdalnej RPC (ang. remote procedure calling) realizowanej w postaci protokołu zamówienie - odpowiedź. Proces serwera

w chwili uruchomienia przedstawia się usłudze nazewniczej, podając swój adres sieciowy i nazwę dostarczanej przez siebie usługi. Klient uzyskuje adres serwera przez zapytanie służby nazewniczej przy pomocy nazwy usługi. 2. rozsyłanie grupowe (ang. group multicast) do łączności między grupami współpracujących procesów. W tym schemacie komunikacji rozsyłania, procesy współdziałają, przekazując komunikaty. Adresatem komunikatu nie jest jeden proces, lecz grupa procesów. Jednej operacji wyślij odpowiada operacja odbierz każdego członka grupy procesów - rozsyłanie grupowe (ang. multicasting). Cechy rozsyłania grupowego: a) odnajdywanie obiektu - klient rozsyła komunikat z nazwą katalogu pliku do grupy procesów serwerów plików. Odpowiada tylko ten który przechowuje dany katalog b) tolerowanie uszkodzeń - klient rozsyła zamówienie do grupy procesów usługowych, każdy przetwarza je identycznie a następnie jeden lub więcej wysyła odpowiedź. Grupa serwerów może zapewnić ciągłą obsługę, nawet w przypadku awarii pozostałych. c) zwielokrotnione aktualizacje - zdarzenie w rodzaju "jest godzina 18:01" można wysyłać do grupy zainteresowanych procesów. W zależności od sposobu realizacji rozproszenia system może być rozproszonym systemem operacyjnym rozproszenie realizowane jest na poziomie jądra systemu operacyjnego, każda poprawnie napisana wielozadaniowa aplikacja może podlegać migracji (migruje w całości lub wybrane jej podprocesy), rozproszenie jest przeźroczyste dla aplikacji maszyną wirtualną uwspólniane są wybrane zasoby np. pamięć i moc obliczeniowa implementacja odbywa zwykle przez użycie specjalistycznych bibliotek programistycznych aplikacja rozproszona poszczególne funkcje aplikacji dzielone są pomiędzy różne komputery np. tzw architektura trójwarstwowa (warstwa składowania danych serwery baz danych plików filery, warstwa logiki biznesowej, warstwa prezentacji danych) Zrównoleglanie programu (ang. program parallelization). Dla wykonania w systemie równoległym lub rozproszonym, program musi być podzielony na fragmenty, wykonywane w poszczególnych procesorach lub komputerach. Ze względu na sposób podziału programu sposób zrównoleglenia - wyróżniamy: zrównoleglenie oparte na dekompozycji danych - kod programu jest wykonywany równolegle na mniejszych podzespołach danych a potem zbierane są wyniki częściowe. Model ten stosuje się do programów o dużych zespołach danych i regularnych strukturach (np. wektory, macierze, listy) zrównoleglenie oparte na dekompozycji kodu programu - każdy fragment programu zawiera odrębne dane, określone poprzez podział kodu. Ten model stosuje się do programów o nieregularnych strukturach danych. zrównoleglenie oparte na obu sposobach dekompozycji (ang. data and code decomposition) 3. Dynamiczne przydzielanie zadań Dwie najpopularniejsze implementacje równoważenia obciążenia w oparciu o dynamiczne przydzielanie zadań to MPI (Message Passing Interface) oraz PVM (Parallel Virtual Machine) są przykładem wykorzystania bibliotek programistycznych dla uzyskania rozproszenia. Aby możliwe było wykonywanie obliczeń konieczne są dwa elementy: środowisko uruchomieniowe, które zapewnia przydzielenie zadań odpowiednim węzłom przed ich utworzeniem ( mpirun i ew. mpdboot) zestaw bibliotek umożliwiających wymianę komunikatów pomiędzy procesami program skompilowany z użyciem w/w bibliotek W przeciwieństwie do rozproszonych systemów operacyjnych, które zwykle muszą wykorzystywać tę samą architekturę systemu np. te same wersje jądra wymiana komunikatów może być w prostszy sposób uniezależniona od systemu operacyjnego i jego architektury. W przypadku MPI możliwe jest wykorzystanie np. węzłów z systemem Windows 32 i 64b, linux 32 i 64b, SunOS, MacOSX i innych pod jednym warunkiem, dla każdej z architektur muszą znajdować się na tej samej ścieżce przygotowane odpowiednie binaria (skompilowany na dany system program) Literatura: [1] Hunt, Craig; TCP/IP : administracja sieci. Warszawa : Oficyna Wydaw. READ ME, 1996. [2] Blank, Andrew G, Podstawy TCP/IP / Andrew G. Blank ; przekł. z jęz. ang. Grzegorz Kowalski, Warszawa : Mikom, 2005.

Instrukcje do programów OpenMPI Programy należy kompilować i uruchamiać w katalogu /tmp/ Na każdej maszynie biorącej udział w obliczeniach w katalogu /tmp/ muszą znaleźć się plik wykonywalny (binarka) uzyskiwany po skompilowaniu kodu plik z listą hostów (adresami IP) biorących udział w obliczeniach można skopiować je poleceniem (w katalogu /tmp/): #scp nazwa_pliku adresip:/tmp/ a) kompilacja programu w c++ # mpic++ -o matvec.out matvec_mpi.cpp gdzie: matvec.out nazwa wyjściowego pliku wykonywalnego matvec_mpi.cpp kod źródłowy programu b) kompilacja programu w c # mpicc -o prog.out prog.c c) uruchamianie programu # mpirun -hostfile hosts -n 24 --oversubscribe -bind-to core:overload-allowed matvec.out gdzie: hosts nazwa (ścieżka) pliku tekstowego w którym umieszczone są adresy IP maszyn biorących udział w obliczeniach, przykładowa zawartość pliku: 10.0.2.183 10.0.2.184 --oversubscribe -bind-to core:overload-allowed umożliwienie podziału programu na ponadstandadową liczbę wątków matvec.out nazwa wyjściowego pliku do wykonywania -n 24 liczba podzadań, na które należy podzielić zadanie główne polecenie mpirun uruchamiane jest tylko na jednym (pierwszym/głównym) komputerze

Scenariusze ćwiczeń

Scenariusz Nr 1 Sprzęt: 1. Stacja robocza: Komputer PC Architektura SO użytkownik Oprogramowanie: OpenMPI x86_64 (64b) Fedora student mpirun... 10.0.2.181 10.0.2.183 Mate Wykonanie ćwiczenia: Przygotowanie: 1. zalogować się jako student na konsoli graficznej bądź tekstowej 2. wejść na stronę http://heavy.metal.agh.edu.pl/ gdzie dostępne są kody źródłowe programów Wykonanie ćwiczenia: 1. ustalić z prowadzącym wersję scenariusza 1. wersję kodu programu, wielkość macierzy (dla kodu w C)... 2. wersję sprzętową testów (przykładowo, dla wersji a) testy wykonujemy najpierw na 1 maszynie, potem na 2 a na końcu na 3 maszynach, zmieniając parametr n od 1 do 16 o wartość 1) 2. na każdym komputerze wyznaczonym do testów, w katalogu /tmp/ : 1. skompilować program 2. uzupełnić wpisy (adresy IP komputerów) w pliku z listą maszyn 3. uruchomić mpirun z odpowiednimi opcjami 4. dla każdej konfiguracji wykonywać 3 pomiary, notując czas wykonania, liczbę maszyn i liczbę procesów Uwagi: wersja Ilość maszyn Ilość proc/skok Uwagi a) 1, 2, 3 1-28 / co 1 Każdy pomiar 3 razy, notować czas obliczeń i węzły b) 1, 2, 3 1-28 / co 2 (1,2,3,4,6,8,...) Każdy pomiar 3 razy, notować czas obliczeń i węzły c) 1, 2, 3, 4 1-36 / co 4 (1,2,3,4,8,12,...) Każdy pomiar 3 razy, notować czas obliczeń i węzły d) 1, 3, 4 1-36 / co 2 (1,2,4,6,8,...) Każdy pomiar 3 razy, notować czas obliczeń i węzły e) 2, 3, 4 1-48 / co 2 (1,2,4,6,8,...) Każdy pomiar 3 razy, notować czas obliczeń i węzły f) 2, 3, 4 1-48 / co 4 (1,2,3,4,8,12,...) Każdy pomiar 3 razy, notować czas obliczeń i węzły Wyniki pomiarów: opracować statystycznie uzyskane wyniki wykresy czasów wykonywania w zależności od ilości hostów, i procesów opracować wnioski szczegółowe i końcowe