Literatura - Poznań University of Technology · 3/26/2018 Przetwarzanie równoległe -wstęp 22....

24
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

Transcript of Literatura - Poznań University of Technology · 3/26/2018 Przetwarzanie równoległe -wstęp 22....

Page 1: Literatura - Poznań University of Technology · 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.

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

Page 2: Literatura - Poznań University of Technology · 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.

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

Page 3: Literatura - Poznań University of Technology · 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.

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

Page 4: Literatura - Poznań University of Technology · 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.

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

Page 5: Literatura - Poznań University of Technology · 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.

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

Page 6: Literatura - Poznań University of Technology · 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.

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

Page 7: Literatura - Poznań University of Technology · 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.

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 ||

Page 8: Literatura - Poznań University of Technology · 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.

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

Page 9: Literatura - Poznań University of Technology · 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.

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

Page 10: Literatura - Poznań University of Technology · 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.

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

Page 11: Literatura - Poznań University of Technology · 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.

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

Page 12: Literatura - Poznań University of Technology · 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.

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

Page 13: Literatura - Poznań University of Technology · 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.

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)

Page 14: Literatura - Poznań University of Technology · 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.

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.

Page 15: Literatura - Poznań University of Technology · 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.

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.

Page 16: Literatura - Poznań University of Technology · 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.

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

Page 17: Literatura - Poznań University of Technology · 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.

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

Page 18: Literatura - Poznań University of Technology · 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.

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);

Page 19: Literatura - Poznań University of Technology · 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.

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

Page 20: Literatura - Poznań University of Technology · 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.

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

Page 21: Literatura - Poznań University of Technology · 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.

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

Page 22: Literatura - Poznań University of Technology · 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.

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

Page 23: Literatura - Poznań University of Technology · 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.

Równoległe sumowanie elementów

3/26/2018 Przetwarzanie równoległe - wstęp 23

Page 24: Literatura - Poznań University of Technology · 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