Pytania przykładowe (z ubiegłych lat) na zaliczenie przedmiotu Przetwarzanie równoległe Przygotował Rafał Walkowiak Poznań 3.01.

Podobne dokumenty
Zadania na zaliczenie przedmiotu Przetwarzanie równoległe Zebrał dla roku.ak. 2015/2016 Rafał Walkowiak,

Zadania na zaliczenie przedmiotu Przetwarzanie równoległe Zebrał dla r.ak. 2014/2015 Rafał Walkowiak,

Procesor operacja R a R b R c W b W a W c R c W c R c

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

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

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

ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

EFEKTYWNOŚĆ MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi:

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

Analiza efektywności przetwarzania współbieżnego

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

MATERIAŁY POMOCNICZE DO LABORATORIUM Z PRZETWARZANIA RÓWNOLEGŁEGO KWIECIEŃ 2018

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

Złożoność obliczeniowa zadania, zestaw 2

Analiza algorytmów zadania podstawowe

Materiały pomocnicze do laboratorium. 1. Miary oceny efektywności 2. Mnożenie macierzy 3. Znajdowanie liczb pierwszych

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

Ograniczenia efektywności systemu pamięci

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

Równoległość i współbieżność

Równoległość i współbieżność

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

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

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

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

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

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

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

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

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

Numeryczna algebra liniowa

Macierzowe algorytmy równoległe

System obliczeniowy laboratorium oraz. mnożenia macierzy

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

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Zasady projektowania algorytmów równoległych

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

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

Podstawy Programowania C++

Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak

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

3. Macierze i Układy Równań Liniowych

PROJEKT 3 PROGRAMOWANIE RÓWNOLEGŁE. K. Górzyński (89744), D. Kosiorowski (89762) Informatyka, grupa dziekańska I3

Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP

Ograniczenia efektywności systemu pamięci

Wprowadzenie do złożoności obliczeniowej

Programowanie Współbieżne. Algorytmy

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

Analiza ilościowa w przetwarzaniu równoległym

Algorytmy numeryczne 1

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

Algorytmy dla maszyny PRAM

Architektura komputerów

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Wykład z Technologii Informacyjnych. Piotr Mika

Zasady projektowania algorytmów równoległych

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

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

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Podstawy Informatyki. Sprawność algorytmów

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Macierze. Rozdział Działania na macierzach

Obliczenia iteracyjne

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Przetwarzanie równoległe Zadanie domowe III

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

Rekurencja (rekursja)

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Zaawansowane algorytmy i struktury danych

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Algorytmy sortujące i wyszukujące

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Spacery losowe generowanie realizacji procesu losowego

Podstawy Informatyki Systemy sterowane przepływem argumentów

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

AiSD zadanie trzecie

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

Podstawy programowania komputerów

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Mnożenie macierzy. Systemy z pamięcią współdzieloną Systemy z pamięcią rozproszoną Efektywność

Sortowanie przez scalanie

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

4. Procesy pojęcia podstawowe

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Podstawy Informatyki. Wykład 6. Struktury danych

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Transkrypt:

Pytania przykładowe (z ubiegłych lat) na zaliczenie przedmiotu Przetwarzanie równoległe Przygotował Rafał Walkowiak Poznań 3.01.2013 Przetwarzanie w systemach z pamięcią współdzieloną 1. Procesory systemu równoległego wykonują operacje dostępu (R odczyt, W zapis) do zmiennych a,b,c (zmienne a i b należą w tej samej linii pamięci podręcznej zmienna c natomiast do innej) Kolejność zgłaszanego w protokole zarządzania spójnością rozpoczęcia realizacji operacji przez procesory jest następująca: Kolejność 1 2 3 4 5 6 7 8 9 Procesor 1 2 3 2 1 3 3 3 1 operacja R a R b R c W b W a W c R c W c R c nr 10 11 12 procesor 2 3 1 operacja R b R a W a Przed przetwarzaniem pamięć podręczna nie zawiera danych. Dla poszczególnych procesorów proszę określić: liczbę trafień do pamięci podręcznej oraz liczbę unieważnień linii pamięci podręcznej. Dostęp (odczyt lub zapis) procesora do powyżej wymienionych danych jest możliwy za każdym razem pod warunkiem obecności ich w pamięci podręcznej. Obowiązuje protokół zapewnienia spójności bazujący na unieważnianiu nieaktualnych kopii linii pamięci podręcznej. 2. Procesory systemu równoległego wykonują operacje dostępu (R odczyt, W zapis) do zmiennych a,b,c umieszczonych obok siebie w pamięci i przechowywanych w tej samej linii pamięci podręcznej. Kolejność zgłaszanego w protokole zarządzania spójnością rozpoczęcia realizacji operacji przez procesory jest następująca: Kolejność 1 2 3 4 5 6 7 8 9 Procesor 1 2 3 2 1 3 3 3 1 operacja R a R b R c W b W a W c R c W c R c nr 10 11 12 procesor 2 3 1 operacja R b R a W a Przed przetwarzaniem pamięć podręczna nie zawiera danych. Dla poszczególnych procesorów proszę określić: liczbę trafień do jego pamięci podręcznej oraz liczbę unieważnień linii jego pamięci podręcznej. Dostęp (odczyt lub zapis) procesora do powyżej wymienionych danych jest możliwy za każdym razem pod warunkiem obecności ich w pamięci podręcznej. Obowiązuje protokół zapewnienia spójności bazujący na unieważnianiu nieaktualnych kopii linii pamięci podręcznej. 3. Procesory systemu równoległego wykonują w podanej kolejności operacje (każdą w sposób atomowy- niepodzielny) dostępu do zmiennych A,B,C (zmienne A i B leżą w tej samej linii pamięci podręcznej zmienna C natomiast w innej). Kolejność realizacji operacji przez procesory jest następująca: Kolejność 1 2 3 4 5 6 7 8 Procesor 1 2 3 1 2 1 3 1 operacja A+=B C=1 B=2*C A+=B B=3*C A+=B B=4*C A+=B nr 9 10 11 procesor 2 1 1 operacja B=C A+=B A+=B Przed przetwarzaniem pamięć podręczna nie zawiera danych. Dla poszczególnych operacji proszę określić w poszczególnych procesorach wystąpienie zdarzeń dotyczących ich lokalnej pamięci podręcznej: - pobranie danych do pamięci podręcznej, - unieważnienia linii danych w pamięci, - trafienia do pamięci. Dostęp (odczyt lub zapis) procesora do powyżej wymienionych danych jest możliwy za każdym razem pod warunkiem obecności ich w pamięci podręcznej. Obowiązuje protokół zapewnienia spójności bazujący na unieważnianiu nieaktualnych kopii linii pamięci podręcznej. 4. System wieloprocesorowy posiada 8 procesorów korzystających z pamięci współdzielonej i prywatnych pamięci podręcznych. Opóźnienie dostępu do danych w pp wynosi 5 cykli zegara procesora, a opóźnienie dostępu do danych w przypadku potrzeby ściągnięcia danych z RAM wynosi 30 cykli zegara procesora. Rozmiar linii pp (wielkość danych transmitowanych do pp) wynosi 4 słowa. Jeden procesor realizuje obliczenia zgodnie z kodem zamieszczonym poniżej. Element tablicy a,b,c ma wielkość jednego słowa. Jaki jest średni czas realizacji instrukcji dla jednego procesora jeśli byłby on ograniczony czasem dostępu do pamięci? 1

Jak w równoległej realizacji pętli przez 8 procesorów systemu należy przydzielić iteracje pętli do poszczególnych procesorów, aby efektywnie korzystać z pp? Proszę wprowadzić odpowiednie dyrektywy Open MP i uzasadnić odpowiedź. for (int i=0;i<1024;i++) c[i]= a[i]*b[i]; 5. Proszę określić stosunek trafień do pp w realizowanym przez 4 procesory równoległym algorytmie sumowania elementów dwuwymiarowej tablicy (o rozmiarze 4k słów) zapisanej w pamięci współdzielonej. Suma częściowa jest zmienną współdzieloną wątków, chronioną za pomocą zamka przed niepoprawnym uaktualnieniem. Każdy z procesorów sumuje 1k słów z kolejnych różnych wierszy macierzy, a rozmiar linii pp wynosi 8 słów. Koszt realizacji zamka nie jest w uwzględniany w analizie stosunku trafień. Pamięć podręczna jest wystarczająco duża. Elementy tablicy są zapisane kolejno wierszami. Jaki byłby stosunek trafień, gdyby zastosowano zmienną lokalną do pamiętania sumy częściowej w każdym wątku przetwarzania? Jakiego przyspieszenia można się spodziewać w wyniku zastosowania zaproponowanych powyżej metod sumowania elementów tablicy? 6. Procesory systemu równoległego wykonują w następującej kolejności operacje dostępu (R odczyt, W zapis) do zmiennych umieszczonych w obszarze danych należącym do tej samej linii pamięci podręcznej: P1 R, P2 W, P3 R, P1 R, P2 R, P3 W, P1 R, P2 R, P3 R, P2 W. Przed przetwarzaniem pamięć podręczna nie zawiera danych. Proszę określić stosunek trafień, oddzielnie do pamięci podręcznej każdego procesora. 7. Rozważmy problem mnożenia tablicy przez tablicę metodą zagnieżdżonych pętli (kod poniżej) na komputerze z pamięcią podręczną 80 KB o czasie dostępu 1ns i pamięcią RAM o czasie dostępu 100 ns. W przypadku braku danych w pamięci podręcznej sprowadzane są one w podanym czasie z RAM w bloku równym rozmiarowi linii pp - 4 słów. Procesor pobiera dane z pp. Tablica mnożona ma rozmiar 4Kx4K słów, a każdy wiersz tablicy zajmuje 16 KB. Jaka jest maksymalna prędkość przetwarzania ograniczonego dostępem do pamięci? Proszę założyć optymalną strategię wykorzystania pamięci podręcznej. for (i=0; i<dim; i++) for (j=0; j<dim;j++) for (k=0; k<dim; k++) C[i][j]+=a[i][k]*b[k][j]; 8. Rozważmy problem mnożenia tablicy przez wektor metodą zagnieżdżonych pętli (kod poniżej) na komputerze z pamięcią podręczną 16 KB o czasie dostępu 1ns i pamięcią RAM o czasie dostępu 50 ns. W przypadku braku danych w pamięci podręcznej sprowadzane są one w podanym czasie z RAM w bloku równym rozmiarowi linii pp - 4 słów. Procesor pobiera dane z pp. Tablica mnożona ma rozmiar 4Kx4K słów, a każdy wiersz tablicy zajmuje 16 KB. Jaka jest maksymalna prędkość przetwarzania ograniczona czasem dostępu do pamięci uwzględniamy tylko czas pobierania danych z pamięci, gdyż zakładamy, że pozostałe operacje (obliczenia) realizowane są równocześnie (w tle)? - jak długo (średnio) trwa czas realizacji jednej instrukcji? Proszę założyć optymalną strategię wykorzystania pamięci podręcznej. for (i=0; i<dim; i++) for (k=0; k<dim; k++) C[i]+=a[i][k]*b[k]; 9. Maszyna SMP z rozproszoną przestrzenią adresową pamięci. Obliczenia ograniczone są prędkością dostępu do pamięci - czas wykonywania instrukcji przez procesor biegnie równolegle z pobraniami danych z pamięci, czas pobierania danych ma decydujący wpływ na prędkość przetwarzania. Zakładamy, że dla badanego kodu jedna instrukcja wymaga średnio pobrania 1,5 słowa z pamięci. Model dostępu do pamięci opisany następującymi parametrami: czas dostępu do danych w pamięci podręcznej (pp) 10 ns czas dostępu do danych w przypadku konieczności odwołania do pamięci lokalnej węzła 100 ns czas dostępu do danych w przypadku konieczności odwołania do pamięci zdalnej 400 ns Powyższe czasy zawierają wszystkie komponenty kosztów dostępu do danych w powyższych przypadkach niezależnie od liczby wykorzystywanych do obliczeń procesorów. Dane procesor pobiera, po uzupełnieniu zawartości, zawsze bezpośrednio z pp. Przetwarzanie sekwencyjne kodu charakteryzuje stosunek trafień do pp 0.7. Przetwarzanie współbieżne kodu na każdym z procesorów charakteryzuje następującymi stosunkami trafień: do pp 0.8, do pamięci lokalnej 50% odwołań nieobsłużonych w pamięci podręcznej, pozostałe dane pobierane są z pamięci zdalnej. Proszę porównać średnią prędkość przetwarzania (w MIPS) kodu na maszynie SMP (przy zachowaniu powyższych parametrów): sekwencyjnie i równolegle na 4 procesorach. Ile razy przetwarzanie równoległe jest szybsze? Ile wynosiłaby prędkość przetwarzania, gdyby stosunek trafień do pp był dwukrotnie mniejszy i brakujące dane musiałyby być pobrane z pamięci lokalnej. 10. Dla maszyny o pamięci współdzielonej: koszt dostępu procesora do pp Tc, koszt dostępu do pamięci systemowej ts, długość lini pamięci DLP, rozmiar pp PPS. Określić prędkość przetwarzania ograniczonego prędkością dostępu do pamięci dla równoległego sumowania macierzy o rozmiarze NxN (kod w języku C) 4 procesory: Sumowanie elementów wierszami. Kolejne wiersze sumuje kolejny procesor Sumowanie elementów kolumnami. Kolejne kolumny sumuje następny procesor. Proszę uwzględnić różne nietrywialnie scenariusze przetwarzania zależne od rozmiaru macierzy. 2

11. Rozważmy realizację przez 8 procesorów równoległego algorytmu sumowania elementów dwuwymiarowej tablicy A (o rozmiarze 8k słów) zapisanej w pamięci współdzielonej. Każdy procesor odwołuje się do jednego (każdy innego) z elementu współdzielonej tablicy B 8 elementowej w celu zapisania sumy częściowej. Każdy z procesorów sumuje 1k słów z kolejnych różnych wierszy macierzy, a rozmiar linii pamięci podręcznej (pp) każdego procesora wynosi 8 słów. PP jest wystarczająco duża. Elementy tablicy są zapisane kolejno wierszami. Po zakończeniu obliczeń procesy docierają do bariery synchronizacyjnej po czym jeden proces sumuje wartości tablicy sum częściowych. Zakładamy, że dostęp do pamięci podręcznej jest 40 razy szybszy od dostępu w przypadku braku trafienia do pamięci podręcznej (dowolnego typu pobrania danych). Czas obliczeń jest zdominowany czasem dostępu do pamięci, dostępy do różnych lokacji pamięci przez różne procesory są realizowane współbieżnie. Procesor nie realizuje równolegle dostępów do pamięci. Zakładając, że w systemie realizowany jest protokół zapewnienia spójności pamięci podręcznej proszę określić pesymistyczny stosunek trafień i pesymistyczną wartość przyspieszenia (względem realizacji tych obliczeń na jednym procesorze). 12. Rozważmy problem mnożenia tablicy przez tablicę metodą zagnieżdżonych pętli (kod poniżej) na komputerze 16 procesorowym z współdzieloną pamięcią. Podział pracy bazuje na podziale danych wyjściowych. Każdy procesor posiada pamięć podręczną o wielkości 512 KB. W przypadku braku danych w pamięci podręcznej sprowadzane są one z pamięci operacyjnej w bloku równym rozmiarowi linii pp 128 B. Procesor pobiera dane tylko z pp. Tablica mnożona ma rozmiar 512x512 słów, a każdy wiersz tablicy zajmuje 2kB. Kod jest napisany w języku C. Proszę założyć optymalną strategię wykorzystania pamięci podręcznej (jeżeli mamy wybór to usuwamy te dane, które nie będą potrzebne). Proszę uzasadnić jaki efektywny podział pracy między procesory należy zaproponować? Proszę określić i uzasadnić stosunek trafień do pamięci podręcznej i rozmiar danych pobieranych z pamięci głównej przez każdy z procesorów w trakcie realizacji przedzielonej mu pracy. W jakiej kolejności procesory powinny realizować przydzieloną im pracę. //sekwencyjny kod mnożenia tablic for (i=0; i<dim; i++) for (j=0; j<dim;j++) for (k=0; k<dim; k++) C[i][j]+=a[i][k]*b[k][j]; 13. Rozważmy problem mnożenia tablicy przez wektor metodą zagnieżdżonych pętli (porównaj kod poniżej) w komputerze wieloprocesorowym z współdzieloną pamięcią operacyjną i prywatnymi pamięciami podręcznymi. W przypadku braku danych w pamięci podręcznej sprowadzane są one z pamięci operacyjnej w bloku równym rozmiarowi linii pp. Procesor pobiera dane z pp. Tablica a ma rozmiar n X n słów. Proszę podać i uzasadnić sposób zrównoleglenia przetwarzania na 4 procesorach za pomocą dyrektyw Open MP uwzględniając następujące fakty: - Ilość pracy dla kolejnych iteracji pętli zewnętrznej zmienia się, gdyż tablica a zawiera na przekątnej i poniżej przekątnej tylko zera, - w linii pamięci podręcznej mieszczą się 4 słowa, - pamięć podręczna ma rozmiar 3n, - optymalizacja zrównoleglenia powinna minimalizować czas przetwarzania zadania przez system. for (i=0; i<n; i++) { C[i]=0; for (k=0; k<n; k++) if (a[i][k]) C[i]+=a[i][k]*b[k]; } Dla przyjętego rozwiązania proszę przeanalizować (przypadek optymistyczny) odwołania do pamięci dla elementów tablicy a. Następnie proszę oszacować i wyjaśnić dla tej tablicy stosunek trafień do pamięci podręcznej w ramach jednego procesora. Architektury systemów równoległych 14. Proszę zdefiniować przeciążenie (ang. congestion) i odstęp (ang.dilation) wynikające z odwzorowania grafów zadań na graf struktury systemu równoległego oraz podać schemat (np. rysunek) odwzorowania architektur zapewniający minimalizację przeciążenia i powiększenia: łańcucha w hiperkostkę 8 procesorów i 3-2 kraty otwartej w łańcuch 9 procesorów. Jakie jest dolne ograniczenie przeciążenia w powyższych przypadkach? 15. Proszę zdefiniować przeciążenie (ang. congestion) i odstęp (ang.dilation) wynikające z odwzorowania grafów zadań na graf struktury systemu równoległego oraz podać schemat (np. rysunek) dowolnego odwzorowania grafu 8 zadań o strukturze hiperkostki 3 wymiarowej w łańcuch 8 procesorów. Dla podanego schematu proszę określić przeciążenie i powiększenie. 16. Proszę określić przeciążenie i powiększenie będące wynikiem odwzorowania łańcucha w kostkę i kraty zamkniętej w łańcuch. Liczba węzłów w architekturach jest jednakowa i wynosi 16. 17. Proszę zdefiniować przeciążenie (ang. congestion) i odstęp (ang.dilation) wynikające z odwzorowania grafów zadań na graf struktury systemu równoległego oraz podać schemat ( rysunek lub opis ) odwzorowania architektur zapewniający minimalizację przeciążenia i powiększenia: 3

łańcucha w 3-3 kratę zamkniętą 27 procesorów i 2-4 kratę w 4-2 kratę zamkniętą 16 procesorów. 18. Proszę zdefiniować przeciążenie (ang. congestion) i odstęp (ang.dilation) wynikające z odwzorowania grafów zadań na graf struktury systemu równoległego oraz podać odwzorowanie grafów zapewniające minimalizację przeciążenia i powiększenia. 19. Graf zadań ma postać 4-2 kraty zamkniętej (krata dwuwymiarowa) a graf systemu wielokomputerowego to hiperkostka 4 wymiarowa. Dla odwzorowania przyjąć następujące oznaczenia węzłów: Zadania mają identyfikatory pozycji w kracie Z(i,j) gdzie i=1..4 oznacza wiersz a j=1..4 oznacza kolumnę. Procesory mają identyfikatory będące ciągami binarnymi o wartościach przyjętych zgodnie ze standardową zasadą zapewniającą, że procesory połączone ze sobą mają identyfikatory różniące się na jednej pozycji. Ile wynosi przeciążenie i odstęp dla tego odwzorowania. Algorytmy równoległe (ostatni wykład) 20. Podać prezentowany na wykładzie algorytm znajdowania liczb pierwszych w łańcuchu procesorów. Określić: wejście systemu, algorytm realizowany przez poszczególne procesory, zaproponować sposób uzyskiwania wyników na wyjściu systemu, uzasadnić liczbę procesorów niezbędnych do znalezienia liczb pierwszych z zakresu od 950-X, określić przybliżoną liczbę następujących po sobie (w najgorszym przypadku) operacji dzielenia w ramach tych obliczeń (wskazówka: założyć, że X okaże się liczbą pierwszą). 28. Proszę wyjaśnić liczbę kolejnych kroków oraz pracę realizowaną w przedstawionym na wykładzie równoległym algorytmie sumowana w hiperkostce 16 procesorowej z wynikiem w każdym węźle. Każdy procesor posada n liczb podlegających sumowaniu. 29. Podać prezentowany na wykładzie algorytm (i wyjaśnić jego złożoność) sumowania liczb z udostępnieniem wyniku we wszystkich procesorach w systemie o architekturze pierścienia jednokierunkowego. 30. Podać algorytm i wyjaśnić złożoność algorytmu sortowania w łańcuchu procesorów. 31. Na podstawie metod dla problemu znajdowania liczb pierwszych dla zakresu liczb <n,m>, bazujących na wykreślaniu wielokrotności liczb pierwszych, proszę przedstawić podejście domenowe i funkcjonalne do konstrukcji algorytmu równoległego. 32. Podać prezentowany na wykładzie algorytm sortowania n liczb w łańcuchu procesorów. Określić: algorytm realizowany przez poszczególne procesory, sposób uzyskiwania wyników, uzasadnić liczbę procesorów niezbędnych do poprawnego sortowania n liczb, podać i wyjaśnić przybliżoną (z dokładnością do stałej) liczbę następujących po sobie operacji porównania. 33. Proszę przedstawić równoległy algorytm Cannona mnożenia macierzy kwadratowych w systemach z pamięcią rozproszoną. Należy określić sposób dystrybucji danych wejściowych, wyniku, naszkicować kod algorytmu dla poszczególnych procesorów, określić rodzaj wykorzystywanych komunikacji - synchroniczna, asynchroniczna, buforowana, niebuforowana, dla każdego procesora proszę określić rozmiar przetwarzanych danych oraz wymagania pamięciowe algorytmu w funkcji rozmiaru macierzy n i liczby procesorów p. 34. Proszę przedstawić algorytm mnożenia macierzy kwadratowych metodą zagnieżdżonych 6 pętli w systemach z pamięcią współdzieloną. Proszę założyć, że przetwarzanie równoległe bazuje na podziale pracy w pętli zewnętrznej (#pragma omp parallel for) Proszę: wyjaśnić liczbę iteracji poszczególnych pętli algorytmu, podać ogólną zależność na ilość danych przetwarzanych przez każdy procesor podać ogólną zależność na liczbę danych pobieranych do prywatnej pamięci podręcznej przez poszczególne procesory Środowiska przetwarzania równoległego (pamięć współdzielona) 35. W każdym z poniższych trzech przykładów kodu proszę wyjaśnić ile razy i z jakim parametrem istniejący wątek o identyfikatorze 1 będzie realizował wywołania Funkcja1. omp_set_num_threads(m); #pragma omp parallel { #pragma omp single { for (j=0; j<n;j++) #pragma omp task Funkcja1(j); } } ------------------------------------------------------------------- omp_set_num_threads(m); 4

#pragma omp parallel for (j=0; j<n;j++) Funkcja1(j) ; ------------------------------------------------------------------- omp_set_num_threads(m); #pragma omp parallel for schedule (static) for (j=0; j<n;j++) Funkcja1(j) ; ------------------------------------------------------------------ 36. Proszę wyjaśnić problematyczne dla poprawnej i efektywnej równoległości przetwarzania elementy w poniższym kodzie.. Jakiego typu są to zagrożenia (jeśli dla tego kodu występują)? Jak poszczególne zagrożenia można usunąć i dlaczego? Potencjalne typy zagrożeń to: wyścig, dostęp do danych nielokalny czasowo lub przestrzennie, niezamierzone współdzielenie- false sharing, proszę określić których tablic dotyczą i jakie są danego zagrożenia konsekwencje? float a[n][n];.. int i,j,k; #pragma omp parallel for schedule(dynamic,1) for (i = 0 ; i < N ; i++) { for (k = 0 ; k < N ; k++) { for (j = 0 ; j < N ; j++) { c[i][j] += a[i][k] *b[k][j] ; }}} 37. Proszę wyjaśnić problematyczne dla poprawnej i efektywnej równoległości przetwarzania elementy w poniższym kodzie. Jakiego typu są to zagrożenia (jeśli dla tego kodu występują)? Jak poszczególne zagrożenia można usunąć i dlaczego? Potencjalne typy zagrożeń to: wyścig, dostęp do danych nielokalny czasowo lub dostęp do danych nielokalny przestrzennie, niezamierzone współdzielenie - false sharing, proszę określić których tablic dotyczą i jakie są danego zagrożenia konsekwencje? float a[n][n]; int i,j,k; #pragma omp parallel for schedule(dynamic,1) for (j = 0 ; j < N ; j++) { for (i = 0 ; i < N ; i++) { for (k = 0 ; k < N ; k++) { c[i][j] += a[i][k] *b[k][j] ; }}} 38. Korzystając z dyrektyw Open MP proszę zapisać kod w meta języku pozwalający na równoległe sumowanie N elementowej tablicy jednowymiarowej na dowolnej liczbie P procesorów. Proszę określić jeśli to możliwe dla przygotowanego kodu jaką pracę wykonają poszczególne procesory. Proszę omówić kluczowe dla efektywności przetwarzania elementy kodu. Wynik będący sumą ma zostać wyświetlony na ekranie. Środowiska przetwarzania równoległego (Przesyłanie komunikatów) - jeśli zagadnienia zostaną omówione (ostatni wykład) 39. Jaki jest możliwy (czy zawsze jednakowy) efekt realizacji poniższego kodu przez procesy w trybie SPMD w zależności od rodzaju (1. blokujące, 2.nieblokujące z buforami, 3. nieblokujące bez buforów) zastosowanych wywołań: Send(void *sendbuf, int nelems, int dest, ) Receive(void *recvbuf, int nelems, int source, ) Proszę wyjaśnić odpowiedź i opisać sytuację - kiedy określony efekt nastąpi. //KOD procesów I=zwracam_identyfikator_wywołującego_procesu();/* 0,1,2,3,...*/ N=zwracam_liczbe_procesow(); A=I; Send(&A,1, (I+1)mod N, ); Globalna_bariera_synchronizacyjna(); Receive(&A,1, (I+N-1)mod N, ); printf( zrealizowano przeslanie od %d do %d \n,a,i); 5

Krótko odpowiedzieć na pytanie: jak można zmodyfikować powyższy kod, aby umożliwić realizację wszystkich komunikacji zgodnie ze specyfikacją w kodzie (przy użyciu poszczególnych typów wywołań) przed wypisaniem komunikatów na ekranie? 40. Proszę zmodyfikować poniższy kod tak aby w każdym z 3 przypadków komunikacji (1. blokujące, 2.nieblokujące z buforami, 3. nieblokujące bez buforów) zrealizowane zostały poprawnie przesłania informacji między procesami: Send(void *sendbuf, int nelems, int dest, ) funkcja wysyłająca z parametrami: adres danych, liczba transmitowanych słów, identyfikator odbiorcy,...inne niezbędne parametry. Receive(void *recvbuf, int nelems, int source, ) funkcja odbierająca z parametrami: adres danych, liczba transmitowanych słów, identyfikator nadawcy,...inne niezbędne parametry. //KOD pierwotny procesów int B,I,N; I=zwracam_identyfikator_wywołującego_mnie_procesu();/* 0,1,2,3,...*/ N=zwracam_liczbe_procesow(); Send(&I,1, (I+1)mod N, ); Receive(&B,1, (I+N-1)mod N, ); printf( zrealizowano przeslanie od %d do %d \n,i,b); 41. Operacje komunikacji w przesyłaniu komunikatów, a ukrywanie kosztów komunikacji (uwzględnić funkcje blokujące, nieblokujące, z buforami i bez) dokonać porównania. 42. Zakładamy, że realizujemy przesyłanie metodą store and forawrd. Koszt przesłania pojedynczego komunikatu o rozmiarze m z węzła P1 do węzła P2 drogą o d odcinkach wynosi t s +t w dm. Alternatywę stanowi przesłanie tych samych informacji o rozmiarze m za pomocą k komunikatów o rozmiarze m/k. Określić czas transmisji danych m na ścieżce o d odcinkach w zależności od realizacji: Kolejny komunikat jest wysyłany zaraz jak poprzedni dotrze do miejsca przeznaczenia Kolejny komunikat jest wysyłany po osiągnięciu przez poprzedni kolejnego węzła w sieci. Jaka jest optymalna wartość k dla poszczególnych realizacji? Szeregowanie, równoważenie obciążenia procesorów, ocena efektywności przetwarzania równoległego 43. W jaki sposób bazując na podziale danych wyjściowych przydzielić pracę do poszczególnych p procesorów realizujących mnożenie macierzy kwadratowych n x n - C=A*B :gdzie c i,j =a i,1 *b 1,j +a i,2 *b 2,j +...+a i,n *b n,j. Proszę uzasadnić wybór. W jakiej kolejności należy realizować operacje (kolejność dostępu do komórek pamięci) w ramach przydzielonych do procesorów zadań, aby maksymalnie zrównoleglić dostęp do pamięci współdzielonej. 44. Zastosowano metodę grafu interakcji między zadaniami do podziału pracy dla 3 procesorów systemu z rozproszoną pamięcią współdzieloną. Przetwarzanie dotyczy mnożenia macierzy A i wektora b, a podział pracy bazuje na regule właściciel (w tym przypadku procesor posiadający odpowiedni wiersz tablicy A i elementy wektora b). Narysować graf interakcji i określić liczbę interakcji między procesorami w podanym poniżej sposobie przydziału danych (wiersze A i elementy b) do procesorów. Wszystkie elementy wektora i zielone elementy tablicy są niezerowe 1pkt. A b P1 P2 P3 45. Załóżmy, że M zadań ma być przydzielonych do p procesorów za pomocą scentralizowanego dynamicznego schematu równoważenia obciążenia. Czasy przetwarzania zadań nie są znane z góry. Dostępne są tylko informacje ogólne dotyczące zbioru zadań: średni czas przetwarzania jednego zadania scz=1, minimalny czas przetwarzania jednego zadania mincz=0, maksymalny czas przetwarzania jednego zadania maxrz=m, czas pobierania zadania/zadań przez proces wynosi delta. Proszę obliczyć przyspieszenie przetwarzania na p procesorach (w najlepszym i najgorszym przypadku) dla algorytmów: samoszeregowania (ang. self-scheduling) i szeregowania w oparciu o pakiety wielozadaniowe k zadania jednocześnie (ang.chunk scheduling). Przykład dynamicznego self-scheduling to szeregowanie niezależnych pojedynczych iteracji pętli pobieranych przez proces na bieżąco do realizacji po zakończeniu realizacji poprzedniej iteracji. 6

46. Wyznaczanie w korzeniu drzewa procesorów sumy n elementów rozproszonych w p procesorach. Proszę wyznaczyć funkcję stałej efektywności przy założeniu, że koszt komunikacji między sąsiednimi procesorami jest dany wzorem ts+ mdt w gdzie m jest liczbą słów komunikatu, d odległością, a t s i t d stałymi równymi 1. Koszt dodawania wynosi 4. Proszę podać wzór określający ile razy musi wzrosnąć n, aby uzyskać stałą efektywność przy wzroście wysokości drzewa procesorów o jeden poziom z 6 na 7. Proszę założyć komunikację asynchroniczną. 47. Porównać zasady profilowania (jak jest realizowane, jakich informacji dostarcza, jakie posiada zalety i wady): a. Profilowanie bazujące na upływie czasu b. Profilowanie bazujące na zdarzeniach c. Profilowanie bazujące na śledzeniu operacji procesora (charakterystyczne dla CodeAnalyst) d. Omówić wykres znajdujący się na poniższym rysunku (co przedstawia i w jaki sposób można go uzyskać, jakie funkcje (rodzaj zadanie funkcji, kluczowy parametr) pozwalają na otrzymanie takiego przebiegu wykresu). 48. Wymienić 3 kategorie braków trafień do pamięci podręcznej i podać możliwe drogi ich usunięcia. Określić co oznaczają i w jaki sposób można wyznaczyć następujące miary jakości przetwarzania: Wskaźnik (rate) braku trafień do bufora translacji adresów danych - DTLB Wskaźniki IPC i CPI Stosunek trafień do pamięci podręcznej L2 (hit ratio), wskaźnik braku trafień do pamięci L1(miss rate) Przyspieszenie przetwarzania równoległego dla implementacji algorytmu równoległego A Koszt zrównoleglenia dla przetwarzania równoległego implementacji algorytmu równoległego A 49. Drzewo binarne D z 8 liściami określa pełny schemat sekwencyjnego poszukiwania rozwiązania zgodnie z algorytmem przeszukiwania w głąb począwszy od lewej strony drzewa. Poszukiwane rozwiązanie znajduje się w piątym liściu (zielony) od lewej strony po jego znalezieniu obliczenia są kończone. Przejście w grafie wzdłuż jednego łuku do niższego węzła zajmuje jednostkę czasu przetwarzania, powrót nie wymaga czasu. Na znalezienie rozwiązania sekwencyjnie potrzeba zatem (wg tutaj opisanej metody) 10 jednostek czasu. Przetwarzanie realizowane współbieżnie polega wpierw na wyznaczeniu sekwencyjnym węzłów 2 poziomu (czerwone) zajmuje to czas równy 2 jednostki a następnie na przetwarzaniu równoległym na 2 procesorach poddrzew rozpoczynających się w wyznaczonych węzłach (czerwonych). Proszę określić możliwe do uzyskania przyspieszenie, czy jest to anomalia jeśli tak to dlaczego i czym jest ona spowodowana. Jaka jest inna możliwa przyczyna tego typu anomalii? 7

50. Niech nproc będzie zmienną przechowującą liczbę procesorów w systemie pomniejszoną o 1. Dany jest następujący algorytm sortowania przez scalanie, który sortuje elementy pewnej tablicy począwszy od elementu o indeksie lewy do elementu o indeksie prawy: sort(lewy, prawy) { if (lewy == prawy) return; srodek = (lewy + prawy) / 2; if (nproc > 0) { nproc--; wykonaj sort(lewy, srodek) w nowym watku; } else sort(lewy, srodek); sort(srodek+1, prawy); synchronizuj_watki(); merge(lewy, prawy) } Jeżeli przyjmiemy n=prawy-lewy+1 (czyli n to liczba elementów na których operują funkcje sort i merge), to zakładamy że: Wykonanie funkcji sort na jednym procesorze trwa n*log 2 (n) jednostek czasu (wliczając wszystkie wywoływane przez nią rekurencyjnie funkcje sort i merge). Wykonanie funkcji merge, która łączy ciągi posortowane przez funkcję sort, na jednym procesorze trwa n jednostek czasu. Czas wykonania pozostałych instrukcji (np. warunek, dekrementacja nproc) można pominąć. Nie wystąpi problem związany z dostępem do zmiennej nproc jednocześnie z więcej niż jednego wątku. Funkcja synchronizuj_watki, czeka aż oba wątki sortujące zakończą swoje działanie, jeżeli nproc pozwoliło na utworzenie kolejnego wątku. Odpowiedz na poniższe pytania zakładając, że liczba procesorów, na komputerze na którym wykonywany jest algorytm, wynosi 4: Podaj wzór na przyspieszenie powyższego algorytmu w zależności od n. Jeżeli w zależności od przebiegu wykonania programu przyspieszenie może być różne, opisz rozważany przypadek i podaj dla niego wzór. Oblicz przyspieszenie dla sortowania n=64 (przyspieszenie możesz podać jako nieskrócony ułamek zwykły). Czy jeżeli zwiększymy liczbę elementów to przyspieszenie zwiększy się? 51. Część obliczeń nie podlegająca zrównolegleniu zajmuje 20% czasu obliczeń realizowanych sekwencyjnie. A) Jaka liczba procesorów zapewni wg prawa Amdahla uzyskanie przyspieszenia równego 4? B) Zauważono dodatkowo, że użycie 4 procesorów udostępnia systemowi większą (niż w przypadku jednego identycznego procesora) ilość pamięci podręcznej. Powoduje to wzrost stosunku trafień do pp. W wyniku tego faktu następuje wzrost wydajności przetwarzania procesora i przydzielone obliczenia (realizowane współbieżnie) wykonuje on w czasie o 10 % krótszym w stosunku do czasu realizacji tych obliczeń w sposób sekwencyjny. Czy spowoduje to uzyskanie ponad liniowego przyspieszenia? Odpowiedź uzasadnij. 52. Realizując przetwarzanie zadania A na 9 procesorach uzyskano 5 krotne przyspieszenie. Stosując prawo Amdahla podaj liczbę procesorów niezbędnych do uzyskania 10 krotnego przyspieszenia. Jakie przyspieszenie uzyskano by, gdyby ze wzrostem liczby procesorów liniowo (zgodnie z założeniami dla prawa Gustafsona) wzrastała wielkość części zadania podlegającej zrównolegleniu. 53. W wyniku 3 krotnego uruchamiania pewnego kodu na różnej liczbie procesorów (5, 10 i 20 dostępnych na wyłączność) stwierdzono, że za każdym razem czas przetwarzania jest w przybliżeniu jednakowy i wynosi 10 sekund. Co można powiedzieć o efektywności przetwarzania i koszcie zrównoleglenia dla poszczególnych uruchomień? Czy informacje o rozmiarze danych wejściowych mają znaczenie dla odpowiedzi na postawione pytanie? Jeżeli tak to proszę rozważyć 2 przypadki, w których sekwencyjny czas przetwarzania: byłby dla wszystkich danych wejściowych jednakowy i wynosił 20 sekund lub wynosiłby odpowiednio dla poszczególnych wykorzystanych danych 60, 80 i 160 sekund. Czy uzyskane wartości parametrów jakości przetwarzania mają sens? Proszę uzasadnić odpowiedź. 54. Przetwarzanie zadania A realizowane na 9 procesorach umożliwia uzyskanie 5 krotnego przyspieszenia. Przetwarzanie tego samego zadania A realizowane na 2 procesorach umożliwia uzyskanie przyspieszenia równego 100/55. Proszę określić maksymalne możliwe do uzyskania przyspieszenie. 55. Część obliczeń nie podlegająca zrównolegleniu zajmuje 30% czasu obliczeń realizowanych sekwencyjnie. Jaka liczba procesorów zapewni uzyskanie przyspieszenia równego 4, a jakie przyspieszenie przetwarzania można uzyskać przy zastosowaniu 10 procesorów? Odpowiedź uzasadnij. 56. Pewne obliczenia A można częściowo zrównoleglić. Część obliczeń A - stanowiąca 80% pracy może być podzielona proporcjonalnie na dowolną liczbę procesorów zapewnia to przyspieszenie przetwarzania tej części równe liczbie wykorzystanych procesorów. Pozostałe 20% obliczeń musi być realizowane sekwencyjnie. 1. Przeanalizuj sytuację i podaj wzór określający ile procesorów zapewni uzyskanie przyspieszenia przetwarzania równego 7 dla całości obliczeń A? 8

2. Podaj wzór określający jakie przyspieszenie przetwarzania dla omawianych obliczeń można uzyskać przy zastosowaniu 10 procesorów? 3. Jakie są wnioski płynące z praw Gustafsona i Amdahla dotyczące przyspieszenia przetwarzania równoległego, czy wnioski te nie są sprzeczne, dlaczego? 4. Czy wg prawa Amdahla może istnieć przyspieszenie ponad liniowe odpowiedź uzasadnij, co to jest za przyspieszenie, czy istnieje w praktyce?, jeśli tak to podaj przykład. 57. Skierowany graf acykliczny służy do prezentacji algorytmu równoległego. Węzły oznaczają zadania, a łuki - komunikacje między zadaniami. Zadanie może zostać przydzielone do procesora po wykonaniu zadań, które są połączone z nim za pomocą łuków wejściowych. Zakładamy, że każde zadanie zajmuje 2 s, a czas komunikacji jest równy 0. Komunikacje realizowane są współbieżnie. Dla każdego z 2 algorytmów zaprezentowanych poniżej określić: A) Maksymalny i średni stopień współbieżności, B) Wielkość: przyspieszenia, efektywności i kosztu zrównoleglenia dla przetwarzania przy użyciu: liczby procesorów równej połowie maksymalnego stopnia równoległości 9