Programowanie współbieżne Wykład 2 Iwona Kochańska
Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas obliczeń dla algorytmu równoległego przy pomocy p procesorów Przyspieszenie (ang. speedup) S(p) Idealnie: S(p)=p (przyspieszenie liniowe), W niektórych sytuacjach (rzadko): S(p)>p (przyspieszenie superliniowe ang. superlinear). Najczęściej: S(p)<p.
Miary skalowalności algorytmu równoległego Wydajność Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas obliczeń dla algorytmu równoległego przy pomocy p procesorów Wydajność (ang. efficiency) E(p) Wydajność jest stosunkiem osiągniętego przyspieszenia do idealnego przyspieszenia liniowego. E(p) = 1 oznacza przyspieszenie liniowe.
Prawo Amdahla Gene Amdahl twórca architektur komputerowych Wywód Amdahla używany jest do znajdowania maksymalnego spodziewanego zwiększenia wydajności całkowitej systemu jeżeli tylko część systemu została ulepszona. Założenia: pewna część programu w ogóle nie ulega przyspieszeniu przez równoległe przetwarzanie danych (przetwarzanie sekwencyjne). pozostała część jest przyspieszona p-krotnie na p procesorach (przyspieszenie liniowe) t s czas sekwencyjnego wykonania całego programu f stosunek czasu wykonania fragmentu nie dającego się przyspieszyć do czasu t s Prawo: zwiększenie szybkości wykonywania się programu przy użyciu wielu procesorów w obliczeniach równoległych jest ograniczane przez czas potrzebny do sekwencyjnego dzielenia programu.
Prawo Amdahla PRZYSPIESZENIE: Źródło: http://aragorn.pb.bialystok.pl/~wkwedlo/pc1.pdf
Prawo Amdahla Dysponując nawet nieskończoną liczbą procesorów, nie można przekroczyć przyspieszenia 1/f!
Prawo Amdahla W rzeczywistych problemach skalowalność jest gorsza od wynikającej z prawa Amdahla. Koszty komunikacji procesorów (rosną wraz ze wzrostem ich liczby) Niezrównoważenie obciążenia (ang. load imbalance) Potrzeba duplikacji obliczeń na różnych procesorach. Istotnym założeniem w prawie Amdahla jest stały rozmiar problemu. To założenie rzadko jest spełnione. Szybkie komputery buduje się po to aby rozwiązywać coraz bardziej skomplikowane problemy
Prawo Gustafsona Prawo Amdahla bazuje na ustalonym obciążeniu roboczym lub znanym rozmiarze problemu. Wynika z tego, że sekwencyjna część programu nie zmienia się wraz z rozmiarem maszyny (np. liczba procesorów), natomiast zrównoleglona część jest równomiernie rozdzielona na n procesorów. Prawo Gustafsona (znane także jako prawo Gustafsona-Barsisa): każdy wystarczająco duży problem może być efektywnie zrównoleglony. S(p) = p α (p-1) α - część procesu, której nie da się zrównoleglić. Prawo Gustafsona odnosi się do wad prawa Amdahla usuwa problem ustalonego rozmiaru problemu lub ustalonego ładowania obliczeń na równoległych procesorach zamiast tego, proponuje koncepcje ustalonego czasu, która prowadzi do skalowanego przyspieszenia.
Podstawowe pojęcia Program - sekwencja symboli opisująca realizowanie obliczeń zgodnie z pewnymi regułami zwanymi językiem programowania, wykonywana przez komputer. Program sekwencyjny program przeznaczony do wykonania przez jeden procesor (rdzeń) pojedynczy przepływ sterowania Program współbieżny (ang. concurrent program) składa się ze zbioru programów sekwencyjnych lub zadań obliczeniowych (ang. task), które mogą być wykonywane równolegle Proces abstrakcja działającego programu. Program może składać się z większej liczby procesów. Każdy nowo powstały proces otrzymuje unikatowy numer, który go jednoznacznie identyfikuje, tzw. PID (od ang. process identifier). Wątek - część programu wykonywana współbieżnie w obrębie jednego procesu; w jednym procesie może istnieć wiele wątków.
Proces Każdemu procesowi przydzielone zostają zasoby: czas procesora, pamięć, dostęp do urządzeń wejścia-wyjścia, pliki. W skład procesu wchodzi: kod programu, licznik rozkazów, stos programu, sekcja danych. Pamięć procesu: heap: pamięć alokowana dynamicznie stack: lokalne zmienne, adresy powrotu, przekazywane parametry data: globalne zmienne i stałe text: kod programu
Proces Proces rozpoczyna wykonywanie w momencie: przełączenia przez jądro systemu operacyjnego przestrzeni adresowej na przestrzeń adresową danego procesu zaprogramowania procesora, by wykonywał kod procesu. Wykonanie procesu musi przebiegać sekwencyjnie. Może przyjmować kilka stanów: aktualnie wykonywany przez procesor, czekający na udostępnienie przez system operacyjny zasobów, uśpiony, przeznaczony do zniszczenia, proces zombie, właśnie tworzony itd.
Proces Blok kontrolny procesu - (ang. Process Control Block (PCB)) to rekord zawierający zestaw informacji o stanie procesu. System operacyjny przechowuje informacje o procesach -w postaci bloków kontrolnych i używa ich do planowania procesów. PCB zawiera następujące informacje:stan procesu, licznik instrukcji, wartości rejestrów procesora, informacje związane z planowaniem, informacje związane z zarządzaniem pamięcią, informacje rozliczeniowe, informacje o stanie wejścia-wyjścia. Gdy proces przechodzi do stanu aktywny jego PCB służy do odtworzenia stanu obliczenia. Gdy proces opuszcza stan aktywny, w PCB zapisuje się stan obliczenia, żeby można je było potem odtworzyć.
Proces Procesy nieaktywne czekają na przydział procesora w kolejkach. W systemie istnieje wiele takich kolejek: kolejka zadań - wszystkie procesy w systemie kolejka gotowych - procesy, które są gotowe do wykonania (ich stan to gotowy) kolejka do urządzenia - dla każdego urządzenia wejścia-wyjścia istnieje osobna kolejka. Procesy mogą przenosić się między kolejkami: po upłynięciu kwantu czasu procesowi odbiera się procesor i umieszcza na końcu kolejki gotowych po przydzieleniu procesowi procesora jest on usuwany z kolejki gotowych. gdy proces zleci wykonanie operacji wejścia-wyjścia, umieszcza się go w kolejce do urządzenia, na którym zlecił operację wejścia-wyjścia. po wykonaniu operacji wejścia-wyjścia, proces trafia z powrotem do kolejki gotowych.
Proces Procesy mogą też oczekiwać w innych kolejkach, np. oczekiwać na jakieś zdarzenie, albo na zakończenie działania procesu potomnego. Do obsługi każdej z tych kategorii oczekiwania służy oddzielna kolejka. Przełączanie kontekstu - zmiana wykonywanego procesu wiąże się ze złożonymi operacjami zapisania stanu obliczenia poprzedniego procesu i odtworzenia stanu obliczeń nowego procesu. Przełączenie kontekstu stanowi istotny narzut na działanie systemu. Planowanie procesów nie może zbyt często powodować zmiany wykonywanego procesu, ponieważ wówczas większość czasu pracy będzie poświęcona na ciągłe przełączanie kontekstu. Szybkość przełączania kontekstu zależy od wsparcia sprzętowego. W pewnych architekturach występuje po kilka zbiorów rejestrów. Wówczas przełączenie kontekstu polega na zmianie wskaźnika bieżącego zestawu rejestrów, nie trzeba ich natomiast zapamiętywać i odtwarzać z PCB.