C2115 Praktický úvod do superpočítání -1- C2115 Praktický úvod do superpočítání Petr Kulhánek, Jakub Štepán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno II. lekce C2115 Praktický úvod do superpočítání -2- Obsah  Architektura počítače CPU, paměť, grafická systém, disky, síť, periferie  Reprezentace číselných hodnot v číslicové technice celá čísla, reálná čísla  Od problému k výsledku algoritmus, zdrojové kódy, překlad, spouštění programu, programovací jazyky C2115 Praktický úvod do superpočítání -3- Architektura počítače C2115 Praktický úvod do superpočítání -4- Přehled CPU Paměť I/O řídící sběrnice datová sběrnice adresní sběrnice 1945 von Neumannova architektura 1944 Hardwardská architektura CPU Paměť programu Paměť dat I/O John von Neumann, původem maďarský matematik, působící ve spojených státech Harvard Mark I - počítač složeny z relé, 24 bitové instrukce ro rw rw • program může sebe modifikovat • program a data nelze načítat současně • program se nemůže modifikovat • program a data se mohou načítat současně C2115 Praktický úvod do superpočítání -5- Přehled CPU Paměť I/O řídící sběrnice datová sběrnice adresní sběrnice 1945 von Neumannova architektura 1944 Hardwardská architektura CPU Paměť programu Paměť dat I/O John von Neumann, původem maďarský matematik, působící ve spojených státech Harvard Mark I - počítač složeny z relé, 24 bitové instrukce ro rw rw • program může sebe modifikovat • program a data nelze načítat současně • program se nemůže modifikovat • program a data se mohou načítat současně v dnešních počítačích se kombinují obě architektury C2115 Praktický úvod do superpočítání -6Typické schéma počítače CPU severní můstek jižní můstek USB myš, klávesnice hodiny reálného času řadiče SATA pevné disky BIOS grafický systém paměť řadič paměti periferie s rychlým přístupem přes PCI Express síť (ethernet)zvuk PCI sběrnice von Neumannova architektura severní a jižní můstek tvoří čipovou sadu (angl. chipset) C2115 Praktický úvod do superpočítání -7Typické schéma počítače, II CPU severní můstek jižní můstek USB myš, klávesnice hodiny reálného času řadiče SATA pevné disky BIOS grafický systém paměť řadič paměti periferie s rychlým přístupem přes PCI Express síť (ethernet)zvuk PCI sběrnice řadič paměti se stává součástí nejnovějších procesorů C2115 Praktický úvod do superpočítání -8- CPU Procesor též CPU (anglicky Central Processing Unit) je základní součástí počítače; jde o velmi složitý sekvenční obvod, který vykonává strojový kód uložený v operační paměti počítače. Strojový kód je složen z jednotlivých strojových instrukcí počítačových programů nahraných do operační paměti. www.wikipedia.org CPU řadič ALU ALU (arithmetic and logic unit), vykonává aritmetické operace, vyhodnocuje podmínky načítá strojové instrukce a data a připravuje jejich zpracování v ALU sekvenční zpracovávání strojových instrukcí je řízeno vnitřním hodinovým taktem C2115 Praktický úvod do superpočítání -9- Reprezentace číselných hodnot C2115 Praktický úvod do superpočítání -10Celá čísla Nejmenší jednotkou informace v číslicové technice je jeden bit. Z bitů se skládají slova. Nejmenším slovem je byte, který obsahuje 8 bitů. Jeden byte může obsahovat čísla od 0 do 255. 128 64 32 16 8 4 2 1 0 1 0 1 0 1 1 1 = 87 Lze vyjádřit i celá čísla se znaménkem. V tomto případě je jeden bit vyhrazen pro znaménko, zbývající bity pro číslo. Existuje několik možností implementace. Intel architektura využívá dvojkový doplněk, který vede k rozsahu od -128 do 127. 128 64 32 16 8 4 2 1 0 1 1 1 1 1 1 1 = 127 0 1 0 1 0 1 1 1 = 87 0 0 0 0 0 0 0 1 = 1 0 0 0 0 0 0 0 0 = 0 1 1 1 1 1 1 1 1 = -1 1 0 1 0 1 0 0 0 = -87 1 0 0 0 0 0 0 0 = -128 bit vyhrazený pro znaménko C2115 Praktický úvod do superpočítání -11Celá čísla, II Celé čísla s větším dynamickým rozsahem lze vyjádřit pomocí větších slov typicky složených ze čtyř bajtů (32 bitové slovo) nebo osmi bajtů (64 bitové slovo). Při práci s celými čísly je nutné brát v potaz, že s nimi nelze vyjádřit libovolně velké číslo a je nutné se důsledně vyvarovat možnosti podtečení nebo přetečení hodnoty. 32 bitové celé číslo bez znaménka: 0 až 4.294.967.295 32 bitové celé číslo se znaménkem: −2.147.483.648 až 2.147.483.647 64 bitové celé číslo bez znaménka: 0 až 18.446.744.073.709.551.615 64 bitové celé číslo se znaménkem: −9.223.372.036.854.775.808 až 9.223.372.036.854.775.807 C2115 Praktický úvod do superpočítání -12Reálná čísla Reálná čísla se vyjadřují v následujícím formátu (formát s pohyblivou čárkou, angl. floating point): mantisa exponent V číslicové technice se reálná čísla nejčastěji vyjadřují ve formátu definovaném standardem IEEE 754. typ šířka mantisa exponent jednoduchá přesnost (single precision) 32 23 8 dvojnásobná přesnost (double precision) 64 52 11 ... 2 1 2 1 2 1 2 1 44332211 mmmmQ  m1,m2,m3 jsou bity mantisy C2115 Praktický úvod do superpočítání -13Reálná čísla, II typ rozsah přesnost jednoduchá přesnost (single precision) ±1,18×10−38 až ±3, 4×1038 přibližně 7 desetinných míst dvojnásobná přesnost (double precision) ±2,23×10−308 až ±1,80×10308 přibližně 15 desetinných míst Speciální kombinací hodnoty mantisy a exponentu, lze vyjádřit následující speciální hodnoty: 0 kladná nula -0 záporná nula NaN not a number, např. výsledek dělení nulou +Inf kladné nekonečno (číslo je příliž velké pro vyjádření) -Inf záporné nekonečno (číslo je příliž velké pro vyjádření) Při práci s reálnými čísly je nutné dbát ohled na šíření zaokrouhlovacích chyb, v logických porovnáváních není vhodné používat operátory rovná se a nerovná se, kromě situace porovnávání s nulou. C2115 Praktický úvod do superpočítání -14Cvičení LII.1 1. Proměnná typu signed char (bajt se znaménkem) obsahuje číslo 127. Jakou hodnotu bude mít proměnná pokud ji zvýšíme o jedničku? 2. Jaký bude výsledek součtu reálných čísel reprezentovaných v dvojnásobné přesnosti a majících hodnotu: 0,1346978.10-12 1,2312657.106 Společné cvičení: převod číselných hodnot z dekadické do dvojkové a hexadecimální soustavy C2115 Praktický úvod do superpočítání -15Od problému k výsledku C2115 Praktický úvod do superpočítání -16Od problému k výsledku ... Problém Výsledek C2115 Praktický úvod do superpočítání -17Od problému k výsledku ... Problém Výsledek algoritmus zdrojový kód program výpočet C2115 Praktický úvod do superpočítání -18Od problému k výsledku ... Problém Výsledek algoritmus zdrojový kód program výpočet vývojové diagramy volba jazyka, ruční optimalizace kompilace strojová optimalizace alokace a efektivní využití zdrojů C2115 Praktický úvod do superpočítání -19Od problému k výsledku ... Problém Výsledek algoritmus zdrojový kód program výpočet vývojové diagramy volba jazyka, ruční optimalizace kompilace strojová optimalizace alokace a efektivní využití zdrojů hardware C2115 Praktický úvod do superpočítání -20Od problému k výsledku ... algoritmus zdrojový kód program výpočet vývojové diagramy volba jazyka, ruční optimalizace kompilace strojová optimalizace alokace a efektivní využití zdrojů hardware Při řešení problémů za použití výpočetní techniky (superpočítačů) je nutné komplexně zhodnotit celou řadu aspektů, které zahrnují i použitý hardware a jeho architekturu. C2115 Praktický úvod do superpočítání -21Probírané okruhy ... algoritmus zdrojový kód program výpočet hardware Při řešení problémů za použití výpočetní techniky (superpočítačů) je nutné komplexně zhodnotit celou řadu aspektů, které zahrnují i použitý hardware a jeho architekturu. základní problémy s vytvářením aplikací pro náročné výpočty, paralelizace C2115 Praktický úvod do superpočítání -22Probírané okruhy ... algoritmus zdrojový kód program výpočet hardware Při řešení problémů za použití výpočetní techniky (superpočítačů) je nutné komplexně zhodnotit celou řadu aspektů, které zahrnují i použitý hardware a jeho architekturu. efektivní spouštění aplikací z oblasti výpočetní chemie (MetaCentrum, malé klastry) C2115 Praktický úvod do superpočítání -23Programy vs Skripty zdrojový kód program vstup výstuppřeklad (kompilace) skript interpreter vstup výstup Program je soubor strojových instrukcí zpracovávaných přímo procesorem. Program vzniká překladem zdrojového kódu programovacího jazyka. Překládané jazyky: • C/C++ • Fortran Skript je textový soubor obsahující příkazy a řídící sekvence, které jsou vykonávány interpreterem použitého skriptovacího jazyka. Skriptovací jazyky: • bash • gnuplot • awk • JavaScript • PHP C2115 Praktický úvod do superpočítání -24Programy vs Skripty • nevyžaduje rekompilaci • vytváření samospustitelného kódu • špatná optimalizovatelnost • pomalejší vykonávání • snadná optimalizace • rychlé vykonávání • nutnost rekompilace • nelze vytvářet samospustitelný kód zdrojový kód program vstup výstuppřeklad (kompilace) skript interpreter vstup výstup C2115 Praktický úvod do superpočítání -25Programy vs Skripty Programy určené pro náročné vědeckotechnické výpočty jsou vždy psané v kompilovatelných programovacích jazycích. Mezi tyto jazyky patří: Fortran C/C++ Skriptovací jazyky se pro náročné výpočty buď vůbec nepoužívají nebo se používají v podpůrných částech výpočtů, které nejsou výpočetně náročné. C2115 Praktický úvod do superpočítání -26Cvičení LII.2 1. Určete procentuální zastoupení programů napsaných v jazyku Fortran, C/C++ a jiný, které jsou uvedeny na následující stránce: http://en.wikipedia.org/wiki/List_of_quantum_chemistry_and_solid_state_physics_software Výsledek znázorněte ve formě výsečového grafu.