Wykład 2 Podstawowe pojęcia systemów równoległych, modele równoległości, wydajność obliczeniowa, prawo Amdahla/Gustafsona



Podobne dokumenty
Wykład 8 Systemy komputerowe ze współdzieloną pamięcią operacyjną, struktury i cechy funkcjonalne.

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Analiza ilościowa w przetwarzaniu równoległym

Architektura komputerów. Układy wejścia-wyjścia komputera

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

5. Model komunikujących się procesów, komunikaty

Programowanie współbieżne Wykład 2. Iwona Kochańska

Architektura komputerów

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Architektura komputera

Analiza efektywności przetwarzania współbieżnego

Mikroprocesor Operacje wejścia / wyjścia

Architektura komputerów

Podstawy Techniki Mikroprocesorowej wykład 13: MIMD. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej

Numeryczna algebra liniowa

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Algorytmy i Struktury Danych

16. Taksonomia Flynn'a.

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Nowoczesne technologie przetwarzania informacji

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Urządzenia zewnętrzne

Działanie systemu operacyjnego

Dr inż. hab. Siergiej Fialko, IF-PK,

LEKCJA TEMAT: Zasada działania komputera.

Architektura komputerów

Działanie systemu operacyjnego

8. MAGISTRALE I GNIAZDA ROZSZERZEŃ. INTERFEJSY ZEWNĘTRZNE.

Architektura Systemów Komputerowych. Bezpośredni dostęp do pamięci Realizacja zależności czasowych

Działanie systemu operacyjnego

Zadania jednorodne 5.A.Modele przetwarzania równoległego. Rafał Walkowiak Przetwarzanie równoległe Politechnika Poznańska 2010/2011

Programowanie współbieżne Wstęp do obliczeń równoległych. Rafał Skinderowicz

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Wprowadzenie do systemów operacyjnych. mgr inż. Krzysztof Szałajko

Mikroinformatyka. Koprocesory arytmetyczne 8087, 80187, 80287, i387

Wprowadzenie do systemów operacyjnych

dr inż. Jarosław Forenc

Układy wejścia/wyjścia

Hardware mikrokontrolera X51

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

4. Procesy pojęcia podstawowe

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Wykład 14. Zagadnienia związane z systemem IO

4. Procesy pojęcia podstawowe

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

PL B1 PRZEDSIĘBIORSTWO BADAWCZO- -PRODUKCYJNE I USŁUGOWO-HANDLOWE MICON SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ, KATOWICE, PL

WPROWADZENIE Mikrosterownik mikrokontrolery

Architektura mikroprocesorów TEO 2009/2010

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

Pamięci masowe. ATA (Advanced Technology Attachments)

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Przetwarzanie równoległesprzęt. Rafał Walkowiak Wybór

Informatyka. informatyka i nauki komputerowe (computer science)

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Działanie systemu operacyjnego

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Metody optymalizacji soft-procesorów NIOS

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

System mikroprocesorowy i peryferia. Dariusz Chaberski

Budowa systemów komputerowych

Standard transmisji równoległej LPT Centronics

Systemy wieloprocesorowe i wielokomputerowe

Organizacja typowego mikroprocesora

Rozproszona pamiêæ dzielona - 1

4. Procesy pojęcia podstawowe

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

MAGISTRALE ZEWNĘTRZNE, gniazda kart rozszerzeń, w istotnym stopniu wpływają na

Urządzenia wejścia-wyjścia

Podstawy Projektowania Przyrządów Wirtualnych. Wykład 9. Wprowadzenie do standardu magistrali VMEbus. mgr inż. Paweł Kogut

Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia

Architektura komputerów Wykład 2

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Architektura komputerów

Architektura systemów komputerowych. dr Artur Bartoszewski

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

Rywalizacja w sieci cd. Protokoły komunikacyjne. Model ISO. Protokoły komunikacyjne (cd.) Struktura komunikatu. Przesyłanie między warstwami

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Dotyczy jednostek operacyjnych i ich połączeń stanowiących realizację specyfikacji typu architektury

PODSTAWY PRZETWARZANIA RÓWNOLEGŁEGO INFORMACJI

Budowa karty sieciowej; Sterowniki kart sieciowych; Specyfikacja interfejsu sterownika sieciowego; Open data link interface (ODI); Packet driver

ARCHITEKTURA PROCESORA,

Budowa komputera Komputer computer computare

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Przesyłania danych przez protokół TCP/IP

PL B1 H04L 17/00. Fig2. Instytut Łączności, Warszawa, PL. Józef Odrobiński, Warszawa, PL Zbigniew Główka, Warszawa, PL

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Zagadnienia związane z systemem IO

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Transkrypt:

Wykład 2 Podstawowe pojęcia systemów równoległych, modele równoległości, wydajność obliczeniowa, prawo Amdahla/Gustafsona Spis treści: 1. Równoległe systemy komputerowe a rozproszone systemy komputerowe, metody zrównoleglenia obliczeń. 2. Systemy wieloprocesorowe ze wspólną i rozproszoną pamięcią. 3. Miary wydajności obliczeniowej systemów równoległych i rozproszonych. 4. Prawo Amdahla/Gustafsona

1. Równoległe systemy komputerowe a rozproszone systemy komputerowe Równoległe systemy komputerowe (ang. parallel computer systems) zawierają wiele współpracujących procesorów wykorzystywanych do wykonania programów. Systemy takie nazywamy również systemami wieloprocesorowymi (ang. multi-processor systems). Systemy równoległe (wieloprocesorowe) są fizycznie skupione w obrębie jednej obudowy lub kilku obudów znajdujących się w bliskim sąsiedztwie (np. w tej samej sali).

Jeżeli system komputerowy zawiera wiele odrębnych komputerów (zawierających procesor z całą hierarchią pamięci i urządzeniami wejścia/wyjścia) połączonych ze sobą zewnętrzną siecią, umożliwiająca wymianę danych (również kodu programów), to mówimy wtedy o systemie wielokomputerowym albo sieci komputerowej (ang. multicomputer system, computer network). Komputery w sieci komputerowej są zwykle rozproszone na dużej przestrzeni geometrycznej budynek, miasto, kraj lub wiele krajów (w przeciwieństwie do systemów równoległych). Dlatego systemy wielokomputerowe (sieci komputerowe) nazywamy również systemami rozproszonymi (ang. distributed systems). Wykonują się w nich tzw. obliczenia rozproszone.

Dla wykonania w systemie równoległym lub rozproszonym, program musi być podzielony na fragmenty, wykonywane w poszczególnych procesorach lub komputerach. Nazywa się to zrównolegleniem programu (ang. program parallelization). Ze względu na sposób podziału programu sposób zrównoleglenia programu, wyróżniamy: zrównoleglenie oparte na dekompozycji danych (ang. data decomposition), zrównoleglenie oparte na dekompozycji kodu programu (ang. code decomposition), zrównoleglenie oparte na obu tych sposobach dekompozycji (ang. data and code decomposition).

Przy dekompozycji danych, kod programu jest zwykle wykonywany równolegle na mniejszych podzespołach danych a potem zbierane są wyniki częściowe, co zwykle wymaga pewnej ilości dodatkowych obliczeń. Zrównoleglenie przez dekompozycję danych zwykle stosuje się do programów o dużych zespołach danych i regularnych strukturach (np. wektory, macierze, listy, drzewa). Przy dekompozycji kodu programu, każdy fragment programu zawiera odrębne dane, określone poprzez podział kodu. Zrównoleglenie przez dekompozycję kodu stosuje się do programów o nieregularnych strukturach danych.

Wykonanie fragmentów programu po zrównolegleniu na wiele procesorów (komputerów) często wymaga wymiany wyników częściowych - danych, podczas wykonywania. Tę wymianę danych nazywamy komunikacją między procesorami (komputerami) (ang. inter-processor communication, inter-computer communication). Komunikacja w systemach wielokomputerowych (sieciach komputerowych) zajmuje czas niepomijalny z punktu widzenia czasu wykonania programów. W systemach równoległych, komunikacja danych (programów) zachodzi bardzo szybko i zdarza się, że jest ona pomijalna w stosunku do czasu obliczeń.

Pomijalność czasu komunikacji w całkowitym czasie wykonania programu zależy od: ziarna zrównoleglenia programów (ang. grain of parallelism) relacji między szybkością obliczeń w procesorach (komputerach) a szybkością komunikacji między procesorami (komputerami). Pod względem ziarnistości zrównoleglenia wyróżniamy: programy drobnoziarniście równoległe (ang. fine-grained parallel programs), w których średni czas obliczeń między komunikacjami jest mały i stosunek czasu obliczeń do czasu komunikacji w całym programie jest niski programy gruboziarniście równoległe (ang. coarse-grained parallel programs), w których średni czas obliczeń między komunikacjami jest duży i stosunek czasu obliczeń do czasu komunikacji w całym programie jest wysoki.

2. Systemy wieloprocesorowe ze wspólną i rozproszoną pamięcią Dane i kod programu równoległego są przechowywane w systemie równoległym w pamięci operacyjnej dostępnej dla procesorów systemu. Ze względu na sposób organizacji i wykorzystywania pamięci operacyjnej przez procesory systemy wieloprocesorowego systemy równoległe dzielimy na: systemy ze wspólną pamięcią (współdzieloną, dzieloną) (ang. shared memory system) systemy z pamięcią rozproszoną (ang. distributed memory systems) systemy z rozproszoną pamięcią wspólną (ang. distributed shared memory).

System wieloprocesorowy z współdzieloną pamięcią (silnie związany) Procesor 1 Procesor 2 Procesor n Sieć łącząca procesory z modułami pamięci i układami wejścia/wyjścia Pamięć 1 Pamięć 2 Pamięć m We/Wy 1 We/Wy k Współdzielone moduły pamięci Układy We/Wy

W systemie ze wspólną pamięcią, wszystkie procesory mają prawo korzystać z całej przestrzeni adresowej pamięci operacyjnej systemu. Fragmenty tej przestrzeni są zwykle ulokowane w odrębnych modułach pamięciowych, wyposażonych w odrębne dekodery adresu.

Komunikacja między procesorami (fragmentami programów) w systemie ze wspólną pamięcią odbywa się za pomocą rozkazów dostępu do zmiennych dzielonych w pamięci. Jest ona nazywana komunikacją przez zmienne dzielone (ang. communication through shared variables). Pobieranie rozkazów do wykonania w procesorach również odbywa się ze wspólnej pamięci.

W systemie ze wspólną pamięcią, efektywność dostępu do modułów pamięci zależy od budowy i własności sieci łączącej. Sieć łącząca jest czynnikiem ograniczającym przepustowość dostępu do pamięci dla większej liczby procesorów. Ogranicza to liczbę procesorów w tych systemach, przy których zapewniona jest dobra wydajność obliczeń równoległych.

Systemy wieloprocesorowe ze wspólną pamięcią nazywane są systemami silnie związanymi (ang. tightly coupled system) lub wieloprocesorami (ang. multiprocessor). Ze względu na symetryczny dostęp wszystkich procesorów do wszystkich modułów pamięci, obliczenia w tych systemach nazywane są w literaturze symetrycznym wieloprzetwarzaniem (ang. Symmetric Multiprocessing SMP) a systemy takie są nazywane w j. ang. Symmetric Multiprocessors.

System wieloprocesorowy z rozproszoną pamięcią (luźno związany) Pamięć lokalna 1 We/Wy1 Pamięć lokalna 2 We/Wy2 Pamięć lokalna n We/Wy n Szyna lokalna Szyna lokalna Szyna lokalna Procesor 1 Procesor 2 Procesor n Łącze Łącze Łącze Sieć łącząca procesory

W systemie wieloprocesorowym z rozproszoną pamięcią, każdy procesor jest wyposażony we własną pamięć lokalną (ang. local memory) z lokalną przestrzenią adresową dostępną tylko dla tego procesora. Procesory mogą wymieniać dane poprzez sieć łączącą procesory realizując komunikację przez przesyłanie komunikatów (ang. message passing). W programach wykonywane są do tego celu rozkazy nadaj komunikat i odbierz komunikat.

Komunikaty są wysyłane używając w rozkazach identyfikatorów obiektów (zmiennych) zwanych kanałami komunikacyjnymi (ang. communication channel). Kanały reprezentują połączenie (ang. connection) istniejące (lub stworzone w sieci połączeń) między łączami komunikacyjnymi (ang. communication link) procesorów.

Łącza komunikacyjne mogą być: szeregowe równoległe.

Specjalne procesory przystosowane do przesyłania komunikatów, które mają wbudowanych kilka łączy - od 4 do 6 : wybrane procesory DSP Data Signal Processors SHARC, firmy Analog Devices 4 do 6 łączy równoległych 4 lub 8 bitowych), Motorola DSP 56005, AT&T DSP 1610, DSP 3207, Texas Instruments TMS 320Cx0. dawniej transputery 4 łącza szeregowe,

W procesorze komunikacyjnym, z każdym z łączy współpracuje niezależny kontroler łącza. Steruje on zewnętrznymi transmisjami danych na zasadzie DMA - bezpośredni dostęp do pamięci. Kontroler bezpośredniego dostępu do pamięci DMA (ang. Direct Memory Access Interface, Direct Memory Access Module) umożliwia transmisje danych między pamięcią operacyjną a urządzeniami zewnętrznymi bez pośrednictwa ze strony procesora.

Idea współpracy układów we/wy z procesorem poprzez układy DMA Szyna adresowa i sterująca Pamięć operacyjna Adresy, sygnały sterujące Procesor Szyna danych Dane Dane Zwolnienie szyn pamięci we/wy 1... we/wy n Sterownik DMA... Żądanie/potwierdzenie 1 Żądanie/potwierdzenie n

Kontroler DMA jest wyposażony w 4 autonomiczne kanały dostępu do pamięci, do których podłączone są linie żądań dostępu DRQi (DMA Request) i zezwoleń dostępu DACKi (DMA Acknowledge) od urządzeń zewnętrznych. Każdy z kanałów może sterować jedną transmisją między urządzeniem zewnętrznym a pamięcią operacyjną. Urządzenia mogą wysyłać żądania dostępu jednocześnie. Układ wyboru zgłoszenia wybiera jedno ze zgłoszonych żądań zgodnie z zaprogramowanym systemem priorytetów. Do procesora jest wysyłany sygnał HRQ (Hold Request żądanie wstrzymania dostępu do szyny pamięci). Procesor zawiesza swoją komunikację z pamięcią operacyjną, oddaje DMA nadzór nad szyną systemową idącą do pamięci (adresową, danych i sterującą) wysyłając do DMA sygnał HLDA (Hold Acknowledge potwierdzenie wstrzymania). Od tej pory, aż do wycofania sygnału HRQ, kontroler DMA będzie sprawował sterowanie dostępem do pamięci. Po otrzymaniu sygnału HLDA, kontroler DMA odpowiada do urządzenia zewnętrznego sygnałem DACKi, potwierdzając rozpoczęcie transmisji, której przebieg będzie zgodny z zaprogramowanym dla danego kanału rodzajem transmisji.

Uproszczony schemat blokowy kanału DMA Szyna danych procesora Licznik adresów Licznik słów Rejestr sterujący Rejestr stanu Szyna adresowa pamięci Układ sterujący DRQi DACKi HRQ HLDA... Bity adresu oraz sygnały sterujące: z procesora, dla pamięci i urządzenia zewn. Układ sterowania DMA podaje do pamięci adresy danych, sygnały sterujące oraz odlicza liczbę przesyłanych słów. Układ ten wysyła również sygnały odczytu i zapisu do urządzenia zewnętrznego, które sterują przesyłaniem danych do/z tego urządzenia.

Realizacja przesłania komunikatów w procesorach z łączami komunikacyjnymi: przy nadaniu - komunikat jest automatycznie pobierany z pamięci procesora przez kontroler łącza i wysyłany do łącza, przy odbiorze - odebrany z łącza komunikat jest automatycznie przesyłany do pamięci. Systemy wieloprocesorowe z rozproszoną pamięcią nazywane są w literaturze systemami luźno związanymi (ang. loosely coupled system).

W systemach z rozproszoną pamięcią jest możliwe jednoczesne połączenie bardzo wielu procesorów i stąd bardzo dużo jednoczesnych transmisji danych. Pozwala to na uzyskanie bardzo dużej efektywności komunikacji między procesorami i obliczeń w procesorach (wynika to z rozproszenia dostępów do pamięci). Dlatego systemy równoległe z rozproszoną pamięcią takie nazywane są również systemami z masywnym przetwarzaniem równoległym (ang. Massively Parallel Processing MPP).

Komunikacja przez przesyłanie komunikatów może odbywać się zgodnie z: modelem synchronicznym (ang. synchronous communication model) asynchronicznym (ang. asynchronous communication model).

Przy modelu synchronicznym, procesy (programy) - nadający i odbierający, synchronizują swoje wykonanie na rozkazach komunikacji w danym kanale. Oznacza to, że proces nadający może nadawać dopiero wtedy, gdy proces odbierający w innym procesorze doszedł do wykonania rozkazu odbierania w tym kanale. Ponieważ komunikacja zachodzi przy wykonaniu rozkazów nadania i odbioru w obydwu procesorach jednocześnie, nie jest potrzebne buforowanie komunikatów i są one przesyłane jakby bezpośrednio z pamięci jednego procesora do pamięci drugiego. Odbywa się to pod kontrolą kontrolerów zewnętrznych łączy komunikacyjnych w obu procesorach.

Przy modelu asynchronicznym, procesy (programy): nadający i odbierający, nie synchronizują wykonania komunikacji w danym kanale. Komunikat jest nadawany do kanału w dowolnej chwili i trafia do bufora dla komunikatów w danym kanale - w kontrolerze łącza po drugiej stronie połączenia między procesorami. Proces odbierający odbiera komunikat odczytując go z bufora danego kanału.

Systemy wieloprocesorowe z rozproszoną pamięcią wspólną Trzecim rodzajem systemu wieloprocesorowego jest system z rozproszoną pamięcią (ang. distributed shared memory) inaczej zwaną wirtualną pamięcią dzieloną (ang. virtual shared memory). W systemach takich, które są obecnie najsilniej rozwijane, każdy procesor ma lokalną pamięć operacyjną. Jednakże, każda pamięć jest umieszczona we wspólnej przestrzeni adresowej całego systemu. Każdy procesor może mieć dostęp do pamięci lokalnej dowolnego innego procesora.

Komunikacja między procesorami w systemach z rozproszoną pamięcią wspólną, odbywa się przez dostęp do zmiennych dzielonych. Odbywa się to po prostu przez wykonanie rozkazu "czytaj" lub "zapisz" zmienne w pamięci innego procesora. W każdym procesorze istnieje układ sterowania dostępem do pamięci. Układ sterowania dostępem do pamięci, rozpoznaje bieżące adresy używane w rozkazach procesora: lokalny lub odległy. Jeśli adres jest lokalny, to kieruje się adres do szyny dostępu do lokalnej pamięci. Jeśli adres jest odległy, to wysyła się adres wraz ze wskazaniem rodzaju operacji (odczyt/zapis) do innego procesora (ściślej do jego układu sterowania dostępem). Przesłanie adresu a później danych odbywa się za pośrednictwem sieci łączącej pamięci wszystkich procesorów (ściślej ich układy sterowania dostępem do pamięci).

System wieloprocesorowy z rozproszoną pamięcią wspólną Pamięć lokalna 1 We/Wy1 Pamięć lokalna 2 We/Wy2 Pamięć lokalna n We/Wy n Szyna lokalna Szyna lokalna Szyna lokalna Procesor 1 Ster. dostępu m Procesor 2 Ster. dostępu Procesor n Ster. dostępu Sieć dostępu do odległych modułów pamięci

Systemy wieloprocesorowe z rozproszoną pamięcią wspólną są nazywane w literaturze systemami ze skalowalnym przetwarzaniem równoległym (ang. Scalable Parallel Processing - SPP). Nazwa SPP wynika z tego, że ze wzrostem liczby procesorów w systemie, użytych do wykonania danego programu równoległego, wydajność systemu rośnie zgodnie ze współczynnikiem wzrostu liczby procesorów. Tę cechę nazywamy skalowalnością systemu równoległego (ang. parallel system scalability). System jest skalowalny jeśli jego wydajność (szybkość wykonywania programów) rośnie proporcjonalnie do liczby procesorów w systemie.

3. Miary wydajności systemów równoległych i rozproszonych Najprostszą miarą korzyści jaka wypływa ze zrównoleglenia obliczeń procesów jest przyspieszenie obliczeń. Zakładamy, ze mamy system równoległy zawierajacy p procesorów pracujących równolegle. Przyspieszenie obliczeń równoległych (ang. computation speedup) obliczeń jest zdefiniowane jako stosunek czasu wykonania programu na 1 procesorze T(1) do czasu wykonania programu na p procesorach T(p). S ( p ) = T (1) T ( p ) Przyspieszenie jest wielkością bezwymiarową i musi spełniać warunek S ( p ) p.

Przyspieszenie jest miarą skrócenia czasu wykonania programu dzięki zrównolegleniu, nie podaje jednak efektywności wykorzystania procesorów przy wykonaniu programu równoległego. Efektywność obliczeń równoległych (ang. efficiency) jest to stosunek przyspieszenia obliczeń do liczby procesorów p wykonujących obliczenia. S( p) E ( p) = = p p T (1) T ( p) Wzrost przyspieszenia obliczeń równoległych jest ograniczony, gdy wewnętrzne sekwencyjne części programu zaczynają dominować nad częścią zrównolegloną programu.

Skalowalność systemu równoległego jest to własność systemu równoległego stanowiąca zdolność do dostarczania niezmniejszonej wydajności równoleglych obliczeń przy zwiększaniu liczby procesorów w systemie. System równoległy jest w pełni skalowalny dla danego programu jesli przy n-krotnym zwiększeniu liczby procesorów przyspieszenie równoległe wykonania tego programu wzrosło n razy. Wykres przyspieszenia równoległego wykonania programu w funkcji liczby procesorów dla systemu w pełni skalowalnego jest liniowy. Dla systemu nie w pełni skalowalnego (nieskalowalnego) wzrost przyspieszenia równoległego w funkcji liczby procesorów nie jest liniowy i nachylenie krzywej przyspieszenia maleje. W większości przypadków systemy równoległe nie są w pełni skalowalne, gdyż przy zwiększeniu liczby procesorów wzrastają koszta komunikacji między procesorami (czas wymiany danych między procesorami podczas obliczeń równoległych) co powoduje wzrost przyspieszenia wolniejszy niż liniowy.

Czas wykonania obliczeń w procesorze systemu równoległego jest sumą czasu czystych obliczeń procesora i czasu komunikacji (wymiany danych wraz z wszelkimi opóźnieniami). Sprawność wykonania programu równoległego wykonanego na p procesorach Spr(p) jest to stosunek łącznego czasu czystych obliczeń obl(p) do sumy łącznego czasu obliczeń obl(p) i komunikacji kom(p). Spr( p) = obl( p) obl( p) + kom( p) = 1+ 1 kom( p) obl( p) Dla wielu programów, przy wzroście liczby procesorów łączny czas czystych obliczeń nie zmienia się lub rośnie bardzo wolno, natomiast łączny czas komunikacji rośnie stosunkowo szybko. W wyniku tego, przy wzroście liczby procesorów, często maleje sprawność równoległego wykonania programu.

Sprawność wykonania programu równoleglego może być wykorzystana dla oceny skalowalności systemu równoległego dla danego problemu obliczeniowego przy rosnącym rozmiarze zadań (np. rosnących rozmiarów danych dla danego algorytmu rozwiazania problemu). Przy zwiększeniu liczby procesorów, aby zachować tę samą sprawność systemu należy wykonać zadania o większym rozmiarze (wtedy rośnie składnik obl(p) i sprawność Spr(p) może utrzymać taką samą wartość. Można wyznaczyć tzw. funkcję stałej sprawności względem rozmiaru zadania (ang. isoefficiency function). Ten system równoległy jest lepiej skalowalny dla danego problemu obliczeniowego, dla którego funkcja stałej sprawności względem rozmiaru zadania rośnie wolniej.

4.1 Prawo Amdahla (1967) Każdy program zawiera dwa rodzaje obliczeń: obliczenia, które mogą być wykonywane tylko sekwencyjnie (szeregowo), obliczenia, które mogą być zrównoleglone i wykonane na pewnej liczbie równolegle pracujących procesorów. Prawo Amdahla podaje w jaki sposób obecność sekwencyjnych fragmentów obliczeń w programie wpływa na przyspieszenie równoległego wykonania programu. Założenia. Niech s oznacza ułamek całego czasu T(1) wykonania programu na 1 procesorze (sekwencyjnego), który procesor spędza w części szeregowej programu. Ułamek czasu T(1), który może być wykonany równolegle na pewnej liczbie procesorów p wynosi 1 s. Zakładając że, czas wykonania każdej linii programu jest jednakowy, wtedy s jest ułamkiem liczby linii sekwencyjnego fragmentu programu w całym programie, 1 s jest liczbą linii programu, którą można zrównoleglić.

Czas wykonania programu na p procesorach T(p) wynosi: T (1) T ( p) = st (1) + (1 s). p Przyspieszenie wykonania programu na p procesorach S(p) wynosi: T (1) S( p) = T ( p) T (1) = T (1) st (1) + (1 s) p = s + 1 (1 s) p gdzie s jest ułamkiem całego czasu wykonania programu na 1 procesorze, który odpowiada części programu, która nie może być zrównoleglona.

Biorąc pod uwagę powyższy wzór: S( p) = s 1 (1 s) + p zauważymy, że niezależnie od tego ile procesorów użyjemy w obliczeniach równoległych, przyspieszenie dla bardzo dużego p będzie ograniczone od góry wartością s 1. Dla dużej liczby procesorów zrównoleglenie programu sekwencyjnego, w którym część s nie może być zrównoleglona, może dać przyspieszenie conajwyżej s 1.-krotne Jeśli s = 0,5 to przyspieszenie równoległe może wynieść conajwyżej 2. Jeśli s = 0.1 to przyspieszenie równoległe może wynieść conajwyżej 10. Jeśli s = 0,05 to przyspieszenie równoległe może wynieść conajwyżej 20.

Jeżeli tylko 1% obliczeń jest wykonywany sekwencyjnie, = 0, 01 to przyspieszenie nie będzie większe niż 100. s, Wykres przyspieszenia programu w funkcji liczby procesorów n oraz wielkości części sekwencyjnej s programu

4.2 Prawo Gustafsona (1988) Mamy system równoległy złożony z p procesorów. Założenia. Znamy łączny czas obliczeń sekwencyjnych ts w programie oraz czas wykonania programu tp na komputerze równoległym złożonym z p procesorów. Chcemy wyznaczyć przyspieszenie równoległe wykonania programu. Przyspieszenie równoległe dane jest wzorem: S ( p ) = T (1) T ( p ) gdzie T(1) to czas wykonania sekwencyjnego na 1 procesorze a T(p) to czas wykonania równoległego na p procesorach. Mamy T(p) = tp. Trzeba wyznaczyć T(1). T ( 1) = ts + ( tp ts) p = ts(1 p) + ptp = ptp ts( p 1)

Dzielimy przez tp i otrzymujemy: S( p) = p ts( p 1) tp Widzimy, że przyspieszenie S(p) ma wartość maksymalną p dla ts = 0. Gdy ts 0 to przyspieszenie ma wartości mniejsze od p w stopniu zależnym od stosunku ts do tp. Np. dla ts/tp = 0.5 S(p) wynosi S(p) = p - 0.5 p +0.5 = 0.5 p + 0.5. Dla ts/tp = 0.1 mamy S(p) = p - 0.1 p + 0.1 = 0.9 p + 0.1. Różnica między prawami Amdahla i Gustafsona. Prawo Amdahla bada mozliwe przyspieszenia równoległe w funkcji liczby procesorów dla stałego rozmiaru problemu i programu. Prawo Gustafsona bada przyspieszenia równoległe w funkcji liczby procesorów dla zmiennego rozmiaru problemu i programu przy zachowaniu tej samej wartości czasu obliczeń równoległych.