Pomiary efektywności dla komputerów z procesorami. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak zmiany kwiecień 2018

Podobne dokumenty
System obliczeniowy laboratorium oraz. mnożenia macierzy

Pomiary efektywności dla AMD. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak Wersja wrzesień 2016

Pomiary efektywności dla komputerów z procesorami. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak listopad 2015, zmiany listopad 2016

Pomiary efektywności dla komputerów z procesorami. Opracował: Rafał Walkowiak marzec 2019

Pomiary efektywności dla AMD Family 10h. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak Wersja listopad 2015

Analizator wydajności AMD CodeAnalyst

Pomiary efektywności dla AMD. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak Listopad 2012

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

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

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

Architektura komputerów

Ograniczenia efektywności systemu pamięci

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

Ograniczenia efektywności systemu pamięci

Systemy wieloprocesorowe. Sprzęt i oprogramowanie wspomagające perspektywa - Windows i Linux Wykład Przetwarzanie równoległe Listopad 2010

Przykłady praktycznych rozwiązań architektur systemów obliczeniowych AMD, Intel, NUMA, SMP

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

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

System pamięci. Pamięć wirtualna

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

System pamięci. Pamięć wirtualna

System pamięci. Pamięć wirtualna

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

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

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

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

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

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

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

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

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

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Procesory. Schemat budowy procesora

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

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

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

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

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

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

ARCHITEKTURA PROCESORA,

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

Zarządzanie pamięcią w systemie operacyjnym

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Pamięci półprzewodnikowe w oparciu o książkę : Nowoczesne pamięci. Ptc 2013/

Systemy operacyjne III

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

Architektura komputerów

, " _/'--- " ~ n\l f.4e ' v. ,,v P-J.. ~ v v lu J. ... j -:;.",II. ,""", ",,> I->~" re. dr. f It41I r> ~ '<Q., M-c 'le...,,e. b,n '" u /.

Pamięci półprzewodnikowe

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

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

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

Budowa i zasada działania komputera. dr Artur Bartoszewski

Budowa Mikrokomputera

Architektura komputerów

Programowanie Niskopoziomowe

System pamięci. Pamięć podręczna

Kurs Zaawansowany S7. Spis treści. Dzień 1

Architektura mikroprocesorów z rdzeniem ColdFire

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

Zarządzanie pamięcią operacyjną

Architektura potokowa RISC

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

dr inż. Jarosław Forenc

Stronicowanie w systemie pamięci wirtualnej

Architektura komputerów egzamin końcowy

Budowa komputera Komputer computer computare

Architektura komputerów

Pamięci półprzewodnikowe na podstawie książki: Nowoczesne pamięci

Wykład 7. Zarządzanie pamięcią

Architektura mikroprocesorów TEO 2009/2010

Analiza efektywności przetwarzania współbieżnego

Projektowanie. Projektowanie mikroprocesorów

Programowanie Rozproszone i Równoległe

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

2. Architektura mikrokontrolerów PIC16F8x... 13

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

Zarządzanie zasobami pamięci

Logiczny model komputera i działanie procesora. Część 1.

Mikroprocesory rodziny INTEL 80x86

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

Organizacja typowego mikroprocesora

Algorytmy dla maszyny PRAM

Numeryczna algebra liniowa

Technologie informacyjne (2) Zdzisław Szyjewski

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

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Zrównoleglenie i przetwarzanie potokowe

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Technologia informacyjna. Urządzenia techniki komputerowej

Spis treści. Dzień 1. I Konfiguracja sterownika (wersja 1410) II Edycja programu (wersja 1406) III Środowisko TIA Portal (wersja 1410)

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

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

Transkrypt:

Pomiary efektywności dla komputerów z procesorami AMD 10 h Na podstawie dokumentacji AMD opracował: Rafał Walkowiak zmiany kwiecień 2018

Liczniki zdarzeń a program profilujący Procesory AMD 10h wyposażone są w 4 liczniki wydajności przeznaczone do zliczania zdarzeń (w badanym okresie) spowodowanych przez aplikacje użytkownika i system operacyjny: liczba cykli CPU, liczba zatwierdzonych instrukcji, braków trafień do pp i podobnych zdarzeń. Program oceny efektywności konfiguruje liczniki - określa jakie zdarzenie oraz przy jakich warunkach dodatkowych ma być zliczane i badane. Pomiary efektywności dla AMD Family 10h 2

Metody pomiaru wydajności Podejście klamrowe (ang. caliper mode) odczyt wartości licznika zdarzeń przed wejściem i po zakończeniu przetwarzania w krytycznym efektywnościowo fragmencie kodu. W wyniku odjęcia wartość zmierzonej po od wartości zmierzonej przed uzyskujemy liczbę zdarzeń za których wystąpienie odpowiedzialny jest testowany kod. W podejściu tym: nie ma możliwości pomiaru dystrybucji liczby wystąpień mierzonych zdarzeń w badanym obszarze, nie ma możliwości powiązania wystąpienia zdarzenia z powodującą je instrukcją NIE WIADOMO JAKA PRZYCZYNA ZDARZENIA Podejście próbkowania wg licznika wydajności licznik wydajności ładowany jest wartością limitu lub progu. Zliczenie (określonej w ten sposób) liczby zdarzeń powoduje wywołanie procedury przerwania dla obsługi zdarzenia, która zapisuje: typ zdarzenia, ID procesu, ID wątku i IP w efekcie: ZNANY LICZNIK INSTRUKCJI W OKOLICY instrukcji BĘDĄCEJ PRZYCZYNĄ ZDARZENIA. Pomiary efektywności dla AMD Family 10h 3

Podejście próbkowania wg licznika wydajności Na podstawie zebranych próbek narzędzia budują histogram występowania poszczególnych zdarzeń w kodzie. Ze względu na wagę statystyczną uzyskanych pomiarów oraz działania uboczne procedury zbierania próbek ważne jest właściwe określenie progu zliczania. Wielkość ta jest uwarunkowana z jednej strony minimalizacją narzutu czasu zbierania próbek i ingerencji w zasoby systemu (pp, TLB, historię rozgałęzień kodu ), a z drugiej strony wymaganą rozdzielczością pomiaru i częstością występowania badanego zdarzenia. Przykładowe wartości progów to 50 tyś/500tyś w zależności od częstości występowania zdarzeń. Pomiar jest obarczony poślizgiem różnica między rozkazem powodującym raportowane zdarzenie, a rozkazem, którego adres jest zapisywany pierwszym wykonywanym po powrocie z procedury obsługi przerwania. Ze względu na dynamiczne wykonywanie rozkazów informacja o lokalizacji przyczyny wystąpienia zdarzenia jest tylko przybliżona. Informacja o liczbie zdarzeń powiązanych z kodem jest zatem bardziej adekwatna dla zbioru instrukci, niż pojedynczej instrukcji. Pomiary efektywności dla AMD Family 10h 4

Zdarzenia i wskaźniki Liczby zdarzeń raportowane przez program nie uwzględniają progów zliczania. Wskaźniki i stosunki (ilorazy zdarzeń powiązanych) powinny uwzględniać progi (uwaga możliwe błędy w analizie). Waga zdarzenia dla prędkości przetwarzania może zostać oceniona na podstawie porównania liczby jego wystąpień z liczbą zrealizowanych w określonym czasie instrukcji wyrażona zostanie stosunkiem tych wartości - wskaźnik (ang. rate) Wskaźniki pozwalają na oceną skali zjawiska: tysiąc braków trafień na 1mln instrukcji nie jest niepokojące (0,1 %), natomiast tysiąc braków trafień na 10 tysięcy instrukcji stanowi duży problem efektywnościowy (10%). W tej prezentacji: dla miar jakości podano koncepcyjne wzory progi zliczania nie są uwzględniane; w niektórych przypadkach dla uzyskania właściwej wartości parametru próg jest podany we wzorze. Pomiary efektywności dla AMD Family 10h 5

Czas przetwarzania Pomiar poza programem oceny efktywności. Czas niezbędny do wykonania określonych obliczeń (od momentu rozpoczęcia do zakończenia) bez uwzględnienia równoległości przetwarzania. Nie jest to czas pracy nad zadaniem poszczególnych procesorów. Czas globalny, w którym przetwarzanie może się wykonywać: rozpoczęło się, ale jeszcze się nie skończyło. Czas charakterystyczny dla: - Kodu źródłowego i jego parametrów, - Sposobu kompilacji, - Parametrów komputera, - Liczby wykorzystanych procesorów i uruchomionych wątków, - Wielkości instancji problemu. 6

Prędkość obliczeń Miara prędkości z jaką wykonywane jest zadanie obliczeniowe (dla wybranego algorytmu, implementacji algorytmu, sposobu kompilacji kodu, instancji problemu i systemu obliczeniowego) Iloraz liczby operacji algorytmu sekwencyjnego i czasu przetwarzania. Parametr uwzględnia liczbę podstawowych operacji niezbędnych do wykonania obliczeń. Operacje mogą być realizowane sekwencyjnie lub jednocześnie. Liczba operacji nie uwzględnia operacji pomocniczych (zmienne sterujące), operacji powielonych (np. wykonywanych wielokrotnie na różnych procesorach), transferów danych wynikających z zasad efektywnego przetwarzania w określonym typie systemu obliczeniowego. Przykłady liczby operacji algorytmu sekwencyjnego: Liczba operacji dla sumowania N liczb to N-1 Liczba operacji zadania mnożenia 2 macierzy NxN to 2* N*N*N 7

Prędkość pracy procesora Miary efektywności przetwarzania Instrukcje na cykl IPC średnia liczba instrukcji kodu asemblera przypadająca na cykl (okres zegara) pracy procesora Cykle na instrukcję CPI średnia liczba cykli procesora niezbędnych do wykonania pojedynczej instrukcji kodu asemblera Jeśli podana dla jednego procesora - IPC jest miarą równoległości dla poziomu przetwarzania instrukcji w jednym strumieniu instrukcji Wyznaczenie wymaga określenia liczby zdarzeń: CPU Clocks Not Halted liczba cykli procesora/ów wykonującego kod użytkownika Retired Instructions liczba instrukcji w przebiegu kodu użytkownika IPC = Ret_instructions/ CPU_clocks CPI = CPU_clocks/ Ret_instructions Pomiary efektywności dla AMD Family 10h 8

Prędkość pracy procesora IPC Niska wartość IPC wskazuje na obecność czynników zmniejszających efektywność: słaba przestrzenna lub czasowa lokalność dostępów, błędy predykcji dla rozgałęzień kodu, wyjątki operacji zmiennoprzecinkowych Parametry nie uwzględniają takich przyczyn niskiej prędkości przetwarzania jak: brak zrównoważenia pracą procesorów oraz synchronizacja wątków. Parametr nie uwzględnia typu instrukcji asemblera występujących w kodzie, lecz ich liczbę. Informacje o dystrybucji w regionach kodu wielkości CPU_cloks i Ret_instructions pozwalają na określenie kodu, który jest często wykonywany lub wymaga dużej ilości czasu. 9

Efektywność dostępu do pamięci podręcznej Miary efektywności przetwarzania Liczba dostępów do pamięci operacyjnej Wskaźnik braku trafień do pamięci podręcznej L3 Mierzone zdarzenia: DRAM_accesses, L3 miss, Data access, Retired Instructions Wyznaczane wskaźniki (w zależności od potrzeb analizy): Ilość danych przesyłanych z/do RAM = DRAM_access * próg_zliczania*64 [bajty] Ilość danych pobieranych z pamięci operacyjnej = L3 miss * próg_zliczania*64 [bajty] Powyższe miary mają znaczenie w powiązaniu z wielkością instancji przetwarzanej podczas badanego uruchomienia! Wskaźnik braku trafień do pp L3 = L3 miss/data Access Wskaźnik braku trafień do pp L3 = L3 miss/ Retired Instructions Pomiary efektywności dla AMD Family 10h 10

Dostęp do pamięci translacja adresu danych Mierzone zdarzenia: DTLB_L1M_L2M, DTLB_L1M_L2H, DC_accesses, Ret_instructions Parametry podstawowe: wskaźnik braku trafień do L2 DTLB L2 DTLB miss rate = DTLB_L1M_L2M /DC access stosunek braku trafień do L2 DTLB (uruchomienie procedury uzupełniania adresu w DTLB) L2 DTLB miss ratio = DTLB_L1M_L2M / (DTLB_L1M_L2H + DTLB_L1M_L2M) W przypadku strony wirtualnej o rozmiarze 4KB jej przeglądanie sekwencyjne powoduje wskaźnik 1/(L2 DTLB miss rate) na poziomie 1 tyś zatem przykładowo wartość wskaźnika 100 świadczy o problemie efektywnościowym w lokalności przestrzennej dostępu do danych. Miarami analogicznymi dla translacji adresów kodu nie zajmujemy się ze względu na charakter badanego kodu. Pomiary efektywności dla AMD Family 10h 11

Dostęp do pamięci translacja adresu danych Parametry pomocnicze wskaźnik żądań dostępu do L1 DTLB L1 DTLB request rate = DC_accesses / Ret_instructions Każdy dostęp (odczyt, zapis) do pp to dostęp do TLB stosunek braku trafień do L1 DTLB L1 DTLB miss ratio = (DTLB_L1M_L2H + DTLB_L1M_L2M) / DC_accesses Uwzględnia trafienia lub brak trafienia do DTLB L2 wskaźnik żądań dostępu do L2 DTLB L2 DTLB request rate = L1 DTLB miss rate Brak trafienia do DTLB L1 powoduje odwołanie do DTLB L2 Pomiary efektywności dla AMD Family 10h 12

Koszty synchronizacji pracy wątków i braku zrównoważenia procesorów Mierzone parametry: czas przetwarzania, CPU Clocks Not Halted Koszt synchronizcji = 1 [CPU Clocks Not Halted *Tclk/ (liczba procesorów* czas przetwarzania] procesory obliczenia oczekiwanie Czas Czas przetwarzania 13

Inne miary efektywności przetwarzania Miary dotyczące przekazywania sterowania: rozgałęzień, wywołań procedur: liczba, predykcje Przypadki szczególne: dostępy niewyrównane do granicy linii pp, operacje i wyjątki FPU Pomiary efektywności dla AMD Family 10h 14

Miary efektywności przetwarzania Efektywność dostępu do pamięci pamięć podręczna L2/L3 wskaźnik żądań dostępu do pp L2 L2 request rate = (L2_requests + L2_fill_write) / Ret_instructions L2_fill_write dostęp wtórny zapis danych w L2 powodowany usunięciem ich z pp L1 Wskaźnik/stosunek braku trafień do pp L2 L2 miss rate = L2_misses / Ret_instructions L2 miss ratio = L2_misses / (L2_requests + L2_fill_write) Analogicznie L3_requests, L3_misses Pamięci (L1i L2) pracują w trybie wyłącznym lub prawie wyłącznym (L3) Pamięci są zunifikowane pamięci danych i instrukcji Pomiary efektywności dla AMD Family 10h 15

Miary efektywności przetwarzania Efektywność dostępu do pamięci pamięć podręczna danych L1 liczba braków trafień do pp danych DC_misses = DC_refills_L2 + DC_refills_sys Żądania obsłużone przez L2 i przez pamięć systemową wskaźnik żądań dostępu: Data cache request rate = DC_accesses / Ret_instructions wskaźnik braku trafień Data cache miss rate = DC_Misses / Ret_instructions stosunek braku trafień: Data cache miss ratio = DC_Misses / DC_accessess ważna miara: DC_refills_sys / DC_misses ze względu na >90 cykli dostęp z pamięci operacyjnej i 12 cykli z L2 cache. Pomiary efektywności dla AMD Family 10h 16

Miary efektywności przetwarzania Efektywność dostępu do pamięci pamięć podręczna danych Kategorie braku trafień do pp Braki trafień pierwszego dostępu (compulsory misses) pierwsze odwołanie do jednostki danych, poprawa wyprzedzające pobranie danych. Braki trafień wynikające z pojemności pp (capacity misses ) poprawa - zmniejszenie wykorzystywanej przestrzeni danych (zagęszczenie danych). Braki trafień wynikające z konfliktów (conflict misses odwołanie do linii danych po jej unieważnieniu lub usunięciu), poprawa - przesunięcie pozycji danych do pozycji nie powodującej konfliktu dostępu usunięcie false sharing lub niekorzystnego odstępu równego wielkości sekcji wielosekcyjnej pp. Pomiary efektywności dla AMD Family 10h 17

Analiza i optymalizacja kodu za pomocą analizatora wydajności CODE XL

Analizator wydajności AMD CodeXL Dostępny bezpłatnie dla Windows i Linux Pozwala na 4 tryby pracy oceny wydajności: Bazujące na upływie czasu próbkowanie aplikacji ze stałą częstością, zapisywanie licznika rozkazów i określanie statystycznie najbardziej czasochłonnych części kodu w postaci histogramu (time-based profiling) Bazujące na zdarzeniach określenie zdarzeń, których (orientacyjne) miejsce występowania ma być mierzone, określenie progu zliczania dla każdego badanego zdarzenia (tylko procesory AMD) (event-based profiling) CODE XL 19

CodeXL cd Próbkowanie pobrań kodu i raportowanie powiązanych zdarzeń (tylko procesory AMD) (instruction-base fetch sampling) Próbkowanie (wybór i śledzenie) operacji procesora pod względem wywoływanych zdarzeń (tylko procesory AMD) (instruction-base operation sampling) CODE XL 20

Działanie analizatora wydajności Program oceny wydajności pracuje w ramach projektów składających się z sesji. Dla każdej sesji należy określić: badaną aplikację i katalog roboczy rodzaj realizowanej oceny wydajności, czas rozpoczęcia i zakończenia zbierania danych, częstotliwość próbkowania, zdarzenia wybrane do śledzenia lub inne parametry w zależności od trybu pracy, maskę powinowactwa wątków. Przygotowana sesja oceny wydajności może zostać uruchomiona. Efektem uruchomionia jest dodanie nowej sesji w oknie zarządzania projektem. Wybór tej sesji powoduje wyświetlenie wyników sesji profilowania. CODE XL 21

Działanie analizatora wydajności Wyniki prezentowane są w grupach informacji charakterystycznych do realizowanego typu sesji. M Można obserwować zbierane wyniki w wartościach bezwzględnych lub w udziale procentowym dla poszczególnych modułów oprogramowania, procesów i rdzeni. Dostępne wyniki oceny można filtrować i prezentować wyrywkowo sposób prezentacji określa się w oknie dialogowym zarządcy widoku. Dane zebrane dla poszczegnych modułów kodu można analizować z rozbiciem na informacje dla linii kodu źródłowego i kodu asemblera. CODE XL 22

Ocena bazująca na upływie czasu Program oceny wydajności zbiera więcej próbek w obszarach kodu, w których program spędza więcej czasu gdyż pobranie próbki w tym obszarze jest bardziej prawdopodobne. Wynikowy histogram określa rozkład próbek, a wysokie wartości wskazują na czasochłonne fragmenty kodu. Standardowy okres próbkowania przetwarzania w CodeXL wynosi 1 ms i może zostać zmieniony przy użyciu opcji programu: Profile/profile settings/cpu profile/custom. CODE XL 23

Tryby pracy programu Code XL ocena efektywności przetwarzania 24

Ocena efektywności na upływie czasu konfiguracja CODE XL 25

Profile/profile settings/cpu profile/custom określanie eksperymentu, poznawanie parametrów predefiniowanego eksperymentu CODE XL 26

Ocena efektywności oparta na upływie czasu wyniki pomiaru Prezentacja liczby próbek (miara upływu czasu) zebranych w ramach poszczególnych rdzeni dla przetwarzania modułów kodu. 27

Ocena bazująca na zdarzeniach Możliwy jest wybór jednej z konfiguracji standardowych projektu oceny lub określenie własnego zestawu badanych zdarzeń (custom profile). Predefiniowane konfiguracje dotyczą: Assess performance - Wydajność dostępu do kodu i realizacji rozgałęzień, Investigate data access analiza dostępu do pp danych i DTLB, Investigate L2 cache access analiza dostepu do pp L2, Investigate instruction access analiza dostępu do pp instrukcji i ITLB, Investigate branching analiza realizacji kodu w rozgałęzieniach wraz z predykcją Predefiniowana konfiguracja zawiera wybór zliczanych zdarzeń wraz z określeniem wielkości krotności wystąpienia zdarzeń, która powoduje próbkowanie przetwarzania. Niektóre zdarzenia umożliwiają określenie warunków dodatkowych związanych z ich kwalifikacją do zliczenia wyboru warunków dodatkowych można dokonać również w oknie edycji konfiguracji zdarzeń. Możliwa jest prezentacja wyników oceny na poziomie modułów kodu, linii kodu źródłowego i asemblera. Możliwe jest tematyczne filtrowanie zebranych wyników i wyświetlanie parametrów skonsolidowanych. CODE XL 28

Ocena efektywności bazująca na zliczaniu zdarzeń event based profiling CODE XL 29

Ocena efektywności bazująca na zliczaniu zdarzeń event based profiling 30

Ocena efektywności bazująca na zliczaniu zdarzeń wyniki CODE XL 31

Próbkowanie pobrań kodu (fetch sampling - instruction-base samp.) W tym trybie pracy parametrem sesji oceny wydajności jest próg próbkowania. Osiągnięcie określonego progu zliczania pobrań instrukcji powoduje monitorowanie aktualnej operacji pobrania. Zakończenie lub przerwanie pobrania powoduje zapisanie próbki na temat zrealizowanej operacji pobrania. Zapisywane a następnie przedstawiane jako wyniki sesji informacje dotyczą: identyfikatora procesu, adresu wirtualnego pobranej instrukcji procesu, trafienia do ITLB L1 i L2, trafienie do pp IC, opóźnienie pobrania. CODE XL 32

Próbkowanie operacji procesora (operation based - instruction-base samp.) W tym trybie pracy parametrem sesji oceny wydajności jest próg próbkowania. Osiągnięcie określonego progu zliczania cykli procesora powoduje monitorowanie aktualnej makrooperacji do momentu jej zrealizowania lub usunięcia. Dla zakończonych makrooperacji zapisywane, a następnie raportowane użytkownikowi informacje dotyczą: identyfikatora procesu, adresu wirtualnego instrukcji do której należy makrooperacja, czas realizacji makrooperacji do zakończenia czas realizacji makrooperacji do zatwierdzenia właściwej predykcji / realizacji rozgałęzienia, typu operacji odczyt, zapis, trafienie do DTLB, trafienie do DC opóźnienie w przypadku braku trafienia do DC lokalnego lub zdalnego dostępu, faktycznego źródła danych w przypadku korzystania ze sterownika pamięci. CODE XL 33

Ocena efektywności bazująca na zliczaniu zdarzeń instruction based sampling - konfiguracja CODE XL 34

Przygotowano na podstawie: Basic Performance Measurements for AMD Athlon, Opteron, Phenom Processors (P.Drongowski AMD) An introduction to analysis and optimization with AMD CodeAnalyst CODE XL 35

SYSTEMY OBLICZENIOWE W LABORATORIUM Komputery znajdujące się w Laboratorium Systemów Równoległych sala 2.7.6 posiadają po jednym procesorze AMD typu PHENOM II X4 945 System składa się z 4 procesorów logicznych 4 rdzeni w ramach jednego procesora. System SMP. 36 PHENOM II X4 945

PROCESOR PHENOM Zgodność 32 bitowa X86 IA wspomaganie SSE, SSE2, SSE3, SSE4a, ABM, MM X, 3DNow! Technologia AMD64 rozszerzenia AMD64 technology instruction-set Adresowanie 48-bitowe 16 rejestrów 64-bit dla integer 16 rejestrów 128-bit SSE/SSE2/SSE3/SSE4a Architektura wielordzeniowa opcje: Triple-core, quad-core lub sixcore AMD Balanced Smart Cache oddzielne pp L1 i L2 dla każdego rdzenia współdzielona L3 Struktura procesora superskalarny 3 drożny (dekodowanie, wykonanie integer i FP, generacja adresu) 37 PHENOM II X4 945 Struktura pp 64-Kbyte 2 drożna dzielona asocjacyjna pp danych L1 dwa dostępy 64-bit na cykl, 3 cyklowe opóźnienie 64-Kbyte 2 drożna dzielona asocjacyjna pp kodu L1 32 bajtowe pobrania 512-Kbyte 16 drożna dzielona asocjacyjna pp L2 Zarządzanie pamięcią na zasadzie wyłączności przechowywania danych L1 i L2 6-Mbyte Maximum, maksymalnie 64 drożna dzielona asocjacyjna pp L3 współdzielona Technologia 45 nm Złącze HyperTransport Procesor zintegrowany ze sterownikiem pamięci

PROCESOR PHENOM PP KODU L1 Układ dynamicznego wykonania instrukcji posiada 64KB pp kodu L1 Dane w przypadku braku trafienia są pobierane do pp kodu L1 z L2, z L3 lub z pamięci systemowej w ilości 64 bajtów (pobranie) oraz kolejne 64 bajty (wstępne pobranie). Po pobraniu realizowane jest wstępne dekodowanie instrukcji dla określenia granic między instrukcjami (zmiennej długości). Usuwanie linii z pp jest realizowane zgodnie z algorytmem LRU (ang. least recently used). 38 PHENOM II X4 945

PROCESOR PHENOM PP DANYCH L1 cechy pp L1 i jej sposób użycia 64 kb dwu-sekcyjna, (1024 linie pp, w 2 blokach po 512 linii) Używana strategia zapisu to pp typu Writeback zapis poza pp realizowany w przypadku braku miejsca w pp lub na skutek zlecenia zapisu stanu w pamięci głównej (inne możliwe podejście to: zapis bezpośrednio do pamięci operacyjnej realizowany w pp typu write through Realizowana strategia obsługi braku trafienia przy zapisie to: Writeallocate zapis realizowany jest do pp po uprzednim pobraniu linii do pp L1 (inne możliwe podejście to nowrite-alllocation nie wymaga pobrania do pp danych zapisywanej linii) Algorytm LRU dla usuwania danych i protokół zapewnienia spójności danych powielonych MOESI. 39 PHENOM II X4 945

Przykład 1 Macierz 128x8 typu float Sekcje pamięci podręcznej Wiersz macierzy 8*64 Bajty 512 Bajtów 128 słów 4 bajowych. Pamięć 2 sekcyjna o rozmiarze 16*64 Bajty 1024 bajty. Dostęp po kolei w kolumnie: dostęp do 3 wiersza powoduje konieczność usunięcia linii z danymi wiersza pierwszego. Mimo, że pp mieści wszystkie wykorzystywane dane: Stosunek trafień przy cyklicznym dostępie do 4 różnych linii pp zawierających dane z tej samej kolumny = 0. Uwaga kwadrat oznacza linię pamieci podręcznej o rozmiarze 64 bajty. 40

Przykład 2 Macierz 256x8 typu float Sekcja pamięci podręcznej Przykład: wiersz macierzy 16*64 Bajty 1024 Bajty 256 słów 4 bajtowych Pamięć 1 sekcyjna o rozmiarze 16*64 Bajty 1024 bajty Mimo, że pp mieści wszystkie wykorzystywane dane: dostęp do 2 wiersza powoduje konieczność usunięcia linii z danymi wiersza pierwszego. Stosunek trafień przy wielokrotnym dostępie do 2 różnych linii pp z danymi z tej samej kolumny macierzy = 0 41

PROCESOR PHENOM PP L2 I L3 PP L2 - victim i write-back cache zapisuje dane usunięte z pp L1, dane w pp są w trybie wyłącznym w L1 lub w L2 PP L3 victim i copy-back cache dla pp L2, PP L3 zawiera zazwyczaj dane w trybie wyłącznym - gdy dane żądane są przez jeden z rdzeni i jest mało prawdopodobne, że będą potrzebne innym, możliwe jest również powielenie. 42 PHENOM II X4 945

Uwagi do wyników obliczeń Przyspieszenie to iloraz czasu obliczeń sekwencyjnych najlepszą z wykorzystywanych metod i czasu obliczeń równoległych badaną metodą. Skrócenie czasu obliczeń to iloraz czasu obliczeń sekwencyjnych i równoległych tą samą metodą. Obliczenia równoległe wykorzystują wszystkie procesory systemu, liczba wątków jest równa liczbie procesorów, zastosowano optymalizację kodu (Windows wersja Release, Linux opcja O3) Tworzenie wątków odbywa się przed pętlami. Miejsce podziału pracy określa położenie dyrektywy #pragma omp for. W przypadku kodu z niebezpieczeństwem wyścigu umieszczono dyrektywę #pragma omp atomic lub zastosowano zmienną lokalną, gdy wątki równocześnie wyznaczały jeden wynik tablicy wyjściowej. 43

wielkość 12 10 8 6 4 2 0 Skrócenie czasu obliczeń równoległych i przyspieszenie dla wersji kodu mnożenia macierzy 1000x1000 Intel Core i5 8MB 1000x1000 AMD PHENOM II X4 945 6MB 2 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy Wielkość 14 12 10 8 6 4 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy wielkość 2000x2000 Intel Core i5 8MB 4 3,5 3 2,5 2 1,5 1 0,5 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi wielkość 9 8 7 6 5 4 3 2 1 0 2000x2000 AMD PHENOM II X4 945 6MB fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy Kolejność pętli i miejsce podziału pracy 44

Prędkość obliczeń równoległych i sekwencyjnych dla mnożenia macierzy GFlops GFlops 30 25 20 15 10 5 0 1000x1000 Intel Core i5 8MB 4 2 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi 0 14 12 10 8 6 4 2 0 Kolejność pętli i miejsce podziału pracy 2000x2000 Intel Core i5 8MB 2 1 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy GFlops GFlops 20 18 16 14 12 10 8 6 8 7 6 5 4 3 1000x1000 AMD PHENOM II X4 945 6MB fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 2000x2000 AMD PHENOM II X4 945 6MB fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 45

30 Prędkość obliczeń równoległych dla mnożenia macierzy 1000x1000 Intel Core i5 8MB 25 20 GF Flops 15 10 prędkość obliczeń równoległych prędkość obliczeń sekwencyjnych 5 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 46

12 Przyspieszenie obliczeń równoległych dla mnożenia macierzy 1000x1000 Intel Core i5 8MB 10 8 wielkość 6 4 skrócenie czasu obliczeń przyspieszenie 2 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 47

14 Prędkość mnożenia macierzy 2000x2000 Intel Core i5 8MB 12 10 8 GFlops 6 prędkość obliczeń równoległych prędkość obliczeń sekwencyjnych 4 2 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 48

4 Przyspieszenie obliczeń równoległych dla mnożenia macierzy 2000x2000 Intel Core i5 8MB 3,5 3 2,5 lkość wiel 2 1,5 skrócenie czasu obliczeń przyspieszenie 1 0,5 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 49

20 Prędkość obliczeń równoległych dla mnożenia macierzy 1000x1000 AMD PHENOM II X4 945 6MB 18 16 Tmin=0,11 s Tmax=32 s 14 GFlops 12 10 8 prędkość obliczeń równoległych prędkość obliczeń sekwencyjnych 6 4 2 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 50

14 Przyspieszenie obliczeń dla mnożenia macierzy 1000x1000 AMD PHENOM II X4 945 6MB 12 10 8 Wielk kość 6 skrócenie czasu obliczeń przyspieszenie 4 2 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 51

8 Prędkość obliczeń równoległych dla mnożenia macierzy 2000x2000 AMD PHENOM II X4 945 6MB 7 6 5 GF Flops 4 3 Prędkość obliczeń równoległych prędkość obliczeń sekwencyjnych 2 1 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 52

9 Przyspieszenie dla mnożenia macierzy 2000x2000 AMD PHENOM II X4 945 6MB 8 7 6 ielkość wi 5 4 Skrócenie czasu obliczeń przyspieszenie 3 2 1 0 fijk ifjk ijfk fikj ifkj ikfj fjik jfik jifk fjki jfki jkfi fkij kfij kifj fkji kfji kjfi Kolejność pętli i miejsce podziału pracy 53

Prędkość obliczeń równoległych dla mnożenia macierzy 1000x1000 Intel Core i5 8MB fijk Czas obliczen: 0,115 sec predkosc 17,3877 Gflops ifjk Czas obliczen: 0,4192 sec predkosc 4,7711 Gflops ijfk Czas obliczen: 0,6663 sec predkosc 3,0015 Gflops fikj Czas obliczen: 0,0758 sec predkosc 26,396 Gflops ifkj Czas obliczen: 7,4889 sec predkosc 0,2671 Gflops ikfj Czas obliczen: 0,4254 sec predkosc 4,7015 Gflops fjik Czas obliczen: 0,4106 sec predkosc 4,8712 Gflops jfik Czas obliczen: 0,4172 sec predkosc 4,794 Gflops jifk Czas obliczen: 0,633 sec predkosc 3,1594 Gflops fjki Czas obliczen: 2,1942 sec predkosc 0,9115 Gflops jfki Czas obliczen: 3,6198 sec predkosc 0,5525 Gflops jkfi Czas obliczen: 0,8142 sec predkosc 2,4565 Gflops fkij Czas obliczen: 2,8723 sec predkosc 0,6963 Gflops kfij Czas obliczen: 0,1947 sec predkosc 10,2727 Gflops kifj Czas obliczen: 0,4705 sec predkosc 4,2507 Gflops fkji Czas obliczen: 3,3385 sec predkosc 0,5991 Gflops kfji Czas obliczen: 2,2168 sec predkosc 0,9022 Gflops kjfi Czas obliczen: 0,8582 sec predkosc 2,3305 Gflops 54