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



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

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

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

Bazy danych. Andrzej Łachwa, UJ, /15

G PROGRAMMING. Part #4

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

Architektura komputerów

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Podstawowe działania w rachunku macierzowym

Macierzowe algorytmy równoległe

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

ASD - ćwiczenia III. Dowodzenie poprawności programów iteracyjnych. Nieformalnie o poprawności programów:

API transakcyjne BitMarket.pl

REGULAMIN przeprowadzania okresowych ocen pracowniczych w Urzędzie Miasta Mława ROZDZIAŁ I

SPECYFIKACJA ISTOTNYCH WARUNKÓW ZAMÓWIENIA

Nowe funkcjonalności

Budowa systemów komputerowych

Projekty uchwał dla Zwyczajnego Walnego Zgromadzenia

WSTĘP DO PROGRAMOWANIA

Polska-Lublin: Usługi sprzątania 2016/S Ogłoszenie o udzieleniu zamówienia. Usługi

Techniki korekcyjne wykorzystywane w metodzie kinesiotapingu

Podstawy programowania

Problemy optymalizacyjne - zastosowania

Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych osobowych

WYJASNIENIA I MODYFIKACJA SPECYFIKACJI ISTOTNYCH WARUNKÓW ZAMÓWIENIA

Zadania. SiOD Cwiczenie 1 ;

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

XIII KONKURS MATEMATYCZNY

NACZYNIE WZBIORCZE INSTRUKCJA OBSŁUGI INSTRUKCJA INSTALOWANIA

Elementy cyfrowe i układy logiczne

KRYTERIA WYBORU INSTYTUCJI SZKOLENIOWYCH DO PRZEPROWADZENIA SZKOLEŃ

KONSPEKT LEKCJI MATEMATYKI. Z WYKORZYSTANIEM METOD AKTYWIZUJĄCYCH w klasie I gimnazjum. TEMAT: Działania łączne na liczbach wymiernych

MATEMATYKA 4 INSTYTUT MEDICUS FUNKCJA KWADRATOWA. Kurs przygotowawczy na studia medyczne. Rok szkolny 2010/2011. tel

Polska-Bytom: Różne usługi branżowe i podobne 2016/S Ogłoszenie o udzieleniu zamówienia. Usługi

Zagospodarowanie magazynu

Podstawy programowania sterowników GeFanuc

Uchwała Nr... Rady Miejskiej Będzina z dnia roku

Sieć komputerowa grupa komputerów lub innych urządzeo połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów, na przykład:

Umowa nr.. /. Klient. *Niepotrzebne skreślić

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

Regulamin reklamy produktów leczniczych na terenie Samodzielnego Publicznego Zakładu Opieki Zdrowotnej Ministerstwa Spraw Wewnętrznych w Białymstoku

Oferty portalu. Statystyki wejść w oferty wózków widłowych na tle ofert portalu w latach oraz I kw.2015 r I kw.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 6, strona 1. Format JPEG

Systemy wbudowane Mikrokontrolery

PRÓBNY EGZAMIN MATURALNY Z FIZYKI I ASTRONOMII

NUMER IDENTYFIKATORA:

ANALOGOWE UKŁADY SCALONE

Gospodarowanie mieniem Województwa

PRÓBNY EGZAMIN MATURALNY Z FIZYKI I ASTRONOMII

Warszawa, dnia 28 sierpnia 2012 r. Poz. 966 ROZPORZĄDZENIE MINISTRA TRANSPORTU, BUDOWNICTWA I GOSPODARKI MORSKIEJ 1) z dnia 14 sierpnia 2012 r.

Regulamin Rady Rodziców

WNIOSEK O PRZYZNANIE STYPENDIUM SZKOLNEGO Dane Wnioskodawcy

DRGANIA MECHANICZNE. materiały uzupełniające do ćwiczeń. Wydział Samochodów i Maszyn Roboczych studia inżynierskie

Instrukcja obsługi platformy zakupowej PHU VECTOR SP. Z O.O.

REGULAMIN WSPARCIA FINANSOWEGO CZŁONKÓW. OIPiP BĘDĄCYCH PRZEDSTAWICIELAMI USTAWOWYMI DZIECKA NIEPEŁNOSPRAWNEGO LUB PRZEWLEKLE CHOREGO

Czy zdążyłbyś w czasie, w jakim potrzebuje światło słoneczne, aby dotrzeć do Saturna, oglądnąć polski hit kinowy: Nad życie Anny Pluteckiej-Mesjasz?

Regulamin Rady Rodziców. przy Gimnazjum w Jasienicy. Postanowienia ogólne

OGÓLNODOSTĘPNE IFORMACJE O WYNIKACH EGZAMINÓW I EFEKTYWNOŚCI NAUCZANIA W GIMNAZJACH przykłady ich wykorzystania i interpretowania

GENERALNY INSPEKTOR OCHRONY DANYCH OSOBOWYCH

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

2.Prawo zachowania masy

Przykładowa analiza zwrotu inwestycji na instalację fotowoltaiczną o łącznej mocy 40kW

PowerShell. Sławomir Wawrzyniak

Tester pilotów 315/433/868 MHz MHz

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

Regulamin. Rady Nadzorczej Spółdzielni Mieszkaniowej "Doły -Marysińska" w Łodzi

Zagadnienia transportowe

XChronos Rejestracja czasu pracy

Strona Wersja zatwierdzona przez BŚ Wersja nowa 26 Dodano następujący pkt.: Usunięto zapis pokazany w sąsiedniej kolumnie

REGULAMIN RADY RODZICÓW

R E G U L A M I N FINANSOWANIA PRAC REMONTOWYCH REALIZOWANYCH W POSZCZEGÓLNYCH NIERUCHOMOŚCIACH / BUDYNKACH/ ŚRODKAMI WSPÓLNYMI SPÓŁDZIELNI

Minimalne wymagania odnośnie przedmiotu zamówienia zawarto w punkcie I niniejszego zapytania.

WNIOSEK O PRZYZNANIE STYPENDIUM SZKOLNEGO NA ROK SZKOLNY 2013/20. aktualnymi dokumentami

STEROWNIKI NANO-PLC NA PRZYKŁADZIE STEROWNIKA LOGO!

Opracowała: Karolina Król-Komarnicka, kierownik działu kadr i płac w państwowej instytucji

ZASADY REPRODUKCJI SYMBOLI GRAFICZNYCH PRZEDMOWA

REKRUTACJA DO PROWADZONYCH PRZEZ GMINĘ STARACHOWICE PRZEDSZKOLI I ODDZIAŁÓW PRZEDSZKOLNYCH W SZKOŁACH PODSTAWOWYCH NA ROK SZKOLNY 2016/2017

Na podstawie art.4 ust.1 i art.20 lit. l) Statutu Walne Zebranie Stowarzyszenia uchwala niniejszy Regulamin Zarządu.

Cel modelowania neuronów realistycznych biologicznie:

3 4 5 Zasady udzielania urlopów 6 7 8

DE-WZP JJ.3 Warszawa,

Katalog. Nakładów Rzeczowych. nr K-50. Nowe technologie. Roboty murowe w technologii Silka Tempo. Wydawca:

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

Implant ślimakowy wszczepiany jest w ślimak ucha wewnętrznego (przeczytaj artykuł Budowa ucha

Regulamin Zarządu Pogórzańskiego Stowarzyszenia Rozwoju

Zebranie Mieszkańców Budynków, zwane dalej Zebraniem, działa na podstawie: a / statutu Spółdzielni Mieszkaniowej WROCŁAWSKI DOM we Wrocławiu,

Algorytmy numeryczne 1

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

14.Rozwiązywanie zadań tekstowych wykorzystujących równania i nierówności kwadratowe.

7. OPRACOWYWANIE DANYCH I PROWADZENIE OBLICZEŃ powtórka

UCHWAŁA nr LI/257/09 RADY MIEJSKIEJ GMINY LUBOMIERZ z dnia 28 października 2009 roku

Projekt MES. Wykonali: Lidia Orkowska Mateusz Wróbel Adam Wysocki WBMIZ, MIBM, IMe

Ćwiczenie 7 Liczniki binarne i binarne systemy liczbowe.

Sprawozdanie z Walnego Zgromadzenia Akcjonariuszy spółki z portfela Allianz Polska OFE

Spis procedur i programów

Wyciąg z taryfy prowizji i opłat za czynności i usługi bankowe dla Klientów Banku Spółdzielczego Ziemi Kaliskiej Stan aktualny na dzień r.

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Konkurs o nadanie statusu Krajowego Naukowego Ośrodka Wiodącego

Procedura weryfikacji badania czasu przebiegu 1 paczek pocztowych

Transkrypt:

Mnożenie macierzy Systemy z pamięcią współdzieloną Systemy z pamięcią rozproszoną Efektywność Literatura: Introduction to Parallel Computing; Grama, Gupta, Karypis, Kumar; 1

Mnożenie macierzy dostęp do pamięci podręcznej [język C, kolejność - j,i,k][1] A[i][*] lokalność przestrzenna danych rózne A,B,C są tablicami nxn elementy z linii pp wykorzystane w kolejnych for (int j = 0 ; j < n ; j++) iteracjach for ( int i = 0 ; i < n ; i++) B[*][j] brak trafienia do pp, pp ładowana za for (int k = 0 ; k < n ; k++) każdym razem C[i][j] + = A[i][k] * B[k][j] ; C[i][j] lokalność odwołań ten sam element dla każdej iteracji pętli wewnętrznej = x Ilość danych wykorzystywanych w pętli wewnętrznej = x C A B Ilość danych wykorzystywanych w 2 pętlach wewnętrznych 2

Mnożenie macierzy pamięć podręczna [C, j,i,k][2] przetwarzanie dla 2 pętli wewnętrznych = x C A B C[*][j] brak lokalności przestrzennej odwołań A[*][*] brak lokalności czasowej odwołań B[*][j] brak lokalności przestrzennej, lokalność czasowa odwołań 3

Mnożenie macierzy pamięć podręczna[c, i,k,j][1] A,B,C są tablicami nxn for ( int i = 0 ; i < n ; i++) for (int k = 0 ; k < n ; k++) for (int j = 0 ; j < n ; j++) C[i][j] + = A[i][k] * B[k][j] ; A[i][k] lokalność czasowa odwołań B[k][*], C[i][*] lokalność przestrzenna odwołań A[i][*] lokalność przestrzenna odwołań B[*][*] brak lokalności czasowej odwołań jeżeli suma rozmiaru(wiersz A, wiersz C i tablica B) większe od rozmiaru pamięci podręcznej = x = x Ilość danych wykorzystywanych w pętli wewnętrznej Ilość danych wykorzystywanych w 2 pętlach wewnętrznych 4

Mnożenie macierzy pamięć podręczna [C, i,k,j * ] zmniejszenie zakresu pętli wewnętrznej = x = x Ilość danych wykorzystywanych w pętli wewnętrznej Ilość danych wykorzystywanych w 2 pętlach wewnętrznych for ( int j = 0 ; j < n ; j+=r) for ( int i = 0 ; i < n ; i++) for (int k = 0 ; k < n ; k++) for (int jj = j ; jj < j+r-1 ; jj++) C[i][jj] + = A[i][k] * B[k][jj] ; Przy odpowiedniej wielkości r możliwa lokalność czasowa odwołań do B[*][jj:jj+r-1] Zmniejszenie wielkości fragmentu tablic B, na podstawie których realizowane są obliczenia (w danej fazie przetwarzania) prowadzi do większej lokalności odwołań. 5

Mnożenie macierzy pamięć podręczna [operacje na fragmentach tablic][graficznie] C A B for (int kk = k ; kk < k+r-1 ; kk++) C[ii][jj] + = A[ii][kk] * B[kk][jj]; for (int jj = j ; jj < j+r-1 ; jj++) for (int kk = k ; kk < k+r-1 ; kk++) C[ii][jj] + = A[ii][kk] * B[kk][jj]; for ( int ii = i ; ii < i+r-1; ii++) for (int jj = j ; jj < j+r-1 ; jj++) for (int kk = k ; kk < k+r-1 ; kk++) C[ii][jj] + = A[ii][kk] * B[kk][jj]; for (int k = 0 ; k < n ; k+=r) for ( int ii = i ; ii < i+r-1; ii++) for (int jj = j ; jj < j+r-1 ; jj++) for (int kk = k ; kk < k+r-1 ; kk++) C[ii][jj] + = A[ii][kk] * B[kk][jj]; 6

Mnożenie macierzy pamięć podręczna [operacje na fragmentach tablic][kod] for ( int i = 0 ; i < n ; i+=r) for ( int j = 0 ; j < n ; j+=r) for (int k = 0 ; k < n ; k+=r) for ( int ii = i ; ii < i+r; ii++) for (int jj = j ; jj < j+r ; jj++) for (int kk = k ; kk < k+r ; kk++) C[ii][jj] + = A[ii][kk] * B[kk][jj]; Dla C[ii][jj], A[ii][kk], B[kk][jj] lokalność czasowa i przestrzenna dostępów przy założeniu, że wszystkie A[i:i+r-1][k:k+r-1],B[k:k+r-1][j:j+r- 1], C[i:i+r-1][j:j+r-1] mieszczą się w pamięci podręcznej Zakładając, że rozmiar pp równy M można wyznaczyć wymagane r<= (M/3) 1/2 1. 3 pętle wewnętrzne służą do wyznaczenia wyniku częściowego dla fragmentu tablicy wynikowej (sum iloczynów elementów wierszy i kolumn fragmentów macierzy wejściowych), 2. czwarta pętla (po k) służy do uzupełnienia wyniku o pozostałe iloczyny wynikające z uwzględnienia kolejnych (branych po r) elementów wierszy i kolumn fragmentów macierzy wejściowych, 3. pętle piąta i szósta służą do wyznaczenia kolejnych kwadratowych (r) obszarów macierzy wynikowej. 7

Mnożenie macierzy systemy wieloprocesorowe z pamięcią rozproszoną (dystrybucja kolumnowa)[1] A,B, C sa macierzami n x n A,B,C są rozdystrybuowane w pamięciach procesorów w sposób blokowy (całymi kolumnami) Obliczenia C[i][j] + = A[i][k] * B[k][j] ; są realizowane zgodnie z zasadą właściciel wyniku przetwarza. Kolumny tablic C i B są przetwarzane lokalnie. Ze względu na to, że A jest używane w wszystkich procesorach konieczne jest rozesłanie (all-to-all broadcast) A 8

Mnożenie macierzy systemy wieloprocesorowe z pamięcią rozproszoną (dystrybucja kolumnowa)[2] float a[n][n/p], b[n][n/p], c[n][n/p],tmp[n][n]; for (int proc = 0 ; j < P ; j++) a_send(proc, a) for (int proc = 0 ; j < P ; j++) a_recv(proc, tmp[1:n][proc*n/p: proc*(n/p+1)-1]); for ( int i = 0 ; i < n ; i++) for (int k = 0 ; k < n ; k++) for (int j = 0 ; j < n/p ; j++) c[i][j] + = tmp[i][k] * b[k][j] ; Każdy procesor przetwarza (1+2/P)n 2 elementów, każdy procesor rozsyła n 2 /P elementów do P procesorów. a_send, a_recv oznaczają operacje asynchroniczne odpowiednio nadawania i odbioru. 9

Mnożenie macierzy systemy wieloprocesorowe z pamięcią rozproszoną (dystrybucja szachownicowa) 11 2 33 4 5 6 7 8 9 Sposób dystrybucji tablicy wyniku i początkowy tablic wejściowych A,B, C sa macierzami nxn A,B,C są rozdystrybuowane w pamięciach procesorów w układzie szachownicy Obliczenia C[i][j] + = A[i][k] * B[k][j] ; są realizowane zgodnie z zasadą właściciel wyniku przetwarza. Dla wyznaczenia wyniku każdy procesor musi otrzymać: od każdego z procesorów w tym samym wierszu układu wartości jego części tablicy A od każdego z procesorów w tej samej kolumnie układu wartości jego części tablicy B Zajętość pamięci: na procesor na poziomie n 2 /sqrt(p), sumarycznie jest sqrt(p) większa niż dla przetwarzania sekwencyjnego, Każdy procesor przesyła n 2 /p elementów do 2(sqrt(p)-1) procesorów 10

Mnożenie macierzy systemy wieloprocesorowe z pamięcią rozproszoną (dystrybucja szachownicowa) koszt przetwarzania Koszt komunikacji: każdy z procesorów rozsyła w wierszu macierzy procesorów tablicę a w kolumnie macierzy procesorów tablicę b Koszt rozsyłania n 2 /p elementów do sqrt(p)-1 procesorów to t s ( p- 1)+t w n 2 /p ( p-1) Koszt obliczeń mnożenie tablic o rozmiarze n/ p powtarzane p razy (w oparciu o dostarczone dane) daje koszt n 3 /p Całkowity koszt - n 3 /p + 2 (t s + t w n 2 /p) ( p-1) 2 bo wiersze i kolumny są przesyłane 11

Mnożenie macierzy systemy wieloprocesorowe z pamięcią rozproszoną (algorytm Cannona minimalizcja zajętości pamięci) A00 B00 A01 B01 A02 B02 A01 B10 A02 B11 A00 B12 A02 B20 A00 B21 A01 B22 A10 B10 A11 B11 A12 B12 A11 B20 A12 B21 A10 B22 A12 B00 A10 B01 A11 B02 A20 B20 A21 B21 A22 B22 A21 B00 A22 B01 A20 B02 A22 B10 A20 B11 A21 B12 Wymiana części tablic wejściowych odbywa się synchronicznie (cyklicznie, kolumnami dla B i wierszami dla A ) z obliczeniami wykorzystującymi te części tablic, każda tablica jest przechowywana w jednej kopii. Symbole A?? B?? oznaczają podtablice, których odpowiednie wiersze i kolumny pomnożone przez siebie stanowią wynik częściowy generowany w danym etapie przetwarzania 12

Mnożenie macierzy systemy wieloprocesorowe z pamięcią rozproszoną (algorytm Cannona minimalizcja zajętości pamięci) c=axb a,b,c są macierzami nxn c jest dystrybuowane w bloki szachownicowo, a i b są dystrybuowane w bloki szachownicowo z cylkiczną rotacją w kolejnych krokach algorytm dla P 2 procesorów w strukturze tablicy proc[p,p] float a[n/p][n/p], b[n/p][n/p], c[n/p][n/p]; for ( int kk = 0 ; i < P ; i++) { for ( int i = 0 ; i < n/p ; i++) for (int j = 0 ; j < n/p ; j++) send(proc[pi,pj-1], a); send(proc[pi-1,pj], b); recv(proc[pi,pj+1], a); recv(proc[pi+1,pj], b); } for (int k = 0 ; k < n/p ; k++) c[i][j] + = a[i][k] * b[k][j] ; 13