Optimalizace. Optimalizace. Profilování. Gprof. Gcov. Oprofile. Callgrind. Intel Vtune. AMD CodeAnalyst

Podobné dokumenty
Jan Kratochvíl, F 3 MOD. 15. února 2004

Úvod do OpenMP. Jiří Fürst

Návrh paralelních algoritmů

Systém eprojekty Příručka uživatele

Matematika v programovacích

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

09. Memory management. ZOS 2006, L.Pešička

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Aplikace pro vizualizaci profilingových dat

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Sekvenční architektury. Optimalizace přístupu do paměti Pamět ový subsystém PC Statické paměti Dynamické paměti Cache

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ

Synchronizace číselníků

KAPITOLA 11 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

Úvod. Programovací paradigmata

Programování v C++ 1, 1. cvičení

Revize majetku. Dovývoj je vytvořen jako součást DELPHI Pluginu a může být přidán do jakékoliv existující knihovny. (pokud existují zdrojové kódy)

AIDA64 Extreme. Příručka k nastavení. v

OPS Paralelní systémy, seznam pojmů, klasifikace

Paralelní výpočty na clusteru KMD

Návod pro práci s SPSS

Dotazy tvorba nových polí (vypočítané pole)

DUM 06 téma: Tvorba makra pomocí VBA

Reporting. Ukazatele je možno definovat nad libovolnou tabulkou Helios Orange, která je zapsána v nadstavbě firmy SAPERTA v souboru tabulek:

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Programujeme v softwaru Statistica

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

9. Ladění a testování programů. booleovský výraz

Struktury a vazebné energie iontových klastrů helia

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Business Media CZ, s. r. o., člen skupiny Docu Group Company

Programování II. Polymorfismus

Návod k práci s programem MMPI-2

FORTANNS. 22. února 2010

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016

Obr. P1.1 Zadání úlohy v MS Excel

PŘÍRUČKA PRÁCE SE SYSTÉMEM SLMS CLASS pro učitele

Algoritmy a datové struktury

Operační výzkum. Síťová analýza. Metoda CPM.

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Instalace SW VIS z internetu - Opakovaná instalace, instalace upgrade

Ladění ovladačů pomocí virtuálního stroje...2 Úvod...2 Ladění ovladačů pomocí dvou fyzických počítačů...2 Ladění ovladačů pomocí jednoho fyzického

Téma 12: Správa diskových jednotek a system souborů. Téma 12: Správa diskových jednotek a systémů souborů

Rocrail. Nejprve: Obecný úvod. Instalace

KOMUNIKACE PC DAT 400/500. přes USB programem INOVATION

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

C2115 Praktický úvod do superpočítání

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc.

Stanovení měrného tepla pevných látek

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Angličtina program k procvičování slovní zásoby

František Hudek. červen ročník

Úvod do teorie měření. Eva Hejnová

Střední odborná škola a Střední odborné učiliště, Hořovice

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Modul Zásoby IQ sestavy a jejich nastavení Materiál pro samostudium +1170

INFORMACE. Postup vytvoření virtuálního PC. Zpracoval: Ing. Emil Kajer Datum vydání:

Instalace SW VIS přímo z programu VIS - Opakovaná instalace, instalace upgrade

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Microsoft Office. Word hromadná korespondence

Práce s programem MPVaK

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Paralelní programování

Aplikace. vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin

10. Složitost a výkon

Hromadná korespondence

2. úkol MI-PAA. Jan Jůna (junajan)

Prostředky automatického řízení Úloha č.1 kalibrace snímačů tlaků

STATISTICA Téma 1. Práce s datovým souborem

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

KIV/ZIS - SELECT, opakování

Vlastnosti dokumentu/stránky

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Př. další použití pointerů

Knihovny součástek. Přidání knihovny. Cesta ke knihovnám pro Pspice

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Zdroj:

Reliance 3 design OBSAH

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D.

Plán testů. Úvod. Jednotkové (unit) testování

Kontingenční tabulky v MS Excel 2010

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

Architektura počítačů

Lineární regrese. Komentované řešení pomocí MS Excel

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

PŘECHODOVÁ CHARAKTERISTIKA

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Postup: Nejprve musíme vyplnit tabulku. Pak bude vypadat takto:

Spojování dvou a více map v image souborech.

Transkript:

Optimalizace Optimalizace Profilování Gprof Gcov Oprofile Callgrind Intel Vtune AMD CodeAnalyst Cvičení

Hlavní využití počítačů Vývoj paralelního algoritmu je nutné chápat jako optimalizaci. 1. nejprve vždy vyvíjíme co nejjednodušší sekvenční algoritmus bez optimalizací za každou cenu se vyhýbáme předčasné optimalizaci ta může zcela zbytečně poničit čístý návrh algoritmu bez základní jenoduché verze kódu nemůžeme poměřit přínos optimalizace 2. máme-li základní funkční kód, který není dostatečně výkonný, přistupujeme k optimalizacím pomocí profilování kódu určíme kritické části, kde se tráví nejvíce CPU času následně většinou optimalizujeme sekvenční kód pokud to nepostačuje, přikročíme k paralelizaci 3. během implementace optimalizací provádíme průběžné testy a kontrolujeme, zda optimalizovaný kód dává stále správné výsledky 4. nakonec poměřujeme přínos optimalizace/paralelizace tj. výslednou efektivitu paralelizace

Profilování kódu jde o proces, kdy se snažíme zjistit, kolik z celkového času běhu programu zaberou jednotlivé části kódu to lze provést bud přidáním měřícího kódu nebo pomocí tzv. profilerů čím přesnější měření chceme mít, tím více ovlivníme samotný výpočet

Profilery Jsou dva základní přístupy: statistické profilování (samplování) v pravidelných intervalech se sonduje, jaká část kódu se momentálně provádí výsledek není přesný, obzvlášt krátké funkce nemusí být vůbec zachyceny nezpomaluje příliš běh profilovaného programu instrumentace (instrumentation) do kódu se přidají pomocné instrukce, kterými se sleduje zpracování kódu ani krátké funkce se tak nepřehlédnou běh programu se tím značně zpomalí dynamická instrumentace instrumentaci neprovádí překladač, ale profiler těsně před spuštěním profiler vlastně funguje jako virtuální stroj s JIT překladem výpočet se hodně zpomalí, ale výsledek je velmi přesný

Gprof GNU gprof https://sourceware.org/binutils/docs/gprof/ tento profiler spolupracuje s překladačem gcc, který dělá instrumentaci program nejprve musíme přeložit s volbou -pg tj. g++ -O3 -pg -o program main.cpp provádímeli linkování zvlášt, je potřeba přidat tento přepínač i linkeru následně program spustíme po ukončení běhu máme v pracovním adresáři soubor gmon.out ten slouží jako základ analýzy programem gprof

Gprof flat profile gprof -p program gmon.out u každé funkce ukáže, kolik času s v ní strávilo výpočtem call graph gprof -q program gmon.out vidíme tabulku, kde jsou jednotlivé položky oddělené řádkou pomlček v každé položce je primární řádka ta, která obsahuje index v hranatých závorkách udává primární funkci, kterou tato část popisuje řádky nad primární řádkou popisují funkce, které danou funkci volají položka called říká, kolikrát z celkového počtu proběhnutí daná funkce volala primární funkci řádky pod primární řádkou popisují funkce volané danou funkcí položka called říká, kolikrát z celkového počtu proběhnutí primární funkce volala danou funkci source code annotations g++ -O3 -g -pg -o program main.cpp gprof -A program gmon.out

Gcov GNU Gcov tento program umí napočítat, kolikrát byla daná řádka kódu provedena nejprve přeložíme náš program g++ -O0 -fprofile-arcs -ftest-coverage -o program main.cpp -lgcov následně program spustíme v adresáři se zdrojovým kódem se objeví soubory s příponami.gcda.gcno použijeme příkaz gcov main.cpp otevřeme si soubor main.cpp.gcov nebo použijeme program lcov lcov --capture --directory. --output-file coverage.info genhtml coverage.info --output-directory coverage cd coverage firefox index.html pozor, lcov udává pokrytí jednotlivých souborů, což neodpovídá času zpracování řádky s největším počtem provedení budou ale zřejmě odpovídat kritickým částem aplikace

Oprofile Oprofile http://oprofile.sourceforge.net/about/ jde o statistický (samplovací) profiler není nutné dělat zvláštní překlad kódu zadáme příkazy operf program arguments opreport -l chceme graf volání funkcí, pak operf program arguments opreport -l chceme-li propojení se zdrojovým kódem g++ -O0 -g -o program main.cpp operf program arguments opannotate --source --search-dirs. --output-dir=annotated

Callgrind Callgrind http://valgrind.org/docs/manual/cl-manual.html je součástí nástroje Valgrind valgrind.org jde o skupinu dynamických instrumentačních nástrojů callgrind generuje velice přesný graf volání náš kód přeložíme s přepínačem -g a spustíme pomocí příkazu valgrind --tool=callgrind program argumenty výpočet je výrazně pomalejší v průběhu výpočtu lze valgring sledovat pomocí callgrind_control -b -e callgrind_control -s po skončení běhu programu vznikne soubor callgrind.out.<pid> ten lze zpracovat pomocí příkazů callgrind_annotate callgrind.out.<pid> kcachegrind callgrind.out.<pid>

Intel Vtune Intel Vtune https://registrationcenter.intel.com/regcenter/stuform.aspx?productid=1822&pass=yes jde o profiler s dynamickou instrumentací nejprve provedeme sudo echo 0 > /proc/sys/kernel/yama/ptrace_scope profiler spustíme příkazem /opt/intel/vtune_amplifier_xe_2015/bin64/amplxe-gui

AMD CodeAnalyst http: //developer.amd.com/tools-and-sdks/archive/amd-codeanalyst-performance-analyzer/

Cvičení Cvičení: vyberte si některý svůj kód a proved te na něm profilování pomocí zmíněných nástrojů najděte kritické části kódu, kde procesor tráví nejvíce času zamyslete se nad možnou optimalizací kódu než začnete jakékoliv optimalizace provádět, založte si gitovský repozitář pro možnost ukládání různých verzí kódu http://git-scm.com/ http://kmlinux.fjfi.cvut.cz/~zabkavit/git/