y - saxpy (scalar α X plus Y)

Podobne dokumenty
- saxpy (scalar α X plus Y)

Modelowanie zagadnień technicznych SKRYPT. Siergiej Fialko

Macierz. Wyznacznik macierzy. Układ równań liniowych

Analiza matematyczna i algebra liniowa

Macierz. Wyznacznik macierzy. Układ równań liniowych

Realizacje zmiennych są niezależne, co sprawia, że ciąg jest ciągiem niezależnych zmiennych losowych,

Wektor kolumnowy m wymiarowy macierz prostokątna o wymiarze n=1 Wektor wierszowy n wymiarowy macierz prostokątna o wymiarze m=1

O pewnych zgadnieniach optymalizacyjnych O pewnych zgadnieniach optymalizacyjnych

WEKTORY skalary wektory W ogólnym przypadku, aby określić wektor, należy znać:

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.

WYKŁAD 5. Typy macierzy, działania na macierzach, macierz układu równań. Podstawowe wiadomości o macierzach

PODSTAWY ALGEBRY MACIERZY. Operacje na macierzach

Pojęcia Działania na macierzach Wyznacznik macierzy

PODSTAWY BAZ DANYCH Wykład 3 2. Pojęcie Relacyjnej Bazy Danych

Algebra Boola i podstawy systemów liczbowych. Ćwiczenia z Teorii Układów Logicznych, dr inż. Ernest Jamro. 1. System dwójkowy reprezentacja binarna

WEKTORY skalary wektory W ogólnym przypadku, aby określić wektor, należy znać:

Wyrównanie sieci niwelacyjnej

Badanie regularności w słowach

Zrównoleglenie i przetwarzanie potokowe

Rozwiązania maj 2017r. Zadania zamknięte

4. RACHUNEK WEKTOROWY

MATeMAtyka 3 inf. Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych. Zakres podstawowy i rozszerzony. Dorota Ponczek, Karolina Wej

2. FUNKCJE WYMIERNE Poziom (K) lub (P)

Wyk lad 1 Podstawowe wiadomości o macierzach

Pochodne i całki, macierze i wyznaczniki

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Jest błędem odwołanie się do zmiennej, której nie przypisano wcześniej żadnej wartości.

Jest błędem odwołanie się do zmiennej, której nie przypisano wcześniej żadnej wartości.

Wyznacznikiem macierzy kwadratowej A stopnia n nazywamy liczbę det A określoną następująco:

Algebra macierzowa. Akademia Morska w Gdyni Katedra Automatyki Okrętowej Teoria sterowania. Mirosław Tomera 1. ELEMENTARNA TEORIA MACIERZOWA

Wymagania edukacyjne matematyka klasa 2b, 2c, 2e zakres podstawowy rok szkolny 2015/ Sumy algebraiczne

Wymagania edukacyjne matematyka klasa 2 zakres podstawowy 1. SUMY ALGEBRAICZNE

PODSTAWY BAZ DANYCH Wykład 2 2. Pojęcie Relacyjnej Bazy Danych

O RELACJACH MIĘDZY GRUPĄ OBROTÓW, A GRUPĄ PERMUTACJI

Modelowanie i obliczenia techniczne. Metody numeryczne w modelowaniu: Różniczkowanie i całkowanie numeryczne

Wymagania kl. 2. Uczeń:

Bardzo krótki wstęp do elektroniki cyfrowej

symbol dodatkowy element graficzny kolorystyka typografia

Wykład 6 Dyfrakcja Fresnela i Fraunhofera

Propozycja przedmiotowego systemu oceniania wraz z określeniem wymagań edukacyjnych (zakres podstawowy)

MMX i SSE. Zbigniew Koza. Wydział Fizyki i Astronomii Uniwersytet Wrocławski. Wrocław, 10 marca Zbigniew Koza (WFiA UWr) MMX i SSE 1 / 16

MATHCAD Obliczenia iteracyjne, macierze i wektory

MATLAB PODSTAWY. [ ] tworzenie tablic, argumenty wyjściowe funkcji, łączenie tablic

ZADANIA OTWARTE. Są więc takie same. Trzeba jeszcze pokazać, że wynoszą one 2b, gdyż taka jest długość krawędzi dwudziestościanu.

Temat lekcji Zakres treści Osiągnięcia ucznia

Podstawy programowania obiektowego

ELEKTRONIKA CYFROWA. Materiały y pomocnicze do wykład sem.. 1

KONKURS MATEMATYCZNY dla uczniów gimnazjów w roku szkolnym 2012/13. Propozycja punktowania rozwiązań zadań

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

System pamięci. Pamięć wirtualna

Wymagania edukacyjne z matematyki

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

MATURA 2014 z WSiP. Zasady oceniania zadań

STYLE. TWORZENIE SPISÓW TREŚCI

Kodowanie liczb. Kodowanie stałopozycyjne liczb całkowitych. Niech liczba całkowita a ma w systemie dwójkowym postać: Kod prosty

Zestaw 11- Działania na wektorach i macierzach, wyznacznik i rząd macierzy

WYZNACZANIE OGNISKOWEJ SOCZEWEK CIENKICH ZA POMOCĄ ŁAWY OPTYCZNEJ

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Wymagania na ocenę dopuszczającą z matematyki klasa II Matematyka - Babiański, Chańko-Nowa Era nr prog. DKOS /02

Wektory [ ] Oczywiście wektor w przestrzeni trójwymiarowej wektor będzie miał trzy współrzędne. B (x B. , y B. α A (x A, y A ) to jest wektor

Oznaczenia: K wymagania konieczne; P wymagania podstawowe; R wymagania rozszerzające; D wymagania dopełniające; W wymagania wykraczające

WYMAGANIA I KRYTERIA OCENIANIA Z MATEMATYKI W 3 LETNIM LICEUM OGÓLNOKSZTAŁCĄCYM

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY VIII w roku szkolnym 2015/2016

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

DZIAŁ 2. Figury geometryczne

Wykªad 1. Macierze i wyznaczniki Macierze podstawowe okre±lenia

Wyznacznik macierzy. - wyznacznik macierzy A

f(x)dx (1.7) b f(x)dx = F (x) = F (b) F (a) (1.2)

Konkurs dla gimnazjalistów Etap szkolny 9 grudnia 2016 roku

Organizacja pamięci współczesnych systemów komputerowych : pojedynczy procesor wielopoziomowa pamięć podręczna pamięć wirtualna

Wspomaganie obliczeń za pomocą programu MathCad

WENTYLACJA PRZESTRZENI POTENCJALNIE ZAGROŻONYCH WYBUCHEM MIESZANIN GAZOWYCH

RACHUNEK CAŁKOWY. Funkcja F jest funkcją pierwotną funkcji f na przedziale I R, jeżeli. F (x) = f (x), dla każdego x I.

Komisja Egzaminacyjna dla Aktuariuszy LIX Egzamin dla Aktuariuszy z 12 marca 2012 r. Część I Matematyka finansowa

system identyfikacji wizualnej forma podstawowa karta A03 część A znak marki

Wydajność programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Matematyczne Podstawy Informatyki

Legenda. Optymalizacja wielopoziomowa Inne typy bramek logicznych System funkcjonalnie pełny

WYMAGANIA I KRYTERIA OCENIANIA DO EGZAMINU POPRAWKOWEGO MATEMATYKA. Zakresie podstawowym i rozszerzonym. Klasa II rok szkolny 2011/2012

Układy równań liniowych Macierze rzadkie

ZAGADKI WYKŁAD 7: ALGORYTMY I OBLICZENIA. 1 Notacja strzałkowa Knutha KOGNITYWISTYKA UAM (III, IV, V)

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA POSZCZEGÓLNYCH ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI POZIOM PODSTAWOWY KLASA 2

Macierzowe algorytmy równoległe

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Szczegółowe wymagania edukacyjne z matematyki, klasa 2C, poziom podstawowy

1 Definicja całki oznaczonej

a a a b M. Przybycień Matematyczne Metody Fizyki I

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

INSTRUKCJA. - Jak rozwiązywać zadania wysoko punktowane?

Małgorzata Żak. Zapisane w genach. czyli o zastosowaniu matematyki w genetyce

Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych klasa druga zakres podstawowy

Matematyka stosowana i metody numeryczne

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

Optymalizacja kodu. Ze wszystkich metod optymalizacji kodu programowego zwrócimy uwagę na: Usunięcie (po możliwości) skoków danych.

Materiały pomocnicze do ćwiczeń z przedmiotu: Ogrzewnictwo, wentylacja i klimatyzacja II. Klimatyzacja

Metody Lagrange a i Hamiltona w Mechanice

Logo pole ochronne. 1/2 a. 1/4 a

bezkontekstowa generujac X 010 0X0.

Wszystkim życzę Wesołych Świąt :-)

Maciej Grzesiak. Iloczyn skalarny. 1. Iloczyn skalarny wektorów na płaszczyźnie i w przestrzeni. a b = a b cos ϕ. j) (b x. i + b y

Transkrypt:

Wydjność obliczeń sekwencyjnych. Osobliwości prcy z cche - linimi. Typowe lgorytmy lgebry liniowej i oszcownie możliwości ich przyspieszeni y x y - sxpy (sclr α X plus Y) y y Ax C C AB Przypomnieć reguły lgebry liniowej: mnożeni mcierzy przez wektor i mcierzy przez mcierz Demonstrcj progrmu Multm: t sm ilość opercji różn wydjność Rozmir zgdnieni: 000 równń Chrkterystyki komputer: Procesor Intel Core Qud CPU Q6600 @.40 GHz Cche - L1: KB, L:4096 KB Pmięć: DDR 800 MHz 4 GB 1

Wydjność różnych lgorytmów C=C+A*B, MFLOPS 10000 9000 8000 Wydjność, MFLOPS 7000 6000 5000 4000 000 000 clssic ijk clssic ikj (HP) Block cche lb=40 Block_cche_reg lb=176 DGEMM Intel MKL 1000 0 0 500 1000 1500 000 500 Rozmir N

Wydjność dl metody mnożeni block_cche_reg w zleżności od rozmiru bloku C=A*B (Mflops), Nrównn = 000, Rozmir bloku Wydjność, MFLOPS 8x8 615 16x16 4 714 x 5 84 64x64 5 944 18x18 6 70 56x56 6 88 51x51 765 Istnieje optymlny rozmir błoku lb, przy którym osiągmy wydjność mksymlną. Jk będzie podno dlej, ten rozmir zleży od sprzętu, minowicie od rozmiru cche L1 i rozmiru TLB (Trnsltion look-side) bufor.

Oszcownie wydjności lgorytmów Złożeni Odczyt i zpis (cche RAM) i opercje rytmetyczne są wykonywne w czsie sekwencyjne (rezygnujemy z równoległości opercji rytmetycznych i we\wy) Pmięć podręczn (cche) jest rozdzieloną pomiędzy dnymi w njbrdziej skuteczny sposób (procesor i system opercyjny są intelektulne dne złdowne w cche tk, żeby zminimlizowć ilość przesyłek cche RAM) Komputer m tylko rejestry (njbrdziej szybką pmięć), jeden poziom cche (szybk pmięć rezygnujemy z hierrchicznej struktury pmięci podręcznej) i pmięć główną (dostęp do dresów której jest wykonny z szybkością mgistrli). 4

Przyjmujemy: Wszystkie tblicy dnych są umieszczone w pmięci głównej n - rozmir zgdnieni M - objętość pmięci podręcznej (cche), przy czym M << n Będziemy rozwżli tkie przypdki: M n w pmięci podręcznej możn umieścić wiersze mcierzy (młe zgdnienie) M < n dw wiersze mcierzy nie udje się umieścić w cche (duże zgdnienie) 5

Czs wykonni progrmu: t f trith m tbus f trith 1 m f t t bus rith f, m t rith, t bus - ilość rytmetycznych opercji i ilość przesłń dnych cche RAM - trwłość jednej opercji rytmetycznej i trwłość przesłni jednego słow Wskźnik wydjności wykorzystni pmięci szybkiej: q f m 6

7 W Umieszczenie dnych w pmięci: 9 8 7 6 5 4 1 1 1 1 1 11 1 1 x x x 16 15 : 14 1 1 11 : 10 9 8 7 : 6 5 4 : 1 : : : : 44 4 4 41 4 1 4 1 14 1 1 11,,1 1, 1,1 A Mcierze Wektory Podził mcierzy n bloki

SAXPY: y = y+αx //odczyt lph i umieszczenie w rejestrze for(i=1; i<=n; i++) { //odczyt y[i], x[i] y[i] = y[i] + lph*x[i]; //zpis y[i] } Ilość odczytów: α 1; x n; y n Ilość zpisów : y - n Rzem : m = n+1 Ilość mnożeń : n Ilość dodwń : n Rzem : f = n q f m n n 1 1 n 8

9 W Mnożenie mcierzy przez wektor: y = y+ax for(i=1; i<=n; i++) { //odczyt y i i umieszczenie w rejestr for(j=1; j<=n; j++) { //odczyt A ij, x j y i = y i + A ij *x j ; } //zpis y i } y x A 1 1 9 8 7 6 5 4 1 i j i j

Ilość odczytów: y n; x n, jeśli M n, n, jeśli M < n; A n ; Ilość zpisów : y n Rzem : m = n +n (M n) m = n +n (M < n) Ilość mnożeń : n Ilość dodwń : n Rzem : f = n q q f m f m n, n n 1 n n 1, n n n M n M n 10

Wniosek Wydjność drugiego lgorytmu jest brdziej wysoką od pierwszego zgdnieni, le jko w pierwszym zgdnieniu, tk i w drugim wskźnik wydjności nie zleży od rozmiru pmięci podręcznej. To ozncz, że te lgorytmy są skzne n wykonnie z szybkością wolnej mgistrli, nie szybkiego procesor. Zwiększenie częstości zegr procesor, objętości pmięci podręcznej nie powoduje istotnego przyspieszeni obliczeń. Przykłd: przesłnie jednego słow trw ~40 cyklów procesor. Dl lgorytmu q = 1 ozncz, że n jedną opercje rytmetyczną przypd przesłnie jednego słow. Jeden cykl procesor wytrc n opercje rytmetyczną. A pozostłe 9 cyklów? Są puste. Tu nie są uwzględnione prefetch i ten fkt, że łdownie dnych do cche jest wykonywne nie słowo po słowie, grupmi słów, umieszczonych w cche-linie. Jednk nie zmieni to sytucji w cłości. 11

1 W Mnożenie mcierzy przez mcierz: C = C + A*B 1. Metod klsyczn (ijk) B A C 9 8 7 6 5 4 1 9 8 7 6 5 4 1 9 8 7 6 5 4 1 k i i j k j Mcierze są umieszczone w pmięci głównej wiersz po wiersze Wzór mtemtyczny: n j i b c n k kj ik ij, 1,, 1

Algorytm: for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { //odczyt C ij i umieszczenie w rejestrze for(k=1; k<=n; k++) { //odczyt A ik, B kj C ij = C ij + A ik *B kj ; } //zpis C ij } } UWAGA! Przy kżdej zminie indeksu k będzie pobrny element mcierzy B kj z nstępnego wiersz jeśli mcierz jest dość dużą, bez sensu przydzielć cche dl ej elementów wyniknie przełdownie cche przy kżdej zminie indeksu k. Intelektulny procesor i system opercyjny będą pobierli elementy mcierzy B bez buforowni. 1

Ilość odczytów: C n ; A n, jeśli M n, n, jeśli M < n; B n ; Ilość zpisów : C n Rzem : m = n +n (M n) m = n +n (M < n) Ilość mnożeń : n Ilość dodwń : n Rzem : f = n q q f m f m n, n n 1 n n 1 1, n n 1 n M n M n 14

Metod klsyczn (ikj) - HP for(i=1; i<=n; i++) { for(k=1; k<=n; k++) { //odczyt A ik i umieszczenie w rejestrze for(j=1; j<=n; j++) { //odczyt C ij, B kj C ij = C ij + A ik *B kj ; //zpis C ij, jk tylko bufor będzie wyczerpny } } } Model nie uwzględni pobierni dnych z pmięci: wskźnik wydjności dl mcierzy dużych (M < n) okzuje się nwet gorzej, niż w przypdku poprzednim to się nie odpowid rzeczywistości. N prktyce ten model liczy szybszej od poprzedniego dl tego, że pozostłe usunięte skoki w dnych 15

Ilość odczytów: C n, jeśli M n, n, jeśli M < n; A n ; B n ; Ilość zpisów : C n, jeśli M n, n, jeśli M < n; Rzem : m = n +n (M n) m = n +n (M < n) Ilość opercji rytmetycznych: f = n q q f m f m n n n n n n 1 n 1 n,, M n M n 16

Metod blokow Mcierz jest podzieloną n bloki o tkim rozmirze, że trzy bloki jednocześnie mogą być umieszczone w pmięć podręczną (cche) jb 1 : 4 1 : 4 1 : 4 5 6 : 7 8 5 6 : 7 8 5 6 : 7 8 C11 C1 A11 A1 B11 B1... :...... :...... :... ib 9 10 : 11 1 ib 9 10 : 11 1 kb 9 10 : 11 1 1 14 : 15 16 1 14 : 15 16 1 14 : 15 16 C C A A B B 1 1 1 C kb Dl mcierzy blokowej zstosowujemy dziłni nd blokmi: C Nb ib, jb Cib, jb Aib, kb Bkb, jb, ib, jb1, kb1 A Nb W obszrze kżdego bloku używmy zwykłe dziłni nd mcierzmi jb B 17

Algorytm (*) for(ib=1; ib<=n b ; ib++) { for(jb=1; jb<= N b ; jb++) { //odczyt bloku C ib,jb i umieszczenie w //cche for(kb=1; kb<= N b ; kb++) { //odczyt bloków A ib,kb, B kb, jb C ib,jb = C ib,jb + A ib,kb *B kb,jb ; } //zpis bloku C ib,jb } } Rozmir kżdego bloku wynosi l b = n/n b, gdzie n rozmir mcierzy, N b - ilość podziłów n bloki wzdłuż jednej iż stron (przypuszczmy, że n jest wielokrotne N b ) Ilość słów w kżdym bloku jest równ l b = n /N b 18

Ilość odczytów: C N b l b = N b n /N b = n ; A N b l b = N b n /N b = N b n ; B N b l b = N b n ; Ilość zpisów : C n ; Rzem : m = N b n + n = (N b +1) n N b n ; Ilość opercji rytmetycznych: f = n q f m n N n b n N b l b ; bloki muszą byc w cche l b M l b M l b M q M ; 19

Wydjność lgorytmów lgebry liniowej jest przyjęte odnosić do jednego z poziomów BLAS (Bsis Liner Algebr Subroutines) zgodnie z rzędem opercji rytmetycznych O(n k ). BLAS1 O(n 1 ), BLAS O(n ), BLAS O(n ) Algorytm sxpy Wzór mtemtyczny y y x q f m Poziom BLAS / 1 O(n) Mnożenie mcierzy przez wektor y y A x (M n) 1 (M<n) O(n ) Mnożenie mcierzy przez mcierz (Clssic) C C AB (M n) 1 (M < n) O(n ) Mnożenie mcierzy przez mcierz (HP) C C AB (M>=n) / (M<n) O(n ) Mnożenie mcierzy przez mcierz (metod blokow) C C AB M O(n ) 0

Wnioski Algorytmy poziomu BLAS 1, - O(n 1 ), O(n ) nie wykzują oszcowni wydjności lepiej od q =. Dl nich podstwowo nie jest możliwe podniesienie wydjności w skutek utrzymni dnych w cche ilość opercji rytmetycznych jest tego smego rzędu, jk i ilość przesłń dnych. Oni są przyrzeczone prcowć z prędkością wolnej mgistrli. Algorytmy poziomu BLAS - O(n ) mogą być zorgnizowne tk, że część dnych, jeden rz umieszczoną w cche, pozostje wykorzystn wielokrotnie (cche reuse). Powoduje to zmniejszenie rzędu ilości przesłń dnych w stosunku do rzędu opercji rytmetycznych oszcownie wydjności jest lepsze od q =. Podstwą dl tworzeni tkich lgorytmów jest podził dnych n bloki. Przy oszcowniu q~ M możn przynjmniej teoretycznie tk dobrć rozmir cche że procesor będzie mił minimlną ilość pustych cykli. Im więcej jest l b (l b <M), tym większ wydjność. 1

Podził n bloki n poziomie rejestrów. (Register s blocking) Przedstwion powyżej procedur podziłu n bloki w tki sposób, żeby jednocześnie w pmięci podręcznej mieścili się bloki, okzł się podstwą dl podniesieni wydjności lgorytmu mnożeni mcierzy przez mcierz rzędu ~O(n ) dziłń rytmetycznych. Procedur t zmniejsz ilość przesłń dnych pmięć główn pmięć podręczn pmięć główn i dostł nzwę cche blocking. Okzuje się że przy przesyłniu dnych pmięć podręczn rejestry pmięć podręczn zstosownie techniki blokowej zmniejsz ilość łdowń rejestrów (register s reuse) i też służy do podniesieni wydjności lgorytmu. Rozwżmy lgorytm C ib,jb = C ib,jb + A ib,kb *B kb,jb - pętl wewnętrzn lgorytmu (*)

Algorytm niwny (mnożenie bloków mcierzy Cib,jb = Cib,jb + Aib,kb*Bkb,jb ) for( i 0; i l { { } } for( j 0; j l r 0; for( k 0; k l { r r } c ij c ij b r; ; i ) ik b ; j ) b b kj ; k ) ; W pętle wewnętrznej: Ilość łdowń rejestrów: 1 odczyt ik + 1 odczyt b ik Ilość opercji rytmetycznych: 1 mnożenie + 1 dodwnie ---------------------------------------------------- q = f/m = / = 1 Ilość potrzebnych rejestrów typu double: 4 r, ik, b ik, tmp ik b ik Żdnego blokowni rejestrów w tym lgorytmie nie m Tu r zmienn klsy register, któr m być przechowywn w rejestrze w ciągu wykonni cłej pętli wewnętrznej, ik, b ik elementy bloków A ib,kb, B kb,jb odpowiednio. Po zkończeniu pętli wewnętrznej wrtość zmiennej r będzie przypisn c ij - elementowi bloku C ib,jb.

Schemt blokowni rejestrów x for( i 0; i l ; i ) { for( j 0; // B b j l for( k 0; k l ; k ) { // Łdujemy w rejestry kj b { r0 0; r1 0; r 0; r 0; 0 b ; r A B ; 0 r0 r0 r; r A B ; 1 0 0 r r r; ; j ) b // r // r ik b i1, k A 0 kj // r0 r0 b kj // r r ik i1, k ik b ; kj b kj A 1 i1, k ; }// zkonczenie petli k c c ij // Łdujemy w rejestr r r1 r1 r; r r r r; c i1, j A B ; A B ; ij c r0; i1, j r; // r }// zkonczenie petli j }// zkonczenie petli i 0 1 0 0 c // r // r1 r1 // r r i, j1 c c ik i1, j1 B b i1, k i, j1 0 b r1; c b k, j1 ik b k, j1 i1, k i1, j1 k, j1 k, j1 b ; k, j1 r; Rejestry: r0, r1, r, r służą dl przechowywni poprwek do elementów c ij, c i,j+1, c i+1,j, c i+1,j+1 w ciągu iterowni cłej pętli wewnętrznej. A 0, A 1 do przechowywni ik, i+1,k ; B 0 b kj, b k,j+1 ; r pomocniczy rejestr do przechowywni wyników mnożeni. Rzem: 8 rejestrów typu double Frgment kodu dgemm_c 4

W pętle wewnętrznej: Ilość łdowń w rejestry: 4 Ilość opercji rytmetycznych: 8 (4 mnożeni + 4 dodwni) ------------------------------------------------------------------------------------------------ q = f/m = 8/4 = To jest zncznie lepiej, niż dl poprzedniego lgorytmu, przecież potrzebuje 8 rejestrów typu double. i c c i,j i+ 1,j c i,j+ 1 c i+ 1,j+ 1 j += i i,k i+ 1,k k k b b j k,j k,j+ 1 C A B ib,jb ib,kb kb,jb Rozmieszczenie rejestrów double w schemcie blokowni x 5

Blokownie x Możn udowodnić, że blokownie x będzie jeszcze lepiej: w pętle wewnętrznej - 6 odczytów w rejestry, 18 opercji rytmetycznych, q = f/m = 18/6 = Przecież potrzebuje 15 rejestrów typu double: 9 rejestrów dl poprwek do elementów mcierzy C ib,kb, rejestry dl elementów mcierzy A ib,kb, 1 rejestr dl elementów mcierzy B ik,jk i rejestry pomocnicze. Wnioski Blokownie rejestrów zmniejsz ilość przesłń dnych cche-rejestr-cche w skutek utrzymni części dnych w rejestrch. To powoduje zwiększenie współczynnik ilość rytmetycznych opercji/ilość przesłń dnych n poziomie pmięć podręczn rejestr pmięć podręczn. Im więcej rejestrów double zwier procesor, tym większy rozmir bloku ud się zrelizowć, tym brdziej wysoką będzie wydjność. Dl schemtu blokowni n n: q = n /(n) = n /n, ilość potrzebnych rejestrów - n +n 6

Przykłd: Rozmir mcierzy N = 1 000 Algorytm niwny ijk: Blokownie rejestrów x: Blokownie rejestrów x, blokownie cche 64 64 i repck (BLAS 1989, J. Dongrr): 00 MFLOPS 600 MFLOPS 11 MFLOPS Frgment kodu dgemm_dong Komputer: Procesor Intel Core Qud CPU Q6600 @.40 GHz Cche - L1: KB, L:4096 KB; Pmięć: DDR 800 MHz 4 GB Kompiltor: Intel C/C++ 10.1.01 /O /QxT /QxT /Qunroll:10 /Qprllel 7

Zstosownie rejestrów wektorowych Nstępnym etpem podniesieni wydjności jest zstosownie rejestrów wektorowych. Procesory Pentium IV zwierją 8 18-bitowych rejestrów XMM (Streming SIMD Extensions SSE technologii), kżdy z których umieszcz dw słow typu double. Tkie rejestry ndją możliwość z jeden cykl procesor wykonywć dw mnożeni lub dw dodwni. W porównniu ze zwykłymi rejestrmi typu double, które mogą wykonywć tylko jedną opercje (mnożenie lub dodwnie) z jeden cykl procesor, użycie rejestrów wektorowych teoretycznie zezwl n podniesinie wydjności lgorytmów obliczeniowych, jeśli nie powstje przy tym ztrzymnie przesłń dnych RAM cche RAM, cche rejestry - cche. To jest element rchitektury SIMD (single instruction strem multiple dt strem). Wcześniej zstosownie rejestrów XMM było możliwe tylko w języku ssembler. Terz technologii SSE, SSE wspierją możliwość oprogrmowni n poziomie język C/C++. 8

j k j i += i k C ib,jb A B ib,kb kb,jb Rozmieszczenie rejestrów wektorowych w schemcie blokowni x4, używnego dl procesorów Pentium IV rchitektury Prescott и Opteron Przy jednej itercji pętli wewnętrznej mmy: 6 łdowń dnych w rejestry 16 opercji rytmetycznych ------------------------------------------ q = 16/6 =.67 9

#include <emmintrin.h> #include <intrin.h> m18d c1, c, c, c4, w, w1, wt, wt1; //8 registers MMX re needed const int mr = ; const int nr = 4; for(i=0; i<lbv; i+=mr) { for(j=0; j<lbh; j+=nr) { pwt = WT+M*j; //point to block B kb,jb ; M ilość wierszy w mcierzy B kb,jb pw = W+i*M; //point to block A ib,kb ; M ilość kolumn w mcierzy A ib,kb //clening of registers for C ib,kb c1 = _mm_setzero_pd(); c = _mm_setzero_pd(); c = _mm_setzero_pd(); c4 = _mm_setzero_pd(); for(k=0; k<m; k++) { //------------------------ 0 w = _mm_lod1_pd(pw); wt = _mm_lod_pd(pwt); wt1 = _mm_lod_pd(pwt+); w1 = w; w1 = _mm_mul_pd(w1, wt); w = _mm_mul_pd(w, wt1); //lod w <- ik, i,k //lod wt <- b kj, b k,j+1 //lod wt1 <- b k,j+, b k,j+ //w1 <- w //{ ik b kj, ik,b k,j+1 }: w1<-w*wt //{ ik b k,j+, ik,b k,j+ }: w1<-w*wt1 c = _mm_dd_pd(c, w); //{c i,j+, c i,j+ } <- {c i,j+, c i,j+ }+{ ik b k,j+, ik,b k,j+ } c1 = _mm_dd_pd(c1, w1); //{c ij, c i,j+1 } <- {c ij, c i,j+1 }+{ ik b kj, ik,b k,j+1 } 0

w = _mm_lod1_pd(pw+1); // lod w <- i+1,k, i+1,k w1 = w; //w1 <- w w1 = _mm_mul_pd(w1, wt); w = _mm_mul_pd(w, wt1); //{ i+1,k b kj, i+1,k,b k,j+1 }: w1<-w*wt //{ i+1,k b kj, i+1,k,b k,j+1 }: w1<-w*wt c4 = _mm_dd_pd(c4, w); //{c i+1,j+, c i+1,j+ } <- {c i+1,j+, c i+1,j+ }+{ i+1,k b k,j+, i+1,k,b k,j+ } c = _mm_dd_pd(c, w1); //{c i+1,j, c i+1,j+1 } <- {c i+1,j, c i+1,j+1 }+{ i+1,k b kj, i+1,k,b k,j+1 } } pw += mr; pwt+= nr; }//j loop } //i loop pos_cw = mr*j; //unlod registers to C _mm_store_pd(cw+pos_cw, c1); _mm_store_pd(cw+pos_cw+, c); _mm_store_pd(cw+pos_cw+4, c); _mm_store_pd(cw+pos_cw+6, c4); Uwg! Dne tblic B kb,jb, C ib,jb mją być wyrównne po grnice 16 bjtów! A = (double *)_ligned_mlloc((number_of_items)*sizeof(double), 16);. _ligned_free(a); 1

K раз W Dl wciągnięci potokowych technologii procesor rozwijmy pętle wewnętrzne K rzy (ilość używnych rejestrów MMX nie zleży od K): j k j +=.... i i K раз k C ib,jb A B ib,kb kb,jb W zleżności od typu procesor K może osiągnąć 90 10 rzy. Npisn w tki sposób pętl wewnętrzn dostł nzwę mikrojąndr (Microkernel).

Pkownie dnych Dl tego, żeby zminimlizowć red miss (cche-chybienie przy odczycie), dne mją być umieszczone w pmięci głównej w kolejności ich pobrni będziemy nzywli to kolejnością optymlną. Dne, które pozostłe umieszczone w cche, mją pozostwć tm jk njdłużej. Przecież pierwotne umieszczenie dnych w kżdej z mcierzy i w blokch C ib,jb, A ib,kb, B kb,jb nie odpowid tkiej kolejności wynik konieczność przepkowni dnych. Istnieje kilk różnych schemtów przepkowni.

Początkowe umieszczenie dnych w mcierzy A, B, C kb=1,.,nb //Pck A *,kb jb=1,.,nb //Pck B kb,jb ib=1, Nb C ib,jb +=A ib,kb *B kb,jb end ib end jb end kb Mnożenie w blokch: i=1, lb, j=1, lb, k=1, lb C ij ib,jb+=a ik ib,kb*b kj kb,jb C i+1,j ib,jb+=a i+1,k ib,kb*b kj kb,jb. end k end j end i Pkownie BLAS, ATLAS 4

Pkownie BLAS, ATLAS: W cche L1 mją być umieszczone trzy bloki: A ib,kb, B kb,jb, C ib,kb. Z tego wynik: 1 l L L b 1 lb Przykłd: L1=K = *104 = 768 bjtów lbo 768/8 = 4 096 słów double. l b = 6.95 6 40 To jest optymlny rozmir bloku dl tkiego lgorytmu 5

Intel MKL kb=1,.,nb //Pck B kb ib=1,.,nb //Pck A ib,kb jb=1 C ib +=A ib,kb *B kb end ib end jb end kb Pkownie Intel MKL: gór poziom mcierzy; dół poziom bloków m r n r - schemt blokowni rejestrów; l b szerokość pneli. Z punktu widzeni wydjności obliczeń przy wykonniu pętli wewnętrznej w cche L1 mją być umieszczone bloki dnych, zkreskowne n rys, plus blok m r xn r. To jest brdziej oszczędny sposób użyci ogrniczonej pmięci podręcznej, niż przedstwiony w projektch BLAS, ATLAS 6

Pkownie dnych Intel MKL?gemm dl schemtu blokowni rejestrów wektorowych m r n r. Gór : mnożenie pnelu mcierzy przez blok; Dół bloki, które mją być umieszczone w TLB buforze. 7

Pkownie Intel MKL: W pętle wewnętrznej {k=0; k<lb; } są potrzebne: jeden blok m r l b, jeden blok n r l b i jeden blok m r n r. Z tego wynik: l m n m n L l 1 r r b r r r r 1 b mr nr Z innej strony rozmir dnych, umieszczonych w cche L, nie powinien przekroczyć rozmiru TLB Trnsltion Lookside Buffer (Dodtek 1). To jest cche CPU, używny nrzędziem sterowni pmięci dl przyspieszeni trnslcji dresów wirtulnych w trkcie mpowni dresów wirtulnych n pmięć fizyczną. Wielu procesorów, również procesory x86, używją tego urządzeni. Jeśli obszr dnych przekrcz rozmir TLB, dostęp do tych dnych idzie zncznie wolniej. Więc drugi wrunek (dne, oznczone n poprzednim rys, dół): L m n (1) l b n l r b TLB l b n r TLB n r () 8

Z tych dwóch wrunków trzeb wybrć ten, który doprowdzi do mniejszego rozmiru l b. Przykłd: m r =, n r = 4, TLB = 56 K (Pentium IV, Core Duo), L1 = K. To ozncz: L1 = 4096 słów double, TLB = 768 słów double. Ze wzoru (1) : l b = (4 096-*4)/(+4) = 681 Ze wzoru (): l b = [ + 768] - = 179 Optymln wrtość: l b = 176 (musi być wielokrotn do n r = 4) 9

Technologie EM64t (system opercyjny 64 bit) dopuszczją obecność 16 18-bit rejestrów XMM. Więc register s blocking, również i pkownie dnych myszą odpowidć schemtowi 4 4 (m r =n r =4) : Użycie rejestrów: 8 dl elementów mcierzy C ib,jb, 4 dl elementów mcierzy A ib,kb, 4 dl elementów mcierzy B kb, jb. 40

N kżdej itercji pętli wewnętrznej mmy: 8 łdowń w rejestry i opercji rytmetyczne q = /8 = 4 Litertur do wykłdu: 1. Demmel J. W., Applied Numericl Liner Algebr, SIAM, Phildellphi, 1997, Russin edition, Moscow, Mir, 001.. Golub G.H., vn Lon C. F., Mtrix Computtions. Third edition, The Johns Hopkins University Press, 1996.. Goto K, Vn De Geijn R A (008). Antomy of High-Performnce Mtrix Multipliction. ACM Trnsctions on Mthemticl Softwre. V 4,, 1 5. 4. Yotov K., Roeder T., Pingli K., Gunnels J., Gustvson F., An Experimentl Comprison of Cche-oblivious nd Cche-conscious Progrms. SPAA 07, June 9 11, 007, Sn Diego, Cliforni, USA. 5. Filko S. Blokow wielofrontln metod podstruktur do rozwiązywni dużych ukłdów równń MES. Czsopismo techniczne, 1-NP/009, 175 188 41

Dodtek 1 TLB (Goto K, Vn De Geijn R A (008). Antomy of High-Performnce Mtrix Multipliction. ACM Trnsctions on Mthemticl Softwre. V 4,, 1 5) 4.. TLB considertions. A second rchitecturl considertion reltes to the pge mngement system. For our discussion it suffices to consider tht typicl modern rchitecture uses virtul memory so tht the size of usble memory is not constrined by the size of the physicl memory: Memory is prtitioned into pges of some (often fixed) prescribed size. A tble, referred to s the pge tble mps virtul ddresses to physicl ddresses nd keeps trck of whether pge is in memory or on disk. The problem is tht this tble itself is stored in memory, which dds dditionl memory ccess costs to perform virtul to physicl trnsltions. To overcome this, smller tble, the Trnsltion Look-side Buffer (TLB), tht stores informtion bout the most recently used pges, is kept. Whenever virtul ddress is found in the TLB, the trnsltion is fst. Whenever it is not found ( TLB miss occurs), the pge tble is consulted nd the resulting entry is moved from the pge tble to the TLB. In other words, the TLB is cche for the pge tble. More recently, level TLB hs been introduced into some rchitectures for resons similr to those tht motivted the introduction of n L cche. 4

The most significnt difference between cche miss nd TLB miss is tht cche miss does not necessrily stll the CPU. A smll number of cche misses cn be tolerted by using lgorithmic prefetching techniques s long s the dt cn be red fst enough from the memory where it does exist nd rrives t the CPU by the time it is needed for computtion. A TLB miss, by contrst, cuses the CPU to stll until the TLB hs been updted with the new ddress. In other words, prefetching cn msk cche miss but not TLB miss. 4