POZNA SUPERCOMPUTING AND NETWORKING. Zwikszanie efektywnoci programów optymalizacja pamici cz2



Podobne dokumenty
POZNAŃ SUPERCOMPUTING AND NETWORKING. Zwiększanie efektywności programów optymalizacja pamięci część 1

Optymalizacja oprogramowania - wprowadzenie

POZNA SUPERCOMPUTING AND NETWORKING. Podstawy optymalizacji kodu ródłowego

Metody Kompilacji Wykład 1 Wstęp

Temat: Geometria obliczeniowa cz II. Para najmniej odległych punktów. Sprawdzenie, czy istnieje para przecinajcych si odcinków.

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

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

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

Wstp. Warto przepływu to

Sposoby przekazywania parametrów w metodach.

Bazy danych Podstawy teoretyczne

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

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

Klonowanie MAC adresu oraz TTL

Projektowanie i analiza zadaniowa interfejsu na przykładzie okna dialogowego.

Multipro GbE. Testy RFC2544. Wszystko na jednej platformie

Szukanie najkrótszych dróg z jednym ródłem

Matematyczne Podstawy Informatyki

Bazy danych. Plan wykładu. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne. SQL - podzapytania A B

Planowanie adresacji IP dla przedsibiorstwa.

Plan wykładu. Reguły asocjacyjne. Przykłady asocjacji. Reguły asocjacyjne. Jeli warunki to efekty. warunki efekty

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Stawiajc krzyyk w odpowiedniej wartoci mona zapisa dowolnego binarnego reprezentanta liczby dziesitnej x x x x x

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

Poprawa efektywnoci metody wstecznej propagacji bdu. Jacek Bartman

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

PROWIZJE Menad er Schematy rozliczeniowe

Izolacja Anteny szerokopasmowe i wskopasmowe

AltiumLive Dashboard - sownik. AltiumLive Dashboard - Glossary. Language. Contents

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

Translacja wprowadzenie

NAZWY I ADRESY W SIECIACH IP PODZIAŁ NA PODSIECI

Metody Informatyczne w Budownictwie Metoda Elementów Skoczonych ZADANIE NR 1

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

Wiesław Serewi Anna Owczarek Piotr Pachół WODGiK Katowice

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

Program do konwersji obrazu na cig zero-jedynkowy

geometry a w przypadku istnienia notki na marginesie: 1 z 5

Twoja instrukcja użytkownika PHILIPS JR32RWDVK

Ustalenie optymalnego układu lokalizacyjnodystrybucyjnego

KONSTRUKCJA KOMPILATORÓW

Konspekt lekcji matematyki klasa 4e Liceum Ogólnokształcce

WYKŁAD 10. Wzorce projektowe czynnociowe Command Strategy

WYKŁAD 11. Wzorce projektowe czynnociowe Iterator TemplateMethod

Bazy danych Transakcje

1 Podstawy c++ w pigułce.

s FAQ: NET 08/PL Data: 01/08/2011

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

Proces tworzenia programu:

Symulacyjny model ruchu drogowego jako moduł systemu zarzdzania kryzysowego w aglomeracji

SUPLEMENT SM-BOSS WERSJA 6.15

Norma IEEE SPMP

. Podstawy Programowania 1. Wstęp. Arkadiusz Chrobot. 15 października 2015

Algorytmy kodowania predykcyjnego

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

System Connector Opis wdrożenia systemu

Wzorce (szablony) template<class T> {definicja wzorca} lub template<class TypElementu> lub template<class TypElementu1, class TypElementu2>

Regulamin Konkursu Mistrz sprzeday YATO 2007

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

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Wykład 10: Fizyczna organizacja danych w bazie danych

Projektowanie algorytmów rekurencyjnych

Dysk SSD Samsung 850 PRO 512 GB 2.5 SATA 3 (550/520) 6,8 mm

Bazy danych. Zaliczenie. Literatura. Strony WWW. Wykład 1: Wprowadzenie do baz danych. Semestr 1

Projekt okablowania strukturalnego dla I semestru Akademii CISCO we WSIZ Copernicus we Wrocławiu

Elementy pneumatyczne

Architektura komputerów

Architektura, oprogramowanie i uytkowanie klastra PCSS. Marek Zawadzki <mzawadzk@man.poznan.pl>

WYKŁAD 12. Wzorce projektowe czynnociowe State Mediator

Kompilacja image z CVS

Twoja instrukcja użytkownika HP COMPAQ DX6120 MICROTOWER PC

ZAŁ CZNIK D OPIS CHROMATOGRAMÓW GC/TEA. sporz dzony na podstawie informacji zawartych w Opinii CLKP w Warszawie nr E-che 90/12

PROCEDURY l METODYKA PRZEPROWADZANIA AUDYTU WEWNTRZNEGO

M E R I D I A N. Sobota, 11 lutego 2006

FUNKCJE UYTKOWNIKA. Rozbrajanie systemu pod przymusem [Kod przymusu] Blokowanie linii

Zrównoleglenie i przetwarzanie potokowe

Dostp do zasobów dyskowych uytkowników lcme10 przez protokół SMB (Microsoft Networking)

Studium przypadku Case Study CCNA2-ROUTING

Procedura rekrutacji pracowników do Starostwa Powiatowego w Kielcach

WYKŁAD 9. Wzorce projektowe czynnociowe Observer Visitor

Wojciech Drzewiecki SYSTEMY INFORMACJI GEOGRAFICZNEJ

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Wymierne korzyci wynikajce z analizy procesów

6.2. Baza i wymiar. V nazywamy baz-

ELEMENT SYSTEMU BIBI.NET. Instrukcja Obsługi

Podział Internetu radiowego WIFI konfiguracja

Badania marketingowe w pigułce

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

PRZESTRZE NAZW DOMEN DNS

Agenda zaj. dr in. Andrzej Sobczak. Informacje analogowe vs dyskretne

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

Nowe kody kreskowe GS1 DataBar Pakiet informacyjny dla PRODUCENTÓW

w sprawie wprowadzenia procedury naboru pracowników na kierownicze stanowiska urzdnicze i stanowiska urzdnicze w Starostwie Powiatowym w Krasnymstawie

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Bazy danych. Plan wykładu. Przetwarzanie zapyta. Etapy przetwarzania zapytania. Wykład 12: Optymalizacja zapyta. Etapy przetwarzanie zapytania

Wykªad 6: Model logitowy

Eugeniusz ZIÓŁKOWSKI 1 Wydział Odlewnictwa AGH, Kraków

Mamy nadziej, e wiedza o właciwociach i moliwociach poszczególnych systemów plików pomoe w prawidłowym i wiadomym wyborze systemu plików.

Zadania do wykonaj przed przyst!pieniem do pracy:

Transkrypt:

Zwikszanie efektywnoci programów optymalizacja pamici cz2

literatura podstawowa [Aho2002] Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Kompilatory. Reguły, metody i narzdzia, WNT 2002 (tłum. pierwszego wydania amerykaskiego, 1986). [Aho2001] A.V. Aho, R. Sethi, J.D. Ullman, Compilers: Principles, Techniques, and Tools, Pearson Education 2001. 2

literatura uzupełniajca [Bentley2008] Jon Bentley, Perełki oprogramowania, wyd. trzecie, WNT, 2008 (tłum. drugiego wydania amerykaskiego, Pearson Education 2000). [Bentley2007] Jon Bentley, Wicej perełek oprogramowania. Wyznania programisty, WNT 2007 (tłum. pierwszego wydania amerykaskiego, Pearson Education 1988). 3

literatura uzupełniajca [Kernigham2002] Brian W. Kernigham, Rob Pike, Lekcja programowania, WNT 2002, (tłum. pierwszego wydania amerykaskiego, Pearson Education 1999). [Oram2008] Andy Oram, Greg Wilson (red.), Pikny kod. Tajemnice mistrzów programowania, Helion 2008, (tłum. wydania amerykaskiego, O Reilly Media Inc. 2007). 4

literatura uzupełniajca [Barr2005] Adam Barr, Znajd błd. Sztuka analizowania kodu, Helion 2005 (tłum. wydania amerykaskiego, Pearson Education 2005). 5

literatura uzupełniajca [Cooper2004] Keith D. Cooper, Linda Torczon, Engineering a Compiler, Morgan Kaufmann Publishers, San Francisco, 2004. [Goedecker2001] Stefan Goedecker, Adolfy Hoisie, Performance Optimization of Numerically Intensive Codes, Society for Industrial and Applied Mathematics, Philadelphia 2001. 6

literatura uzupełniajca [Kaspersky2003], Kris Kaspersky, Code Optimization: Effective Memory Usage, A-LIST, LLC, 2003. [Muchnik1997] Steven S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, San Francisco, 1997. 7

literatura uzupełniajca [Allen2002] Randy Allen, Ken Kennedy, Optimizing Compilers for Modern Architectures, Morgan Kaufmann Publishers, San Francisco, 2002. [Falk2004] Heiko Falk, Peter Marwedel, Source Code Optimization Techniques for Data Flow Dominated Embedded Software, Kluwer Academic Publishers, Boston 2004. 8

literatura uzupełniajca [Wolfe1995] Michael Wolfe, High- Performance Compilers for Parallel Computing, Addison Wesley, 1995. 9

plan optymalizacja hierarchii pamici [Muchnick1997] rozdz. 20 [Allen2002] rozdz. 9 optymalizacja dostpu do pamici [Goedecker2001] rozdz. 6, [Kaspersky2003] rozdz. 3 10

plan optymalizacja operacji na pamici [Kaspersky2003] rozdz. 2 alokacja rejestrów [Cooper2004] rozdz. 13 ograniczenie wykorzystywanej pamici [Bentley2008] rozdz. 10 [Kernigham2002] rozdz. 7 11

optymalizacja dostpu do pamici dostp do pamici jest głównym wskim gardłem w komputerach z hierarchi pamici std optymalizacja dostpu do pamici ma najwikszy wpływ na wzrost wydajnoci wikszy od optymalizacji operacji zmiennoprzecinkowych ok. 5 razy [Goedecker2001] 12

optymalizacja dostpu do pamici czasy dostpu do pamici zmieniaj si w szerokim zakresie w zalenoci od sposobu dostpu do pamici przeprowadza si test pamici: pomiar czasu powtarzalnego kopiowania elementów oddzielonych rónymi odstpami kopiowanie jest wykonywane wielokrotnie aby test był znaczcy statystycznie 13

optymalizacja dostpu do pamici odstp (stride) odległo mierzona w słowach pomidzy dwoma lokalizacjami pamici, do których kolejno nastpuje dostp w kodzie programu w zbiorach danych o rónych rozmiarach 14

optymalizacja dostpu do pamici po pierwszym kopiowaniu dane, albo ich cz, pozostaj w pamici notatnikowej, w celu dalszego kopiowania 15

wydajnokomputerów przy rónych dostpach do danych ze wzgldu na znaczenie przestrzennej lokalizacji danych w obliczeniach naukowych, warto zobaczy, jak si zachowuj komputery przy czasowym braku lokalnoci danych, czyli przy rónych odstpach midzy kolejnymi danymi 16

wydajnokomputerów przy rónych dostpach do danych po pierwsze: drastycznie odmienne zachowanie dla maszyn wektorowych (Cray C90) a komputerami RISC - dla RISC znaczny spadek szerokoci pasma pamici dla duych rozmiarów danych po drugie: szeroko pasma pamici nie jest zwizana z czasem cyklu procesora 17

zmiana porzdku w ptli dla optymalnej lokalizacji danych przedyskutujmy dostpy do pamici dla dwóch kodów, rónicych si jedynie kolejnoci ptli, dla małych i duych macierzy [Goedecker2001]: dimension a(n,n),b(n,n) C LOOP A do 10,i=1,n do 10,j=1,n 10 a(i,j)=b(i,j) 18

zmiana porzdku w ptli dla optymalnej lokalizacji danych dimension a(n,n),b(n,n) C LOOP B do 20,j=1,n do 20,i=1,n 20 a(i,j)=b(i,j) 19

zmiana porzdku w ptli dla optymalnej lokalizacji danych załoenia: rozmiar pamici notatnikowej 128 liczb podwójnej precyzji macierz jest mała, gdy n jest mniejsze ni 8 słów, oraz a i b mieszcz si w pamici notatnikowej długo wiersza w pamici notatnikowej to 8 podwójnych słów 20

zmiana porzdku w ptli dla optymalnej lokalizacji danych załoenia: fizyczny porzdek elementów macierzy w jzyku Fortran: kolumnami, w jzyku C: wierszami zgodnie z konwencj Fortranu, fizyczny porzdek elementów macierzy w pamici: a(1,1),a(2,1),a(3,1),,a(n,1), a(1,2),a(2,2),a(3,2),,a(n,2), 21

zmiana porzdku w ptli dla optymalnej lokalizacji danych załoenia: pierwsze elementy macierzy zarówno a jak i b s połoone na granicy wiersza czyli pierwszy element kadej macierzy jest równie pierwszym elementem wiersza pamici notatnikowej na pocztku oblicze nie ma adnych danych w pamici notatnikowej 22

analiza przypadków (1) ptla A, małe macierze, (8x8): dostp do elementów macierzy w kolejnoci: x(1,1),x(1,2),x(1,3),,x(1,8), x(2,1),x(2,2),x(2,3),,x(2,8), gdzie x to a albo b 23

analiza przypadków (1) - elementy x(1,i), x(1,i+1) s od siebie w odległoci 8 podwójnych słów, std chybione odwołanie wystpi dla pierwszych omiu ładowa a i b, jako e mamy dostp do fizycznych lokalizacji pamici: 1,9,17,25,33,41, 49 i 57 24

analiza przypadków (1) poniewa pami notatnikowa moe mieci wszystkie 128 podwójnych słów, które pojawiły si przy pierwszych 8 iteracjach podwójnej ptli, wszystkie kolejne odwołania do pamici bd trafione adne inne odwołania do pamici notatnikowej nie bd chybione w pozostałych iteracjach ptli ładowanie 128 elementów spowodowało 2x8 chybionych odwoła, czyli jedno na kade 8 słów 25

analiza przypadku (2) ptla A, due macierze, (16x16): wzorzec dostpu do pamici taki sam jak poprzednio, kolejne odwołania do pamici nie s ssiednie, s 16 podwójnych słów od siebie po pierwszych 16 iteracjach ptli (z których kada spowodowała chybione odwołanie) mamy zajte 2x16 wierszy, czyli 128 podwójnych słów (pami notatnikowa jest pełna) 26

analiza przypadku (2) wszystkie kolejne ładowane wiersze pamici notatnikowej nadpisz istniejce wiersze stare wiersze bd przerzucone do pamici głównej wiersz zawierajcy elementy od 129 do 136 zastpi wiersz z elementami od 1 do 8, itd. w drugiej iteracji ptli zewntrznej element x(2,1) nie bdzie dostpny, gdy jego wiersz zostanie zastpiony innym 27

analiza przypadku (2) std liczba chybionych odwoła wyniesie 2x16x16, czyli jedno odwołanie chybione na kade dostpne słowo 28

analiza przypadku (3 i 4) ptla B, małe (8x8) i due (16x16) macierze: w obu przypadkach jest dostp do elementów macierzy w porzdku w jakim s zapamitane w pamici jest tylko jedno chybione odwołanie do pamici notatnikowej co kade 8 podwójnych słów dane dostarczone do pamici notatnikowej przy chybionych odwołaniach s wykorzystane w kolejnych iteracjach ptli wewntrznej 29

porównanie przypadków dla duych macierzy struktura ptli A wykazuje du strat wydajnoci wydajno ta jest 30 razy gorsza ni dla struktury ptli B 30

fuzja ptli fuzja ptli w celu redukcji niepotrzebnych odwoła do pamici [Goedecker2001] program aktualizuje pozycj i prdko n czstek prdkoci vxyz(j,i) i siły fxyz(j,i), zapamitane w czci kodu aktualizacji prdkoci, musz by przeładowywane w ptli aktualizacji pozycji nadmiarowych przeładowa unika si, jeeli ptle s połczone w jedn 31

fuzja ptli [Goedecker2001] c UPDATE POSITIONS AND VELOCITIES do 10 i=1,n do 10 j=1,3 at = fxyz(j,i) vxyz(j,i)= vxyz(j,i)+(.5d0*dt/rmass)* (at + gxyz(j,i)) gxyz(j,i) = at rxyz(j,i)=rxyz(j,i)+ dt*vxyz(j,i) + (.5d0*dt*dt/rmass)*fxyz(j,i) 10 continue 32

optymalna lokalizacja danych aby osign optymaln lokalizacj danych, struktury danych w programie musz by zaprojektowane tak, aby wielkoci stosowane w tym samym kontekcie były fizycznie blisko w pamici rozpatrzmy dwie wersje ptli w kodzie dynamiki molekularnej: struktur danych A i B 33

struktura danych A [Goedecker2001] DATA STRUCTURE A dimension rx(n),ry(n),rz(n),fx(n),fz(n) c loop over all particle pairs do 100,i=1,n do 100,j=1,i-1 dist2=(rx(i)-rx(j))**2+(ry(i)-ry(j)**2 +(rz(i)-rz(j))**2 if (dist2.le.cutoff2) then c calculate interaction dfx=... dfy=... dfz=... 34

struktura danych A [Goedecker2001] c accumulate force fx(j)=fx(j)+dfx fy(j)=fy(j)+dfy fz(j)=fz(j)+dfz fx(i)=fx(i)-dfx fy(i)=fy(i)-dfy fz(i)=fz(i)-dfz endif 100 continue 35

struktura danych B [Goedecker2001] DATA STRUCTURE B dimension r(3,n),f(3,n) c loop over all particle pairs do 100,i=1,n do 100,j=1,i-1 dist2=(r(1,i)-r(1,j))**2+(r(2,i)-r(2,j)**2 +(r(3,i)-r(3,j))**2 if (dist2.le.cutoff2) then c calculate interaction dfx=... dfy=... dfz=... 36

struktura danych B [Goedecker2001] c accumulate force f(1,j)=fx(1,j)+dfx f(2,j)=fy(2,j)+dfy f(3,j)=fz(3,j)+dfz f(1,i)=fx(1,i)-dfx f(2,i)=fy(2,i)-dfy f(3,i)=fz(3,i)-dfz endif 100 continue 37

optymalna lokalizacja danych wzorce dostpu do pamici elementów tablicy fx(j), fy(j) i fz(j) s mniej lub bardziej losowe nie mona oczekiwa, e jeeli czstka j jest blisko czstki i, to czstka j+1 te bdzie oznacza to e odwołania do pamici dla j+1 składnika siły, wprowadzone do pamici notatnikowej przy dostpie do składnika j, prawdopodobnie bd nadpisane 38

optymalna lokalizacja danych std, zasadniczo mamy jedno chybione trafienie dla kadego odwołania si do składnika siły indeksowanego przez j dla 3 składników siły w strukturze danych A, wystpi trzy chybione trafienia dla struktury danych B, moemy załadowa wszystkie 3 składniki indeksowane przez j pod jednym chybionym trafieniem, gdy s obok siebie w pamici to jest efektywniejsze 39

przeładowanie pamici notatnikowej (cache thrashing) wystpuje, gdy wikszo fizycznej przestrzeni pamici notatnikowej jest niedostpna ze wzgldu na reguły odwzorowania efektywny rozmiar pamici notatnikowej jest równy rozmiarowi fizycznemu, jeeli dane z pamici głównej mog trafi do dowolnej lokalizacji w pamici notatnikowej 40

przeładowanie pamici notatnikowej nie jest tak jednak, nie mog trafi do dowolnej lokalizacji, podlegaj okrelonym ograniczeniom wynikajcym z reguł odwzorowania, co powoduje e efektywny rozmiar pamici notatnikowej si zmniejsza 41

znalezienie optymalnych odstpów dokonamy analizy wzorców dostpu do danych z niejednostkowymi odstpami taki wzorzec wystpuje, gdy chcemy dosta si do wierszy macierzy, podczas gdy w Fortranie jest konwencja dostpu kolumnami 42

znalezienie optymalnych odstpów nawet, gdy cała macierz nie mieci si w pamici notatnikowej, to jest moliwe umieszczenie odpowiednio duej liczby wierszy poprzez odpowiedni wybór odstpów w ten sposób osiga si blisko danych 43

znalezienie optymalnych odstpów odstpy mona dopasowa przez spowodowanie, aby wiodcy wymiar macierzy był wikszy od jej wymiaru logicznego osiga si to poprzez uzupełnienie macierzy kilkoma wierszami o nieistotnych wartociach numerycznych 44

znalezienie optymalnych odstpów najprostszym sposobem znalezienia optymalnych odstpów jest symulacja znajc reguł odwzorowania, moemy przewidzie lokalizacj w pamici notatnikowej - który wiersz pamici notatnikowej moe by dopasowany ledzc zajte ju wiersze pamici, moemy oceni, czy pami notatnikowa jest pełna 45

podział na bloki kwadratowe jest to strategia, uzyskania przestrzennej bliskoci danych w ptlach, tam gdzie nie ma moliwoci uzyskania małych odstpów dla wszystkich tablic podział oparty na obrazie statycznym podwojenie liczby ptli przykład: transpozycja macierzy, wpierw bez podziału, potem z podziałem 46

podział na bloki kwadratowe [Goedecker2001] subroutine rot(n,a,b) implicit real*8 (a-h,o-z) dimension a(n,n),b(n,n) do 100,i=1,n do 100,j=1,n b(j,i)=a(i,j) 100 continue return end 47

podział na bloki kwadratowe subroutine rotb(n,a,b,lot) implicit real*8 (a-h,o-z) dimension a(n,n),b(n,n) c loop over blocks do 100,ii=1,n,lot do 100,jj=1,n,lot c loop over elements in each block do 100,i=ii,min(n,ii+(lot-1)) do 100,j=jj,min(n,jj+(lot-1)) b(j,i)=a(i,j) 100 continue return end 48

podział na bloki liniowe podział zorientowany na wiersze albo kolumny opiera si na zrozumieniu dynamiki przepływu danych przez pami notatnikow stosuje si bloki o nieregularnej wielkoci potrzeba mniej ptli, ptle wewntrzne s dłusze 49

podział na bloki liniowe [Goedecker2001] subroutine rots(n,a,b,lot) implicit real*8 (a-h,o-z) dimension a(n,n),b(n,n) do 100,jj=1,n,lot do 100,i=1,n do 100,j=jj,min(n,jj+(lot-1)) b(j,i)=a(i,j) 100 continue return end 50

pobieranie danych z wyprzedzeniem pobieranie danych z wyprzedzeniem (prefetching) to jest pobieranie danych znacznie wczeniej ni s potrzebne procesor ma czsto dane dostarczane zbyt póno z pamici s tego dwie przyczyny: zbyt mała szeroko pasma pamici oraz opónienie pamici 51

pobieranie danych z wyprzedzeniem zbyt mała szeroko pasma pamici: jeeli program zakłada jedno ładowanie na cykl, a szeroko pasma pamici głównej zakłada jeden transfer na dwa cykle, to program jest spowalniany dwukrotnie 52

pobieranie danych z wyprzedzeniem opónienie pamici: jeeli instrukcje ładowania s zaplanowane krótko przed tym jak element danych jest potrzebny, to moliwe chybione trafienia do pamici notatnikowej spowoduj oczekiwanie procesora na dane 53

pobieranie danych z wyprzedzeniem aby tego unikn, pobiera si dane wczeniej jeeli czas midzy pobraniem danych a ich wykorzystaniem połczy si z innymi obliczeniami, procesor nie bdzie bezczynny i uzyskamy du wydajno 54

wyrównanie danych poprawne wyrównanie danych oznacza, e np. liczby zmiennoprzecinkowe podwójnej precyzji rozpoczynaj si w lokalizacji pamici bdcej wielokrotnoci 8 bajtów w przypadku wspólnych bloków, jeeli poprzedza je liczba całkowita zajmujca 4 bajty, pozostałe liczby 8 bajtowe mog by le wyrównane 55

wnioski w prezentacji skupiono si na optymalizacji dostpu do pamici pozostałe kwestie dotyczce operacji na pamici, alokacji rejestrów i ograniczenia wykorzystywanej pamici, s przedmiotem kolejnych spotka 56