Wstęp do programowania równoległego Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl Maciej Cytowski m.cytowski@icm.edu.pl Wersja 1.PL, Październik 2009 15.02.2011 Wstęp do programowania równoległego 1
Plan Motywacja i cel wykładu Forma i program wykładu, zasady zaliczenia Wprowadzenie do programowania równoległego Koncepcja programowania równoległego Przykładowe zastosowania Rozwój architektur komputerowych, prawo Moore a Rodzaje równoległości Prawa Amdahl a i Gustafsona Skalowalność aplikacji Abstrakcyjne modele programowania równoległego 15.02.2011 Wstęp do programowania równoległego 2
Plan Motywacja i cel wykładu Forma i program wykładu, zasady zaliczenia Wprowadzenie do programowania równoległego Koncepcja programowania równoległego Przykładowe zastosowania Rozwój architektur komputerowych, prawo Moore a Rodzaje równoległości Prawa Amdahl a i Gustafsona Skalowalność aplikacji Abstrakcyjne modele programowania równoległego 15.02.2011 Wstęp do programowania równoległego 3
Motywacja wykładu Rozwiązywanie wielu zagadnień współczesnej nauki wymaga zastosowania obliczeń wielkiej skali Trendy w rozwoju współczesnych procesorów i komputerów wielordzeniowość, wieloprocesorowość, hybrydowość Sposób wydajnego wykorzystania współczesnych i przyszłych komputerów jest i będzie możliwy tylko dzięki zastosowaniu przetwarzania równoległego Początki programowania równoległego to lata 1960 1970 Obecnie programowanie równoległe oparte jest na: znanych od dekad modeli programowania równoległego, nowych paradygmatów programowania równoległego, językach przyszłości tworzonych dla przyszłych architektur komputerowych. Znajomość technik programowania równoległego to obowiązek każedgo programisty 15.02.2011 Wstęp do programowania równoległego 4
Cel wykładu Przegląd podstawowych zagadnień związanych z obliczeniami równoległymi Prezentacja najpopularniejszych narzędzi programowania równoległego Udostępnienie narzędzi dla zastosowań naukowych w obliczeniach i symulacjach Przybliżenie podstawowych metod obliczeń równoległych Popularyzacja programowania równoległego! projekty programistyczne, prace licencjackie, magisterskie, praca naukowa, praca zawodowa 15.02.2011 Wstęp do programowania równoległego 5
Plan Motywacja i cel wykładu Forma i program wykładu, zasady zaliczenia Wprowadzenie do programowania równoległego Koncepcja programowania równoległego Przykładowe zastosowania Rozwój architektur komputerowych, prawo Moore a Rodzaje równoległości Prawa Amdahl a i Gustafsona Skalowalność aplikacji Abstrakcyjne modele programowania równoległego 15.02.2011 Wstęp do programowania równoległego 6
Forma wykładu Dwie części: wykład/szkolenia laboratorium Zasady zaliczenia: równoległa implementacja algorytmu z wykorzystaniem zaprezentowanych narzędzi konsultacje podczas zajęć Komputery: dostęp do superkomputerów ICM i ich środowisk programistycznych Materiały: Dostęp poprzez główną stronę ICM: http://www.icm.edu.pl/ (zakładka Edukacja) 15.02.2011 Wstęp do programowania równoległego 7
Program wykładu Wstępny program: 1. Wstęp do programowania równoległego (W) 2. Podstawowe zagadnienia programowania równoległego (W) 3. Biblioteka MPI (S) 4. Biblioteka MPI (S) 5. Biblioteka MPI (L) 6. Biblioteka MPI-2 (S) 7. Programowanie w modelu OpenMP (S) 8. Programowanie w modelu OpenMP (S) 9. Programowanie w modelu OpenMP (L) 10. Nowe paradygmaty programowania równoległego (hybrydowe, PGAS i inne) (W) 11. Programowanie w modelu MPI + OpenMP (L) 12. Praca nad projektem zaliczeniowym (L) 13. Praca nad projektem zaliczeniowym (L) 14. Praca nad projektem zaliczeniowym (L) W wykład, S szkolenie, L laboratorium 15.02.2011 Wstęp do programowania równoległego 8
Wycieczka Planowana jest wycieczka do serwerowni ICM (pod koniec semestru). Jak wyglądają współczesne superkomputery i centra danych? Budowa maszyn obliczeniowych i systemów przechowywania danych. Budowa infrastruktury zasilania i chłodzenia dużych serwerowni. ICM UW, Ul. Pawińskiego 5a (blok D) Piętro -1 oraz -2 15.02.2011 Wstęp do programowania równoległego 9
Konta w ICM Konta dostępowe do ICM i naszych maszyn obliczeniowych będą "imienne". Proszę każdego z Was o przesłanie propozycji loginu (max 8 znaków, tylko małe litery alfabetu łacińskiego lub cyfry, pierwszym znakiem musi być litera). Domyślnie konta otwierane będą do czasu zakończenia aktywności związanej z zajęciami w danym semestrze. Istnieje jednak możliwość przedłużenia ich ważności, jeśli zdecydujecie się na dalsze obcowanie z programowaniem równoległym, do czego gorąco zachęcamy! 15.02.2011 Wstęp do programowania równoległego 10
Plan Motywacja i cel wykładu Forma i program wykładu, zasady zaliczenia Wprowadzenie do programowania równoległego Koncepcja programowania równoległego Przykładowe zastosowania Rozwój architektur komputerowych, prawo Moore a Rodzaje równoległości Prawa Amdahl a i Gustafsona Skalowalność aplikacji Abstrakcyjne modele programowania równoległego 15.02.2011 Wstęp do programowania równoległego 11
Czym są obliczenia równoległe? Obliczenia równoległe to takie, w których wiele operacji obliczeniowych wykonuje się jednocześnie w ramach dostępnych jednostek obliczeniowych (procesorów, rdzeni, węzłów obliczeniowych). Bardzo często duże problemy obliczeniowe mogą być podzielone na mniejsze podproblemy, które mogą wykonywać się jednocześnie. Przez wiele lat obliczenia równoległe wykonywane były jedynie w branży HPC (High Performance Computing). Dzisiaj wiedza o programowaniu równoległym i umiejętności przeprowadzania równoległych obliczeń potrzebne są wszystkim 15.02.2011 Wstęp do programowania równoległego 12
Przykładowe projekty Blue Brain Project (EPFL & IBM) symulacje oddziaływań w sieci neuronów mózgu szczura 22.8 Tflops BG/L 100 milionów neuronów (połowa mózgu szczura) 1 PFlops 1 bilion neuronów ludzki mózg 100 bilionów neuronów Millenium Simulation (2005) Symulacja kosmologiczna powstawania m.in. galaktyk Więcej niż 10 10 cząstek Prognozowanie pogody 48 godzinna prognoza na ok.200 rdzeniach 1,5 godziny obliczeń 15.02.2011 Wstęp do programowania równoległego 13
Obszary zastosowań Obronność i bezpieczeństwo Przeszukiwanie olbrzymich zbiorów danych Symulacje klimatu i atmosfery Dynamika molekularna Chemia obliczeniowa Bioinformatyka Fizyka wysokich energii Obliczenia inżynierskie Grafika wysokiej jakości 15.02.2011 Wstęp do programowania równoległego 14
Jak zmienia się wydajność komputerów na przestrzeni lat? Komputer przenośny Osborne Executive z 1982 roku i iphone z roku 2007. Komputer Executive waży 100 razy więcej, jest mniej więcej 500 razy większy, kosztuje 10 razy więcej i ma 100 krotnie mniejsze taktowanie procesora. http://en.wikipedia.org/wiki/moore s_law 15.02.2011 Wstęp do programowania równoległego 15
Prawo Moore a Prawo Gordona E. Moore a rok 1965 ilość tranzystorów w układach scalonych rośnie wykładniczo, podwajając się mniej więcej co dwa lata http://en.wikipedia.org/wiki/moore s_law 15.02.2011 Wstęp do programowania równoległego 16
Coraz szybciej Czy możemy zbudować procesor o częstotliwości 1THz? 20 czerwca 2006 Georgia Tech i IBM przedstawiły procesor działający z częstotliwością ponad 500 GHz Wykonanie: krzem i german Chłodzenie: ciekły hel Temperatura: 4.5K ~ -268.65 C Częstotliwość w temp. pokojowej: 350GHz Pobór mocy:?? Pobór mocy: P = C V 2 F C pojemność elektryczna liczona na cykl V napięcie elektryczne F częstotliwość 7 Maj 2004 the end of frequency scaling Intel wstrzymuje rozwój technologii Tejas i Jayhawk (następców Pentium4 i Xeon) ~ 7GHz 15.02.2011 Wstęp do programowania równoległego 17
Ograniczenia w budowie mikroprocesorów Power Wall zapotrzebowanie na moc rośnie wraz ze wzrostem szybkości procesora Memory Wall rosnąca dysproporcja pomiędzy szybkością procesorów a szybkością dostępu do pamięci (ograniczona przepustowość pamięci) Wskaźnik Byte/Flop. Multicore i architektury dedykowane AMD Barcelona QuadCore PowerXCell8i MD Grape-3 NVIDIA Fermi Nowa interpretacja prawa Moore a Ilość rdzeni przypadających na pojedyncze gniazdo procesora będzie się podwajać co dwa lata. 15.02.2011 Wstęp do programowania równoległego 18
Superkomputery i ich wydajność Superkomputery to maszyny wieloprocesorowe o dużej wydajności obliczeniowej Wydajność obliczeniowa mierzona jest zwykle jako liczba Flop/s (Floating Point Operations Per Second) Przykładowe wyliczenie dla procesora AMD Opteron Barcelona: 2.3 GHz * 4 rdzenie * 4 operacje w cyklu = 36.8 Giga Flop/s Obecnie największe superkomputery osiągają wydajność 1 Peta Flop/s = 10 15 Flop/s Lista TOP500 klasyfikacja 500 najmocniejszych superkomputerów świata pod względem wydajności praktycznej na komputerach uruchamiany jest program LINPACK z dziedziny algebry liniowej miejsce komputera na liście zależy od liczby Flop/s zmierzonych programem LINPACK 15.02.2011 Wstęp do programowania równoległego 19
Rozwój HPC na przestrzeni lat The TOP500 Project: Looking Back over 15 Years of Supercomputing Experience Hans Werner Meuer 15.02.2011 Wstęp do programowania równoległego 20
Największe superkomputery świata - Jaguar Jaguar Cray XT5 Procesor: AMD Opteron 6 core 2.6 GHz System: Linux Rpeak: 2.3 Pflop/s Rmax: 1.7 Pflop/s Liczba rdzeni: 224 162 Miejsce instalacji: Oak Ridge National Laboratory 15.02.2011 Wstęp do programowania równoległego 21
Rodzaje równoległości Równoległość na poziomie bitów (bit-level parallelizm) zwiększanie długości słowa procesora wpływa na ilość instrukcji potrzebnych do wykonania operacji na zmiennych, których wielkość jest większa niż długość słowa Równoległość na poziomie instrukcji (instruction level parallelizm ILP) techniki implementowane zazwyczaj przez kompilator i wykorzystujące specjalną budowę mikroprocesorów, które umożliwiają uruchamianie niezależnych od siebie instrukcji równocześnie, np.: Potokowość (instruction pipelining): wykorzystanie specjalizowanych grup logicznych procesora ustawionych w potok do wykonywania podobnych operacji jedna po drugiej Pobranie instrukcji z pamięci instruction fetch (IF) Zdekodowanie instrukcji instruction decode (ID) Wykonanie instrukcji execute (EX) Dostęp do pamięci memory access (MEM) Zapisanie wyników działania instrukcji write back (WB) Wykonanie poza kolejnością (out-of-order execution): zdolność mikroprocesorów do wykonywania instrukcji poza zdefiniowaną kolejnością; kolejne instrukcje wstawiane są do bufora i uruchamiane gdy zależności są spełnione i odpowiednia jednostka wykonująca (functional unit) jest gotowa Wykonywanie spekulatywne (speculative execution): zdolność mikroprocesorów przetwarzających instrukcje potokowo do wykonywania instrukcji znajdujących się za skokiem warunkowym, co do którego jeszcze nie wiadomo, czy nastąpi 15.02.2011 Wstęp do programowania równoległego 22
Rodzaje równoległości Równoległość na poziomie danych (data parallelizm) ten sam zestaw instrukcji wykonywany jest na całych blokach danych (na kilku elementach równocześnie), np.: instrukcje wektorowe SIMD Równoległość na poziomie pętli (loop-level parallelizm) iteracje konkretnej pętli w kodzie rozdzielane są pomiędzy dostępnymi jednostkami obliczeniowymi np. w postaci wątków (model OpenMP) #pragma omp parallel for for (i = 0; i < N; i++) a[i] = 2 * i; Równoległość na poziomie zadania (task parallelizm) obliczenia realizowane są przez wiele jednostek obliczeniowych realizujących różne wątki, czy procesy na tych samych lub różnych danych program:... if CPU="a" then do task "A" else if CPU="b" then do task "B" end if... end program 15.02.2011 Wstęp do programowania równoległego 23
Rodzaje równoległości Równoległość na poziomie konstrukcji algorytmu Operacja wygładzania danych Input: tablica 1D z liczbami zmiennoprzecinkowymi Algorytm: każdemu elementowi tablicy przypisujemy średnią jego dwóch sąsiadów proces ten wykonujemy N-razy Output: tablica z wygładzonymi danymi Różne rozważania i optymalizacje: minimalizacja komunikacji, load balancing, 15.02.2011 Wstęp do programowania równoległego 24
Programowanie komputerów równoległych Wątki Programowanie za pomocą biblioteki POSIX threads. Podstawowe operacje: pthread_create, pthread_run, pthread_join, pthread_mutex,.. Wymiana komunikatów Programowanie za pomocą biblioteki MPI (Message Passing Interface) Podstawowe operacje: MPI_Init, MPI_Send, MPI_Recv, MPI_Barrier,.. Dyrektywy kompilatora Programowanie za pomocą OpenMP zestaw dyrektyw kompilatora. Przykład: #pragma omp parallel for for (i = 0; i < N; i++) a[i] = 2 * i; 15.02.2011 Wstęp do programowania równoległego 25
Programowanie komputerów równoległych Inne bardziej egzotyczne modele programowania równoległego: łączone MPI i OpenMP UPC (Unified Parallel C) Co-Array Fortran Nowoczesne języki programowania równoległego: CUDA dla GPGPU OpenCL, Cell SuperScalar RapidMind Chapel, X10, Fortres 15.02.2011 Wstęp do programowania równoległego 26
Ograniczenia programowania równoległego Jaką maksymalną wydajność może uzyskać nasz program, jeśli: użyjemy szybszego procesora, użyjemy kilku lub wielu procesorów. Odpowiedzi na takie pytania szukano w latach 60tych XX wieku 15.02.2011 Wstęp do programowania równoległego 27
Gene Amdahl Urodzony 16 listopada 1922 w USA w rodzinie skandynawskich imigrantów Architekt komputerowy IBM: praca nad systemami mainframe Potem: Amdahl Corporation Znany głównie ze względu na publikację: Validity of the single processor approach to achieving large scale computing capabilities, IBM Sunnyvale, California, AFIPS Spring Joint Computer Conference, 1967 Na podstawie pracy G.Amdahla sformułowane zostało jedno z najbardziej znanych praw w dziedzinie obliczeń równoległych Prawo to do dziś nazywane Prawem Amdahl'a wyraża ograniczenia w prowadzeniu obliczeń równoległych 15.02.2011 Wstęp do programowania równoległego 28
Prawo Amdahla (1967) Prawo Amdahla Potencjalne możliwe przyśpieszenie S algorytmu o jest równe: n liczba procesów T S( n) 1 T n F 1 1 F n T_ - czas wykonania algorytmu F udział części nierównoległej http://en.wikipedia.org/wiki/parallel_computing 15.02.2011 Wstęp do programowania równoległego 29
Prawo Amdahla (1967) http://en.wikipedia.org/wiki/parallel_computing 15.02.2011 Wstęp do programowania równoległego 30
Krytyka prawa Amdahl a Prawo i teoria Amdahl a znalazła wielu krytyków Główny zarzut: prawo Amdahl a ma zastosowanie tylko dla aplikacji z niezmiennym rozmiarem zadania 1h 1h 2h 1h 1h 1h 1h Maksymalny speed-up: 2x 15.02.2011 Wstęp do programowania równoległego 31
Prawo Gustafsona (1988) Każdy wystarczająco duży problem może być efektywnie zrównoleglony P ilość procesorów, S przyśpieszenie, alfa część programu, której nie da się zrównoleglić 1h 1h 4h 2h 2h 1h 1h Maksymalny speed-up: >2x 15.02.2011 Wstęp do programowania równoległego 32
Skalowalność Speed-up przyśpieszenie - stosunek czasu wykonania algorytmu i liczby użytych procesów Skalowalność zmiana czasu wykonania programu mierzona dla zmiennej liczby procesorów lub zmiennego rozmiaru zadania Program równoległy jest uznawany za optymalny gdy jego skalowalność jest bliska liniowej W zastosowaniach znane jest mało programów optymalnych dla liczby procesorów większej od kilkunastu Rodzaje skalowalności: Strong scalability stały rozmiar problemu, zmienna liczba procesów Weak scalability stała liczba procesów, zmienny rozmiar zadania 15.02.2011 Wstęp do programowania równoległego 33
Plan Motywacja i cel wykładu Forma i program wykładu, zasady zaliczenia Wprowadzenie do programowania równoległego Koncepcja programowania równoległego Przykładowe zastosowania Rozwój architektur komputerowych, prawo Moore a Rodzaje równoległości Prawa Amdahl a i Gustafsona Skalowalność aplikacji Abstrakcyjne modele programowania równoległego 15.02.2011 Wstęp do programowania równoległego 34
Model idealnego komputera równoległego PRAM = Parallel Random Access Machine n jednostek obliczeniowych oraz globalna jednorodna pamięć Jednostki są sterowane wspólnym zegarem, ale mogą wykonywać różne instrukcje w każdym cyklu Wspólna pamięć P{1} P{2}.. P{n} Model PRAM ignoruje wpływ i koszty komunikacji między komponentami komputera równoległego 15.02.2011 Wstęp do programowania równoległego 35
Model PRAM c.d. Modele typu PRAM: Exclusive-read, exclusive-write najbardziej restrykcyjny (i realistyczny) model, dostęp do elementu pamięci ma jednocześnie tylko jeden procesor Concurrent-read, exclusive-write jednoczesny odczyt z pamięci, zapis do pamięci na wyłączność Exclusive-read, concurrent-write Concurrent-read, concurrent-write najmniej restrykcyjny model dający największą swobodę w projektowaniu algorytmu, ale najmniej realistyczny Modele PRAM służą do projektowania i analizy algorytmów Realizacja komputera typu PRAM dla dużej liczby n, jest technicznie bardzo złożona i kosztowna 15.02.2011 Wstęp do programowania równoległego 36
Klasyfikacja modeli równoległości Taksonomia Flynna SISD = Single Instruction Single Data Klasyczny komputer skalarny wykonujący kolejne instrukcje, jedna po drugiej na pojedynczych danych SIMD = Single Instruction Multiple Data Procesor / komputer potrafi wykonać pojedynczą instrukcję dla całego potoku (wektora) danych (procesor wektorowy) Zakłada równoległość danych MISD = Multiple Instruction Single Data Komputer potrafi wykonać jednocześnie zbiór instrukcji na jednej danej MIMD = Multiple Instruction Multiple Data Zbiór procesorów może wykonywać równolegle i niezależnie instrukcje na wielu danych Najczęściej spotykana forma równoległości sprzętowej 15.02.2011 Wstęp do programowania równoległego 37
Klasyfikacja modeli równoległości Rozszerzenia modelu MIMD: SPMD = Single Program Multiple Data pojedynczy program jest uruchamiany w wielu kopiach na różnych zestawach danych najbardziej rozpowszechniony sposób tworzenia programów równoległych a.out a.out a.out P{1} P{2}.. P{2} dane MPMD = Multiple Program Multiple Data wiele niezależnych procesorów wykonuje równolegle różne programy 15.02.2011 Wstęp do programowania równoległego 38
Typy architektur równoległych i hierarchia równoległości Model pamięci współdzielonej Procesory współdzielą globalną, wspólną przestrzeń adresowa szybka komunikacja i synchronizacja ograniczona liczba procesorów, pojemna pamięć CPU CPU pamięć CPU CPU 15.02.2011 Wstęp do programowania równoległego 39
sieć komputerowa Typy architektur równoległych i hierarchia równoległości Model pamięci rozproszonej Procesory operują na prywatnej, lokalnej pamięci nieograniczona liczba procesorów, ograniczona ilość pamięci koszt komunikacji rośnie z liczbą procesorów błędy trudne do wyśledzenia CPU pamięć CPU CPU CPU pamięć pamięć pamięć 15.02.2011 Wstęp do programowania równoległego 40
Hierarchia równoległości systemowej Procesory superskalarne i procesory wektorowe Równoległość na poziomie instrukcji Jednostki wielowątkowe Procesory wielordzeniowe Systemy SMP / Systemy NUMA Klastry Systemy masywnie równoległe Pojedynczy chip Wiele chipów Pojedynczy system Wiele systemów Pojedyncza instalacja Gridy Wiele systemów, wiele instalacji 15.02.2011 Wstęp do programowania równoległego 41
Modele równoległości drobno- i gruboziarnistej Trywialna równoległość całkowita niezależność danych (embarrassingly parallel) Nie-trywialna równoległość zależność danych Proporcja ilości komunikacji względem obliczeń (ziarnistość) częsta komunikacja, podział na małe zadania obliczeniowe (finegrained) sporadyczna komunikacja pomiędzy kosztownymi partiami obliczeń (coarse-grained) rozważana jest częstość operacji komunikacyjnych w ciągu sekundy 15.02.2011 Wstęp do programowania równoległego 42
Dekompozycja problemu obliczeniowego Dekompozycja problemu - podział na podproblemy Metoda i sposób podziału determinuje typ równoległości Stopień i schemat zależności podproblemów prowadzi do projektu algorytmu Gdy znamy zależności pomiędzy podproblemami: wybieramy model algorytmu odpowiednią architekturę komputera równoległego Interesuje nas poprawne i szybkie rozwiązanie problemu "stosowane" programowanie równoległe = obliczenia równoległe Analiza problemu Podział na podzadania Projekt algorytmu Realizacja 15.02.2011 Wstęp do programowania równoległego 43
Mapowanie i load-balancing Mapowanie - przydział procesów realizujących podproblemy do procesorów Równoważenie pracy pomiędzy procesorami (loadbalancing) 15.02.2011 Wstęp do programowania równoległego 44
Abstrakcyjne modele algorytmów równoległych Zrównoleglenie ze względu na dane (Data Parallel) Zadania są przydzielane statycznie do procesów na podstawie podziału danych wejściowych na podzbiory identyczne operacje są wykonywane równolegle na podzbiorach danych Task Graph model Algorytm odzwierciedla graf zależności podproblemów Stosowany dla problemów dających się podzielić na kaskadę niezależnych zadań Work Pool model Zadania są dynamicznie przydzielane do procesów w celu najlepszego zrównoważenia pracy Stosowany dla gdy rozmiar danych podproblemu jest mały w porównaniu z kosztem obliczeń Master-Slave Zakłada podział na wyróżnione procesy rozdzielające pracę (master) i wykonujące obliczenia (slave) Pipeline/Stream processing Strumień danych przepływa przez kolejne procesy przetwarzające 15.02.2011 Wstęp do programowania równoległego 45
Aspekty technologiczne obliczeń równoległych Nowe technologie wprowadzają nowe narzędzia dla programistów Czas życia niektórych narzędzi jest krótki Nie wszystkie rozwiązania są przenaszalne pomiędzy różnymi architekturami Przykładowo: Unified Parallel C, co-array Fortran Ograniczenia technologiczne zmuszają konstruktorów do wprowadzania coraz bardziej skomplikowanych rozwiązań Hierarchiczna pamięć Mechanizmy spójności Wydajność kontra niezawodność Ze względów ekonomicznych w obliczeniach równoległych wprowadza się rozwiązania masowe dominacja klastrów nad superkomputerami obliczenia na kartach graficznych i innych akceleratorach 15.02.2011 Wstęp do programowania równoległego 46
Analiza złożoności Analiza złożoności algorytmu równoległego Definicja złożoności/wydajności algorytmu (?) Musi zawierać czas wykonania oraz liczbę użytych procesów Powinna odwoływać się do wydajności odpowiedniego algorytmu sekwencyjnego Jak zmienia się koszt algorytmu ze zmianą rozmiaru danych wejściowych? Jak zmienia się koszt / czas wykonania ze zmianą stopnia równoległości? Znajomość systemu i jego architektury Czas wykonania może się znacznie różnić od wynikającego z analizy Skalowalność weak scaling kontra strong scaling Wpływ i uwarunkowanie sprzętowe Szybkość komunikacji Prędkość przesyłu transfer rate, opóźnienia - latency Czas synchronizacji rośnie (zwykle nieliniowo) z liczbą procesorów Operacje komunikacyjne mogą być wykonywane nie-deterministycznie 15.02.2011 Wstęp do programowania równoległego 47
Dziękujemy! 15.02.2011 Wstęp do programowania równoległego 48