Optymalizacja skalarna. Piotr Bała. bala@mat.uni.torun.pl. Wykład wygłoszony w ICM w czercu 2000



Podobne dokumenty
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

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

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

Macierzowe algorytmy równoległe

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

Algorytmy numeryczne 1

Zrównoleglenie i przetwarzanie potokowe

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Obliczenia Wysokiej Wydajności

Analiza efektywności przetwarzania współbieżnego

Architektura potokowa RISC

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

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

Podstawy Informatyki Systemy sterowane przepływem argumentów

Numeryczna algebra liniowa. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

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

Numeryczna algebra liniowa

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

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

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

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

Energooszczędne programowanie

Architektura komputerów

Budowa Mikrokomputera

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

Architektura komputerów

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

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

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

SZYBKI ALGORYTM Z MACIERZĄ SHURA DLA MACIERZY TRÓJDIAGONALNYCH

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

Wykład z Technologii Informacyjnych. Piotr Mika

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

Architektura systemów komputerowych. Przetwarzanie potokowe I

Architektura mikroprocesorów z rdzeniem ColdFire

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Zegar - układ wysyłający regularne impulsy o stałej szerokości (J) i częstotliwości (f)

Informatyka - studium realizacji dźwięku -

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

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

Budowa komputera Komputer computer computare

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

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

Programowanie aplikacji równoległych i rozproszonych

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

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

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

Systemy Operacyjne. wykład 1. Adam Kolany. Październik, Instytut Techniczny Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu

Architektura systemów komputerowych. Arytmetyka maszyn cyfrowych

Architektura mikroprocesorów TEO 2009/2010

Metody optymalizacji soft-procesorów NIOS

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Algorytmy dla maszyny PRAM

Adam Korzeniewski p Katedra Systemów Multimedialnych

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

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

Techniki optymalizacyjne w kompilatorach. Piotr Błaszyński

Programowanie procesorów graficznych GPGPU

Architektura komputerów

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

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

Wprowadzenie do metod numerycznych Wykład 3 Metody algebry liniowej I Wektory i macierze

System obliczeniowy laboratorium oraz. mnożenia macierzy

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

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

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

Programowanie dynamiczne (optymalizacja dynamiczna).

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

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

Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych

Podstawy Informatyki. Metalurgia, I rok. Rekurencja. skomplikowane zadanie. Rekurencja

Podstawy Informatyki. Metalurgia, I rok. Wykład 5 Rekurencja

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Architektura komputerów

Sławomir Kulesza. Projektowanie automatów synchronicznych

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

Wykorzystanie układów FPGA w implementacji systemów bezpieczeństwa sieciowego typu Firewall

Architektura systemów informatycznych

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Wykład 5. Metoda eliminacji Gaussa

Task Parallel Library

Wyk lad 5 W lasności wyznaczników. Macierz odwrotna

EGZAMIN MATURALNY Z INFORMATYKI 13 MAJA 2019 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 90 minut

Wykład 7 Macierze i wyznaczniki

Budowa i zasada działania komputera. dr Artur Bartoszewski

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Komputerowe wspomaganie eksperymentu 5

Odwrócimy macierz o wymiarach 4x4, znajdującą się po lewej stronie kreski:

Operator rozciągania. Obliczyć obraz q i jego histogram dla p 1 =4, p 2 =8; Operator redukcji poziomów szarości

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Architektura komputerów

Arytmetyka stało i zmiennoprzecinkowa

Podstawy programowania w języku C

Transkrypt:

Optymalizacja skalarna - czerwiec 2000 1 Optymalizacja skalarna Piotr Bała bala@mat.uni.torun.pl Wykład wygłoszony w ICM w czercu 2000

Optymalizacja skalarna - czerwiec 2000 2 Optymalizacja skalarna Czas obliczeń N instr zależy od algorytmu, kompilatora N cycles instr zależy od procesora, zrównoleglenia kodu obsługi błędów obsługi zaokrągleń T = N instr Ncycles instr Nsec cycle Procesory superskalarne wykonują do 6 instrukcji/cykl zegara

Optymalizacja skalarna - czerwiec 2000 3 Prawo Moore a Obserwujemy wykładniczy wzrost szybkości komputerów. More a) (Prawo CPU 58% / rok MEM 7% / rok Problemem zaczyna być szybkość dostępu do pamięci. Należy korzystać z pamięci podręcznej cache.

Optymalizacja skalarna - czerwiec 2000 4 Architektura procesora Zaczerpnięto z: Arkadiusz Wójtowicz Prace studentów Politecniki Wrocławskiej http://mm-edu.ict.pwr.wroc.pl/dydaktyka/sm/mips.htm

Optymalizacja skalarna - czerwiec 2000 5 Skalowalność problemu Szybkość wykonania spada gdy dane przestają mieścić się w pamięci podręcznej.

Optymalizacja skalarna - czerwiec 2000 6 Optymalizacja 1. Profile 2. Tune 3. Paralelize Możliwości kompilatora/procesora microparallelism cache software pipelininng Optymalizacja kodu na poziomie kompilatora jest najczęściej bardzo efektywna. Należy jednak kod źródłowy przygotować tak by kompilator w pełni wykorzystał możliwości procesora.

Optymalizacja skalarna - czerwiec 2000 7 Szybkość operacji (SUN UltraSpark) Operacja Szybkość Czas martwy Troughput Latency Dodawanie (SP) 1 3 Dodawanie (DP) 1 3 Mnożenie (SP) 1 3 Mnożenie (DP) 1 3 Dzielenie (SP) 12 12 Dzielenie (DP) 22 22 Pierwiastkowanie (SP) 12 12 Pierwiastkowanie (DP) 22 22 SP - pojedyncza precyzja DP - podwójna precyzja

Optymalizacja skalarna - czerwiec 2000 8 Zamiana dzielenia na mnożenie przez odwrotność. DO 10 I=1,N A(I) = A(I)/ANOR Lepiej: ANOR1 = 1./ANOR DO 10 I=1,N A(I) = A(I)*ANOR1

Optymalizacja skalarna - czerwiec 2000 9 Operacja redukcji DO 10 I=1,NMAX ATEMP = ATEMP - B(I)*X1 - D(I)*X2 Zastępujemy przez dwie instrukcje: DO 10 I=1,NMAX ATEMP = ATEMP - B(I)*X1 BTEMP = BTEMP - D(I)*X2 ATEMP = ATEMP + BTEMP lub stosujemy nawiasy: DO 10 I=1,NMAX ATEMP = ATEMP - ( B(I)*X1 - D(I)*X2 ) Optymalizujemy dostęp do cache a.

Optymalizacja skalarna - czerwiec 2000 10 Dostęp do pamięci Tradycyjnie: DO 10 I=2,IDIM-1 DO 10 J=2,IDIM-1 A(I,J) = A(I-1,J+1) + DX Lepiej - wewnętrzna pętla po I DO 10 J=2,IDIM-1 DO 10 I=2,IDIM-1 A(I,J) = A(I-1,J+1) + DX Pozwala na przyspieszenie około 5x W przypadku C macierze uporządkowane są odwrotnie w pamięci (ostatni indeks zmienia się najszybciej).

Optymalizacja skalarna - czerwiec 2000 11 Grupowanie wyrażeń Pomóż kompilatorowi znaleźć identyczne wyrażenia. Lepiej: DO 10 I=1,MXLOOP A(I) = (A(I)-B(I))*X - D(I)*F(I)*X*X + 1 D(I)*F(I)*X*X + A(I)-B(I) DO 10 I=1,MXLOOP A(I) = (A(I)-B(I))*X - D(I)*F(I)*X*X + 1 D(I)*F(I)*X*X + (A(I)-B(I))

Optymalizacja skalarna - czerwiec 2000 12 Loop reversal DO 10 I=1,M DO 20 J=1,N DO 30 K=1,P C(I,J) = C(I,J) + A(I,K) * B(K,J) 30 CONTINUE 20 CONTINUE skok C = 0 skok B = 1 skok A = M DO 10 J=1,N DO 20 K=1,P T = B(K,J) DO 30 I=1,M C(I,J) = C(I,J) + A(I,K) * T 30 CONTINUE 20 CONTINUE skok C = 1 skok B = 0 skok A = 1

Optymalizacja skalarna - czerwiec 2000 13 Loop unrolling DO 10 J=1,N DO 20 K=1,P DO 30 I=1,M C(I,J) = C(I,J) + A(I,K) * B(K,J) 30 CONTINUE 20 CONTINUE loop overhead = 4 ops (44%) loop body = 5 ops

Optymalizacja skalarna - czerwiec 2000 14 Loop unrolling DO 10 J=1,N DO 20 K=1,P T = B(K,J) DO 30 I=1,(M-4)+1,4 C(I+0,J) = C(I+0,J) + A(I+0,K) * T C(I+1,J) = C(I+1,J) + A(I+1,K) * T C(I+2,J) = C(I+2,J) + A(I+2,K) * T C(I+3,J) = C(I+3,J) + A(I+3,K) * T 30 CONTINUE DO 35 I=I,M C(I,J) = C(I,J) + A(I,K) * T 35 CONTINUE 20 CONTINUE loop overhead = 4 ops (16%) loop body = 20 ops

Optymalizacja skalarna - czerwiec 2000 15 Array padding PARAMETER (IDIM=256,JDIM=257) DIMENSION A(IDIM,IDIM)... DO 10 I=1,IDIM DO 20 J=1,IDIM DO 30 K=1,IDIM A(I,J) = A(I,J) + A(I,K) * A(K,J) 30 CONTINUE 20 CONTINUE PARAMETER (IDIM=256,JDIM=257) DIMENSION A(IDIM,JDIM)... DO 10 I=1,IDIM DO 20 J=1,IDIM DO 30 K=1,IDIM A(I,J) = A(I,J) + A(I,K) * A(K,J) 30 CONTINUE 20 CONTINUE Pozwala na asynchroniczny dostęp do pamięci i lepsze wykorzystanie cache a.

Optymalizacja skalarna - czerwiec 2000 16 Blokowe mnożenie macierzy Mnożenie macierzy (IDIM,IDIM) wykonujemy blokami JBLK x IBLK a nie dla całej macierzy od razu: DO 20 I=1,IDIM DO 30 J=1,IDIM DO 40 K=1,IDIM A(I,J) = A(I,J) + B(I,K)*C(K,J) 40 CONTINUE 30 CONTINUE 20 CONTINUE Lepiej: DO 20 II=1,IDIM,IBLK DO 30 JJ=1,IDIM,JBLK DO 40 KK=1,IDIM,KBLK DO 50 J=JJ,JJ+JBLK-1 DO 60 I=II,II+IBLK-1 DO 70 K=KK,KK+KBLK-1 A(I,J) = A(I,J) + B(I,K)*C(K,J) 70 CONTINUE 60 CONTINUE 50 CONTINUE 40 CONTINUE 30 CONTINUE 20 CONTINUE