Literatura - Poznań University of Technology · 3/26/2018 Przetwarzanie równoległe -wstęp 22....
Transcript of Literatura - Poznań University of Technology · 3/26/2018 Przetwarzanie równoległe -wstęp 22....
Literatura
1. Wprowadzenie do obliczeń równoległych, Zbigniew Czech, Wydawnictwo Naukowe PWN, 2010, 2013
2. Introduction to Parallel Computing; Grama, Gupta, Karypis, Kumar; Addison Wesley 2003
3. Designing and Building Parallel Programs; I.Foster,
3/26/2018 Przetwarzanie równoległe - wstęp 1
3. Designing and Building Parallel Programs; I.Foster, http://www-unix.mcs.anl.gov/dbpp/
4. Podstawy programowania współbieżnego, M. Ben-Ari, WNT
5. Programowanie współbieżne i rozproszone, Z.Weiss, T.Gruźlewski, WNT
6. Software Optimization for High-Performance Computing; Wadleigh, Crawford, Prentice Hall 2000
Materiały związane z przedmiotem
www.cs.put.poznan.pl/rwalkowiak
Użutkownik: student
Hasło: 3.10.2017Hasło: 3.10.2017
3/26/2018 Przetwarzanie równoległe - wstęp 2
Konsultacje
• W trakcie zajęć semestru
• W poniedziałki w godz. 18.30-20.00
• Zapraszam do konsultacji zagadnień • Zapraszam do konsultacji zagadnień związanych z przedmiotem: projekty, zadania egzaminacyjne, wykładany materiał.
3/26/2018 Przetwarzanie równoległe - wstęp 3
Zmiany w stosunku do ubiegłych lat
• Zaliczenie w formie egzaminu – podczas sesji.
• Forma pytań zaliczeniowych nie zmienia się.• Forma pytań zaliczeniowych nie zmienia się.
• Pytania problemowe jako test zrozumienia zagadnień z zakresu przetwarzania równoległego.
3/26/2018 Przetwarzanie równoległe - wstęp 4
Przykład 1 zadania egz.
• Proszę skorzystać z prawa Amdahla. Sp(s;p) jest to przyspieszenie dla obliczeń charakteryzujących się częścią sekwencyjną (niezrównoleglającą się) równą s przeprowadzonych na p procesorach. Analogicznie oznaczona jest efektywność E(s;p). Wiadomo z prawa Amdahla, że przyspieszenie wzrasta z liczbą procesorów. Wiadomo też, że efektywność obliczeń spada wraz z Wiadomo też, że efektywność obliczeń spada wraz z liczbą procesorów. Proszę powiedzieć:
– Ile i dlaczego będą równe Sp(s;p=nieskończoność), E(s;p=nieskończoność)?
– Proszę wyjaśnić ile wynosi iloraz E(s=0,2; p=nieskończoność)/ E(s=0,4; p=nieskończoność)?
3/26/2018 Przetwarzanie równoległe - wstęp 5
Przykład 2 zadania egz.Za pomocą odpowiedniej funkcji przydzielono 4 wątki na 4
procesory systemu równoległego (z prywatnymi pamięciami podręcznymi o długości linii pp 64 bajty). Obliczenia 4 wątków utworzonych dla kodu podanego poniżej korzystają ze zmiennych współdzielonych typu float (4 bajty). Zmienne i oraz n są przechowywane w rejestrach. – 0,5 Z ilu różnych obiektów zmiennych korzystają wątki - proszę
wymienić wszystkie ? Które obiekty zmiennych są prywatne a które są współdzielone? są współdzielone?
– 1,0 Proszę wyjaśnić - Ile wynosi stosunek trafień do pp dla dostępów (odczyty i zapisy) do zmiennych współdzielonych, a ile do zmiennych prywatnych?
int i,n;float a[n],Suma;………#pragma omp parallel for reduction(Suma:+) schedule(static,1)for (i=0; i<n; i++)Suma+=a[i]];
3/26/2018 Przetwarzanie równoległe - wstęp 6
Zakres przedmiotu
1. Motywacje do zagadnień przetwarzania ||
2. Architektury maszyn ||
3. Modele przetwarzania ||
4. Podstawy projektowania algorytmów ||
3/26/2018 Przetwarzanie równoległe - wstęp 7
4. Podstawy projektowania algorytmów ||
5. Ocena efektywności programów ||
6. Komunikacja w systemach ||
7. Algorytmy ||
Dlaczego warto studiować przetwarzanie równoległe ?
• Przetwarzanie sekwencyjne jest dziś całkiem szybkie
• Jednak:– Potrzebujemy ciągle rosnącej wydajności– Potrzebujemy ciągle rosnącej wydajności
– Budujemy systemy równoległe np. procesory wielordzeniowe, wieloprocesorowe karty graficzne
– Potrzebujemy umiejętności tworzenia programów równoległych
– Równoległość to duże wyzwanie intelektualne dla informatyki – modele, języki, algorytmy, sprzęt
3/26/2018 Przetwarzanie równoległe - wstęp 8
Zamiana sytuacji w technologii mikroprocesorów
Lata 1986- 2002 mikroprocesory przyspieszały średnio z roku na rok o około 50% (większa efektywność obliczeń)
Od 2003:
• wzrost efektywności około 20% na rok,
• obserwacja granic wzrostu prędkości wynikających z: – właściwości fizycznych materiałów (odprowadzanie energii cieplnej, cieplno – właściwości fizycznych materiałów (odprowadzanie energii cieplnej, cieplno
- niestabilne systemy, opóźnienia transmisji sygnału),
– wykorzystania możliwości zrównoleglenia przetwarzania na poziomie pojedynczego procesora (długość słowa, superskalarność)
– wysokiej złożoności struktury mikroprocesora
Dziś równoległość przetwarzania nie tylko w superkomputerach i centrach naukowych. Zamiast projektować i realizować szybsze mikroprocesory umieszcza się wiele procesorów w ramach pojedynczego układu scalonego tzw. rdzenie.
3/26/2018 Przetwarzanie równoległe - wstęp 9
Oczekiwania na wzrost efektywności - przykłady
• Modelowanie klimatu, prognozowanie pogody
• Nauki biologiczne (badania genomu, struktury białek itp)
• Nauki biologiczne (badania genomu, struktury białek itp)
• Badania nad lekarstwami, szczepionkami
• Poszukiwania nowych źródeł energii
• Analiza danych w gospodarce
3/26/2018 Przetwarzanie równoległe - wstęp 10
Rola programistów – co jest problemem ?
• Dodatkowe rdzenie nie powodują wzrostu efektywności obliczeń - jeśli programiści ich nie wykorzystają ( wykorzystywane komputera tylko dla kodu sekwencyjnego).
• Efektywność przetwarzania programów sekwencyjnych nie wzrasta w systemach wielordzeniowych, nie wzrasta w systemach wielordzeniowych, wieloprocesorowych.
• Konieczne rozumienie sposobu działania systemów równoległych, wiedza o programowaniu równoległym i umiejętności przeprowadzenia równoległych obliczeńdla wykorzystania procesorów wielordzeniowych i kart graficznych.
3/26/2018 Przetwarzanie równoległe - wstęp 11
Możliwe podejścia w programowaniu dla systemów równolełych
• Ponowne napisanie programów sekwencyjnych aby stały się ||
• Zastosowanie programów zrównoleglających:
– Ograniczony zakres powodzenia
– Zrównoleglenie tylko pewnych konstrukcji kodowych –– Zrównoleglenie tylko pewnych konstrukcji kodowych –np. równoległe wykonanie pętli
– Trudne zadnie aby było efektywnie (możliwe?)
• Podejście „od nowa” - zaprojektowanie algorytmu ||, tak aby odzwierciedlał równoległość dostępną w problemie i metodzie jego rozwiązania.
3/26/2018 Przetwarzanie równoległe - wstęp 12
Dalsze uzasadnienia dla przetwarzania
równoległego
• Skrócenie czasu projektownia i wdrożenia systemów wieloprocesorowych (lub wielordzeniowych)– wykorzystanie standardowych interfejsów sprzętowych pozwala na
zastosowanie nowych architektur i technologii procesorów,
3/26/2018 Przetwarzanie równoległe - wstęp 13
– zaawansowane narzędzia projektowe i testujące.
• Postęp w standaryzacji środowisk przetwarzania równoległego zapewniający dłuższy cykl życia aplikacji równoległych (MPI, Open MP, OpenGL, CUDA)
Budowa sprzętu - równoległość wewnętrzna
• Wzrost złożoności układów scalonych (IC) –podwojenie złożoności w ciągu 18 miesięcy (wg Gordona Moora) poprzez nowe technologie wytwarzania IC.
• Dla wykorzystania możliwego technologicznie wzrostu złożoności IC i jego przekształcenia na wzrost
3/26/2018 Przetwarzanie równoległe - wstęp 14
wzrostu złożoności IC i jego przekształcenia na wzrost wydajności przetwarzania konieczna praca nad równoległością wewnętrzną procesora (potokowość, superskalarność i aby były możliwe: dynamiczne przetwarzania rozkazów, predykcja rozgałęzień, wstępne pobranie kodu i danych), konieczne zrozumienie równoległości wewnętrznej procesora.
Prędkość dostępu do pamięci(ang. memory wall)
powiązania z przetwarzaniem równoległym
• Przyrost prędkości zegarów procesorów przewyższa wzrost prędkości
dostępu do jednostki pamięci . Efektem jest konieczność korzystania z
szybszych systemów pamięci – pamięci podręcznej. Efektywność
systemów jest zależna od stopnia obsługi żądań dostępu do pamięci w
3/26/2018 Przetwarzanie równoległe - wstęp 15
ramach szybkiej pamięci podręcznej.
• Zasada lokalności obowiązująca przy projektowaniu algorytmu
równoległego prowadzi do kodu efektywnie korzystającego z pamięci
podręcznej – widoczne tutaj są korzyści z badań nad równoległością dla
zapewniania efektywności przetwarzania sekwencyjnego.
Lokalność przetwarzania, dostępu do danych
• W systemach równoległych ogólna przepustowość procesory-
pamięć jest większa niż w systemach jednoprocesorowych z
powodu:
– większej pamięci podręcznej,
– równoległego dostępu procesorów do pamięci.
• Wynik: podział na (równolegle realizowane) podproblemy
umożliwia większą lokalność przetwarzania i wyższą efektywność
dostępu do pamięci. Dodatkowo wzrost rozmiaru pp (w systemie
równoległym) prowadzi do efektywnego przetwarzania (możliwe
jest nawet skrócenie czasu przetwarzania w większym stopniu niż
wynikający z użytej liczby procesorów).
3/26/2018 Przetwarzanie równoległe - wstęp 16
Rozważmy prosty problem
1
Sumowanie elementów tablicya1 = __rdtsc();for(int i=0;i<MAX;i++)
32 5 65 7 48 5 31 0 13 1 11 1 11 7 1019
3/26/2018 Przetwarzanie równoległe - wstęp 17
suma+=table[i];a2 = __rdtsc();printf("Czas obliczeń =%llu us \n", (a2-a1)*3/10000);
Czas przetwarzania sekwencyjnego:• dla MAX 100000 i Intel 2,8 GHz i5 (4 rdzenie)• 250 us
Zróbmy to równolegle
P1 P2 P3 P4Sumowanie elementów tablicy za pomocą 4 procesówa1 = __rdtsc();
3/26/2018 Przetwarzanie równoległe - wstęp 18
a1 = __rdtsc();#pragma omp parallel#pragma omp for shared(table,suma)for(int i=0;i<MAX;i++)
suma+=table[i];a2 = __rdtsc();printf("Czas obliczeń =%llu us \n", (a2-a1)*3/10000);
Równoległe sumowanie elementów –wyścig
• Wyniki:
niepoprawne – wyścig w dostępie do współdzielonej zmiennej - rezultat nadpisania odczytanych i wykorzystywanych przez inny odczytanych i wykorzystywanych przez inny proces (na tym samych lub innym procesorze) wartości zmiennej suma
• Rozwiązanie:
– Synchronizacja dostępu do zmiennej współdzielonej
3/26/2018 Przetwarzanie równoległe - wstęp 19
Równoległe sumowanie elementów –poprawny program liczy się powoli
Rozwiązanie 2:
a1 = __rdtsc();
#pragma omp parallel
#pragma omp for shared(table,suma)
for(int i=0;i<MAX;i++)
#pragma omp atomic
suma+=table[i];suma+=table[i];
a2 = __rdtsc();
printf("Czas obliczeń =%llu us \n", (a2-a1)*3/10000);
Wynik poprawny: czas pracy około 2800 us czyli zamiast skrócenia
czasu obliczeń - 11 razy dłużej niż sekwencyjnie.
Dlaczego ?
3/26/2018 Przetwarzanie równoległe - wstęp 20
Równoległe sumowanie elementów#pragma omp parallel for
for(int i=0;i<MAX;i++)
#pragma omp atomic
suma+=table[i];
Koszty: • koszt dostępu do pamięci (dyrektywa atomic wprowadza odczyt i zapis wartości zmiennej z/do pamieci przed/po jej
L3
L2 L2L2 L2
Memory
3/26/2018 21
odczyt i zapis wartości zmiennej z/do pamieci przed/po jej wykorzystaniem • koszt dostępu do zamka (mutex_lock) dla synchronizacji dostępu do zmiennej na poziomie procesów • koszt przepisywania danych pomiędzy poziomami pamięci: procesorem, pamięcią podręczną L1 jednego rdzenia, wspóldzieloną pp L3, L1 innego rdzenia, a nawet do innego procesora (gdy wiele fizycznych procesorów)suma jest:
• współdzielona• modyfikowana ale nie jest lokalna !! – nie jest w sposób ciągły dostępna dla wątku w procesorze, na którym wątek jest przetwarzany
L1 L1 L1 L1
P1 P2 P3 P4
Przepisywanie wartości współdzielonej
Równoległe sumowanie elementów
Rozwiązanie 3:
Większa lokalność przetwarzania – prywatna suma
#pragma omp parallel
{
float sumal=0.0;
#pragma omp for
for(int i=0;i<MAX;i++) sumal+=table[i];
#pragma omp atomic ;poza pętlą – każdy wątek jeden raz#pragma omp atomic ;poza pętlą – każdy wątek jeden raz
suma+=sumal;
}
Czas przetwarzania na 4 procesorach: 70 us czyli 3,6 x szybciej niż sekwencyjnie.
Wnioski:
1. efektywna równoległość = maksymalizacja lokalności dostępów do danych
2. równoległość to często konieczność synchronizacji obliczeń (ale synchronizacji efektywnej – rzadko występującej).
3/26/2018 Przetwarzanie równoległe - wstęp 22
Równoległe sumowanie elementów
3/26/2018 Przetwarzanie równoległe - wstęp 23
Cele w programowaniu równoległym
• Skalowalność: kolejne procesory mogą zostać dodane dla szybszego rozwiązania problemurozwiązania problemu
• Wydajność: efektywnie wykorzystać dostępne procesory - przyspieszenie
• Przenośność: oprogramowanie nadające się do przenoszenia między systemami
3/26/2018 Przetwarzanie równoległe - wstęp 24