1 / 56

Obliczenia równoległe

Obliczenia równoległe. Materiały dotyczące obliczeń równoległych dostępne na sieci. Materiały kursu programowania równoległego w CI TASK http://www.task.gda.pl/szkolenia/MPI_kurs Książka on-line ``Designing and Building Parallel Programs'', Ian Foster, Addison Wesley, 1995

race
Download Presentation

Obliczenia równoległe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Obliczenia równoległe

  2. Materiały dotyczące obliczeń równoległych dostępne na sieci Materiały kursu programowania równoległego w CI TASK http://www.task.gda.pl/szkolenia/MPI_kurs Książka on-line ``Designing and Building Parallel Programs'', Ian Foster, Addison Wesley, 1995 http://wotug.ukc.ac.uk/parallel/books/addison-wesley/dbpp/text/book.html Książka on-line: ``MPI: the Complete Reference'', Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker, Jack Dongarra, The MIT Press, 1995 http://www.netlib.org/utk/papers/mpi-book/mpi-book.html Tutorial z przykładami: http://www-unix.mcs.anl.gov/mpi/tutorial/gropp/talk.html MPI Forum http://www.mpi-forum.org Strona MPICH (wersja MPI opracowana na Uniwersytecie Michigan; znajduje się tam również książka on-line ``Using MPI'') http://www-unix.mcs.anl.gov/mpi/mpich

  3. Książki „Obliczenia równoległe i rozproszone” Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz Oficyna Wydawnicza Politechniki Warszawskie, 2001 „Using MPI” oraz „Using MPI-2” William Gropp, Ewing Lusk, Anthony Skjellum, The MIT Press, Cambridge Massachussetts, London, 1999

  4. O możliwości obliczeń równoległych wspomniano po raz pierwszy na długo przed skonstruowaniem pierwszej praktycznej maszyny obliczeniowej: "When a long series of identical computations is to be performed, such as those required for the formation of numerical tables, the machine can be brought into play so as to give several results at the same time, which will greatly abridge the whole amount of the processes."w “Sketch of the Analytical Engine invented by Charles Babbage” by L.F. Menabrea(1842). …jednak trudności techniczne spowodowały, że praktyczna realizacja rozpoczęła się dopiero w późnych latach 60-tych. Pierwszy komputer równoległy: ILLIAC IV, Uniwersytet Illinois, USA (lata siedemćdziesiąte). Wczesne obliczenia równoległe polegały głównie na przetwarzaniu wektorowym i macierzonym.

  5. Czym jest komputer równoległy? Jest to system umożliwiający równoczesne przetwarzanie wielu wątków obliczeniowych. S E S E czas

  6. Motywacja obliczeń równoległych • Potrzeba - konstrukcja szybszych procesorów nie nadąża za rosnącymi potrzebami obliczeń w nauce i technice, ekonomii, zarządzaniu, itp. • Ekonomia - kilka wolniejszych procesorów jest znacznie tańszych (również w eksploatacji), niż jeden superszybki. • Nieprzekraczalne prawa fizyki - w tej chwili w konstrukcji procesorów dochodzi się już do granic wyznaczonych przez prędkość światła i ziarnistą strukturę materii.

  7. Celem zrównoleglenia i zadania z nim związane • Efektywny kod równoległy powinien zapewnić wykorzystanie wszystkich procesorów przez cały czas (load-balancing) oraz zawierać tylko niezbędną komunikację między procesorami. • Największym problemem jest zawsze dekompozycja algorytmu na podzadania równoległe, które muszą być od siebie niezależne lub słabo zależne. Te podzadania nazywamy ziarnami, które są rozdzielane pomiędzy procesory. Wyróżnia się dwa typy dekompozycji: dekompozycję funkcjonalną oraz dekompozycję danych. • Realizacja powyższego zadania wymaga długiej pracy wysoko wykwalifikowanych programistów. • W ogromnej większości przypadków algorytm nie może być do końca zrównoleglony.

  8. Taksonomia architektur równoległych wg. Flynna Multiple instruction Single instruction Single Instruction Single Data Single Instruction Multiple Data Multiple Instruction Single Data Multiple Instruction Multiple Data Shared Memory Distributed Memory Virtual Shared Memory

  9. Single Instruction Multiple Data Zastosowanie: Przetwarzanie obrazów Przykłady: ICL Distributed Array Processor (DAP); Thinking Machine Corporation's CM-200

  10. Multiple Instruction Multiple Data memory Pamięć dzielona Pamięć rozproszona SGI PowerChallenge

  11. Podana klasyfikacja opisuje architektury wyidealizowane. Bardzo często rzeczywiste maszyny są mieszaniną architektur różnych typów. Przykładem jest architektura wirtualnej pamięci dzielonej (VSM), gdzie każdy procesor posiada swoją własną pamięć, jednak wszystkie procesory posiadają również globalną przestrzeń adresową, do której mają bezpośredni dostęp. Przykładem maszyny VSM jest Cray T3D.

  12. Klastry Większość obecnie używanych komputerów równoległych toklastryo architekturze mieszanej. Klasterjest układem niezależnych jednostek obliczeniowych połączonych siecią komunikacyjną. Zwykle każda jednostka posiada niezależną pamięć (jednak jednostka może zawierać kilka procesorów ze wspólną pamięcią). Taki typ architektury równoległej jest bardzo elastyczny.

  13. Shared Memory Klastry • Superklastry: Szybkie procesory + bardzo szybka siećKlaster Alpha w Pittsburgh Supercomputer Center • Klastry wyspecjalizowane: Szybkie procesory + szybka siećIBM SP2 • Profesjonalne klastry typu Beowulf: Szybkie procesory + szybka sieć (>1GB; Myrinet, Giganet)Velocity, Velocity+ w Cornell Theory Center, Galera w TASK • Standardowe klastry typu Beowulf: Szybkie lub standardowe procesory + standardowa sieć (10-100MB)Większość klastrów PC (Matrix, piasek) • Klastry rozproszone: Standardowe procesory połączone siecią Internet seti@home, Clusterix Szybkość komunikacji Distributed Memory

  14. Schemat logiczny klastra typu Beowulf

  15. Architektura klastra typu Beowulf

  16. Matrix – klaster PC do obliczeń równoległych w laboratorium H.A. Scheragi • 410 dwuprocesorowych komputerów PC (820 procesorów) • Nody PIII, K7, lub opteron połączone switchem HP 7000 ProCrve. • System operacyjny Linux • Message Passing Interface (MPICH) dla przetwarzania równoległego • Portable Batch System (PBS) dla kontroli zadań • Kompilatory z Portland Group (Fortran 90, Fortran 77, C and C++)

  17. Ekonomia i logistyka obliczeń równoległych

  18. Dekompozycja zadań • Dekompozycja trywialna • Dekompozycja funkcjonalna • Dekompozycja danych Narzuty związane z obliczeniami równoległymi (overhead): opóźnienie komunikacji (latency), czas komunikacji, synchronizacja, itp.

  19. Dekompozycja trywialna Algorytm jest złożony z części zupełnie od siebie niezależnych Przykłady: Wykonanie dużej liczby minimalizacji funkcji, obliczanie średnich metodą Monte Carlo. W przypadku dekompozycji trywialnej komunikacja między procesorami jest niepotrzebna.

  20. Dekompozycja funkcjonalna: przetwarzanie taśmowe (pipelining) W przypadku dekompozycji funkcjonalnej zadanie zostaje rozbite na bloki, które muszą być dla określonych danych wykonywane sekwencyjnie. Kolejne moduły są realizowane przez różne procesory i przetewarzają po kolei różne dane. Rozpoznawanie obrazu

  21. Dekompozycja funkcjonalna: farmy zadań Dane są dzielone na ziarna, którymi zawiaduje wybrany procesor główny (nadzorca). Nadzorca rozdziela dane do przetworzenia pomiędzy robotników (lub niewolników). Po wykonaniu zadania każdy robotnik zwraca wynik do kolektora wyników, którym jest zwykle nadzorca. Nadzorca Robotnik 1 Robotnik 2 Robotnik 3 Robotnik 4 Kolektor wyników

  22. Dekompozycja danych Te same obliczenia są wykonywane przez wszystkie procesory dla różnych części danych Przykład: Obliczanie energii układu molekularnego f(1,1,1,1) f(1,1,1,2) f(1,1,1,3) … f(1,1,2,1) f(1,1,2,2) f(1,1,2,3) … …

  23. Współczynnik przyspieszenia T(s,1) – czas wykonania obliczeń na jednym procesorze. T(s,n) – czas wykonania tych samych obliczeń na n procesorach.

  24. s - wielkość zadania n - liczba procesorów Sprawność programu równoległego w(s) – ilość operacji związanych z wykonywaniem obliczeń h(s,p) – narzuty na komunikację

  25. Prawo Amdahla Niech pbędzie kosztem obliczeniowym zrównolalnej części algorytmu. Jeżeli p nie zależy od liczby procesorów, przyspieszenie obliczeń wyraża się prawem Amdahla: W podanym przykładziep=99%, 90% i 80%

  26. Najprostsza modyfikacja prawa Amdahla uwzględniająca narzuty na komunikację Więcej o analizie skalowalności można znaleźć w książce on line „Designing and building parallel programs”.

  27. Skalowalność algorytmu MREMD na przykładzie obliczeń dla białka 1SAP na komputerze jubl.fz-juelich.de (Blue Gene) przyspieszenie efektywność Liczba procesorów Liczba procesorów

  28. Skalowalność programu AMBER na przykładzie obliczeń energii BPTI w próżni na klastrze holk.task.gda.pl wydajność Dopasowanie przy założeniu prawa Amdahla bez narzutów na komunikację Dopasowanie przy założeniu prawa Amdahla z narzutami na komunikację Linia „teoretyczna”, odpowiadająca 100% sprawności

  29. Oprogramowanie do obliczeń równoległych • System operacyjny • Języki wysokiego poziomu • Kompilatory • Biblioteki procedur numerycznych • Biblioteki do sterowania zadaniami • Narzędzia do wspomagania programowania, uruchamiania i profilowania

  30. Paradygmaty programowania równoległego • Możliwe rzadkie używanie bariery • Minimalizacja czasu zajmowanego przez mechanizmy synchronizacji (pamięć wspólna) • Minimalizacja czasu zajmowanego przez mechanizmy komunikacji (pamięć rozproszona)

  31. Stopień ziarnistości obliczeń równoległych • Ziarnistość opisuje ilość operacji obliczeniowych między punktami synchronizacji • Ilość danych przypadająca na procesor, częstotliwość komunikacji i synchronizacji • Grube ziarno, ang. coarse grain • Drobne ziarno, ang. fine grain

  32. Oprogramowanie do obliczeń równoległych

  33. Maszyny z pamięcią wspólną • Procesy • Mechanizmy komunikacji międzyprocesowej (IPC) • Mechanizm wątków (thread) • Tworzenie, niszczenie, identyfikacja, punkty synchronizacji (zamek, semafor) • Lokalne zmienne wątku • Dyrektywy kompilatora • Standard OpenMP

  34. SUBROUTINE MULKJI(A,B,C,N) C C Multiply A=B*C using index order K/J/I C DIMENSION A(N,N),B(N,N),C(N,N) C TIME3=TIMEF() CALL SECOND(TIME1) CMIC$ DO ALL SHARED(N, A, B, C) PRIVATE(K, J, I) DO 30 K=1,N DO 20 J=1,N CDIR$ IVDEP DO 10 I=1,N A(I,K)=A(I,K)+B(I,J)*C(J,K) 10 CONTINUE 20 CONTINUE 30 CONTINUE CALL SECOND(TIME2) TIME4=TIMEF() TEMP=(TIME4-TIME3)/1000.0 WRITE(*,’(1X,A,I5,A,G14.6,A,G14.6)’) *'MULIJK - N=',N,' CPU=',TIME2-TIME1,' Elapsed=',TEMP RETURN END

  35. Maszyny z pamięcią lokalną • High Performance Fortran (HPF) język dyrektyw zrównoleglających (data parallelism) • Linda: globalna baza danych (tuple space) out,eval,in,inp,rd,rdp • Parallel Virtual Machine (PVM) • Message Passing Interface (MPI)

  36. PROGRAM main IMPLICIT NONE INTEGER N PARAMETER (N=1000) INTEGER i, procnum(N), procsum(N), sum1, sum2 !HPF$ DISTRIBUTE PROCNUM(BLOCK) !HPF$ ALIGN PROCSUM(I) WITH PROCNUM(I) FORALL (i = 1:N) procnum(i) = i sum1 = SUM(procnum) PRINT *, 'Sum using global reduction is ', sum1 procsum = 0 DO i = 1, N procnum = CSHIFT(procnum,1) procsum = procsum + procnum END DO sum2 = procsum(1) PRINT *, 'Sum using local shifts is ', sum2 FORALL (i = 1:N) procnum(i) = procsum(i) - procsum(1) END FORALL IF (SUM(procnum) .EQ. 0) THEN PRINT *, 'Array values are the same.' ELSE PRINT *, 'OOPS! Array values are not the same!' ENDIF STOP END

  37. PVM • 1989 Oak Ridge National Laboratory • Komputery połączone siecią tworzą równoległą maszynę wirtualną • Biblioteka procedur i funkcji do tworzenia procesów użytkownika oraz przesyłania komunikatów miedzy procesami

  38. MPI • 1993 spotkania producentów i użytkowników maszyn równoległych • Standard interfejsu do przesyłania komunikatów opracowany przez MPI Forum • MPI jest nadzbiorem funkcji oferowanych przez PVM • wszystkie procesy maja wspólny kod

  39. Charakterystyka standardowego interfejsu przesyłania wiadomości MPI: • Kod jest napisany w „zwyczajnym” języku programowania (Fortran 77, Fortran 90, C, C++); przesyłanie wiadomości jest realizowane poprzez wywołanie odpowiednich procedur lub funkcji. • Wszystkie zmienne są lokalne dla danego procesora; inny procesor może je uzyskać tylko poprzez wymianę wiadomości. • Zwykle każdy procesor realizuje ten sam program wykonywalny (Single Program Multiple Data; SPMD), jednak występuje podział na procesor (procesory) nadzorujące (master) oraz „robotników” (workers) lub „niewolników” (slaves); realizują one inne fragmenty kodu, niż master. • IF (ME == MASTER) THEN • CALL SUB_MASTER(parametry) • ELSE • CALL SUB_WORKER(parametry) • ENDIF • W celu umożliwienia realizacji innych części kodu przez dany procesor lub grupę procesorów, każdy procesor ma własny identyfikator (0, 1, ..., NPROC-1).

  40. Konstrukcja systemu przesyłania wiadomości

  41. Definicja i konstrukcja wiadomości Wiadomość: pakiet danych przemieszczających się między procesorami. Podobnie jak list czy faks, oprócz właściwych przesyłanych danych musi ona być opakowana w „kopertę” (zawierać nagłówek) umożliwiający jej dostarczenie do właściwego odbiorcy:

  42. Koperta musi zawierać następujące informacje dla systemu przesyłania wiadomości: • Procesor wysyłający • Lokalizacja źródła wiadomości • Typ przesyłanych danych • Długość przesyłanych danych • Procesor(y) odbierające • Lokalizacja odbiorcy wiadomości • Wielkość buforu odbiorcy

  43. Rodzaje przesyłania wiadomości • W zależności od zachowania nadawcy po wysłaniu wiadomości, przesyłanie dzielimy na: • Asynchroniczne (asynchronous send) - nadawca wysyła wiadomość i nie interesuje się jej dalszymi losami. Można to porównać do wysłania okolicznościowej kartki do dalszego znajomego. • Synchroniczne - (synchronous send) nadawca żąda potwierdzenia dotarcia wiadomości. • W zależności od dalszej jego akcji dalszy podział jest następujący: • Wstrzymujące (blocking send) - nadawca wstrzymuje dalszą akcję do czasu potwierdzenia dotarcia wiadomości (można to porównać z wysyłaniem faksu lub rozmową telefoniczną). W MPI ten tryb wysyłania wiadomości jest standardem. • Niewstrzymujące (nonblocking send) - nadawca po wysłaniu wiadomości może wykonywać coś innego, po czym sprawdza, czy wiadomość dotarła. Realizacja operacji „niewstrzymujących” jest kontynuowana po powrocie do programu wywołującego. Po każdej instrukcja przesyłania „niewstrzymującego” powinna następować odpowiadająca jej instrukcja oczekiwania na potwierdzenie odbioru wiadomości. Jeżeli instrukcja oczekiwania jest kolejną instrukcją po instrukcji wysłania, jest to równoważne przesyłaniu ``wstrzymującemu''

  44. Asynchroniczne wysyłanie wiadomości (nadawca jedynie wie, że wiadomość została wysłana)

  45. Synchroniczne przesyłanie wiadomości (nadawca otrzymuje potwierdzenie dotarcia wiadomości)

  46. „Niewstrzymujące” przesyłanie wiadomości ( nonblocking send)

  47. Komunikacja zbiorowa (kolektywna) W MPI podstawowym trybem komunikacji jest tryb międzypunktowy „od procesora do procesora”. Dla ułatwienia pisania złożonych programów równoległych, które wymagają zebrania danych od wszystkich procesorów, rozesłania danych przez „nadzorcę” do „robotników”, synchronizacji procesorów, itp. wprowadzono tryb komunikacji zbiorowej, realizowany przez odpowiednie procedury MPI. Trzy najczęściej spotykane sytuacje: synchronizacja, broadcast (rozesłanie danych) i redukcja (zgrupowanie danych) są zilustrowane na poniższych rysunkach. Bariera - synchronizacja procesów

  48. Broadcast - jeden procesor przesyła dane do pozostałych

  49. Redukcja - procesory przekazują dane do jednego, np. w celu ich zsumowania

More Related