přejít na obsah přejít na navigaci

Linux E X P R E S, Recenze knihy Programování aplikací pro vícejádrové procesory

Recenze knihy Programování aplikací pro vícejádrové procesory

prg_multicore.jpg

Z hlediska rychlosti procesorů se pokrok zastavil. Během posledních téměř deseti let nedošlo k podstatnému nárůstu jejich frekvence. Zlepšování výkonu se začalo dosahovat především zvyšováním počtu jader v procesoru. Tento posun v průmyslu vyvolal mezi programátorskou veřejností nebývalý zájem o postupy paralelizace, které uceleně popisuje recenzovaná kniha Programování aplikací pro vícejádrové procesory.


Příručka se člení do jedenácti různě zaměřených kapitol.

  • Kapitola Hardware, procesory a vlákna se zabývá popisem základních komponent počítače, způsobem zpracování strojového kódu procesorem, vztahem mezi virtuální a fyzickou pamětí, rozlišením platforem s UMA, NUMA a ccNUMA pamětí. V závěru kapitoly vysvětluje pojmy vlákno a proces.

  • Poměrně obecná kapitola Programování s ohledem na výkon se netýká přímo paralelizace. Kapitola konstatuje, že různé algoritmy mají různou algoritmickou složitost, že kompilátor má různé přepínače a že při odlaďování programu se hodí profilery a debuggery.

  • Kapitola Identifikování příležitostí pro paralelismus je úvodem do problematiky paralelismu.

  • Kapitola Synchronizace a sdílení dat diskutuje nutnost korektní synchronizace přístupu k paměti u více konkurenčních procesů, ukazuje nejběžnější synchronizační primitiva (např. spinlock) a nejběžnější prostředky komunikace mezi procesy poskytované operačním systémem (např. roury).

  • Kapitola Vlákna v rozhraní POSIX stručně představuje programování vláken a prostředky komunikace mezi vlákny v UNIXových systémech. Specifika jednotlivých operačních systémů však nejsou diskutována.

  • Následuje kapitola Práce s vlákny v systému Windows.

  • Monotematická kapitola Automatická paralelizace a rozhraní OpenMP podrobně předvádí direktivy preprocesoru z rozhraní OpenMP. Překvapivě další známé rozhraní Message Passing Interface (MPI) je zmíněno jen v předposlední kapitole, na dvou stránkách.

  • Kapitola Ručně programovaná synchronizace a sdílení ukazuje, jak s pomocí elementárních prostředků vytvořit vlastní synchronizační primitiva.

  • Kapitola Škálování s vícejádrovými procesory pojednává o situacích, kdy paralelizace aplikace nepřináší dostatečné zlepšení.

  • Kapitola Další techniky paralelizace zmiňuje možnost výpočtů s pomocí CUDA, OpenCL, jazyk Cilk++, funkcionální paradigma v programování, instrukce procesoru typu SIMD, MapReduce a MPI.

  • Vše uzavírá kapitola Několik poznámek na závěr.

Ukázky kódu jsou psány v jazyku C s využitím pouze nízkoúrovňových rozhraní operačního systému. (Pozor, některé příklady předpokládají moderní dialekt C99 jazyka C. Tento dialekt ne všechny kompilátory plně podporují.) Všechny uváděné zdrojové kódy jsou velmi krátké a mají pouze demonstrační charakter. Text se nezabývá vyššími jazyky, frameworky, rozhraními a běhovými prostředími (C++, GTK, Qt, Java...), které se využívají při vývoji běžného aplikačního softwaru.

Obálka knihy Obálka knihy

Nelíbilo se mi

Název Programování aplikací pro vícejádrové procesory nekoresponduje s obsahem. Většina kapitol se věnuje obecně vláknům a stejně dobře platí i pro stroje s jedním jednojádrovým procesorem. Přímo problematikou vícejádrových procesorů se roztroušeně zabývá pouze několik stránek. Dále se výklad spíše než pro programování aplikačního softwaru hodí pro programování systémových utilit.

Autor Darryl Gove je zaměstnancem Oracle. Možná proto dopřává disproporčně velkou pozornost produktům této společnosti. Zdaleka nejvíce prostoru se věnuje vcelku marginálnímu operačnímu systému Solaris. Jednoznačně preferovanými vývojářskými nástroji jsou části Oracle Solaris Studio. Některé postupy (např. podkapitola Použití optimalizace pomocí informací z profilu) jsou vysvětleny jen pro Solaris Studio. Neustále je zmiňována procesorová architektura SPARC.

Kniha se téměř nevěnuje specifikům operačního systému Linux, přestože nápis na deskách hlásá „Určeno pro Windows, Linux a Oracle Solaris“. Například nastavování priorit procesů a vláken je popsáno pouze pro systém Windows. Nastavování priorit vstupně výstupních operací a zjišťování aktuální spotřeby zdrojů není popsáno vůbec pro žádný systém.

Podkapitola Běžně dostupné profilovací nástroje pojednává o produktech VTune, CodeAnalyst, OProfile, Solaris Studio Performance Analyzer, CodeAnalyzer, Shark a nástroj Instrument. Z nepochopitelných důvodů podkapitola zcela ignoruje populární svobodné nástroje Valgrind, GNU profiler (gprof) a Sysprof. Stručně o Valgrindu a Sysprof se dočtete v dřívějším článku Deset nástrojů pro vývoj aplikací v GNOME.

Zvolená česká odborná terminologie působí místy značně neobvykle. Například termín „grid“, který se zpravidla nepřekládá, je překládán jako „výpočetní soustava“.

Kniha obsahuje bez dalšího vysvětlení několik nepřesných zjednodušujících tvrzení. Například na stránce 38 se tvrdí, že 32bitový procesor dokáže adresovat maximálně 4 GB operační paměti. Ve skutečnosti třeba procesory x86 při zapnutí physical address extension dokážou adresovat několik desítek GB operační paměti.

Závěr

Kniha neobsahuje žádné výsledky benchmarků, rozsáhlejší ukázky z programátorské praxe, novátorské postřehy a ani jinou přidanou hodnotu. Uváděné informace není problém najít na internetu. Kupříkladu programování vláken v Linuxu podrobněji rozebírá anglická příručka Advanced Linux programming, která je volně ke stažení.

Na druhou stranu koupí publikace získáte komplexní pojednání popisující nejrůznější témata, která souvisejí s paralelismem. Výhodou je, že tyto informace nemusíte čerpat z mnoha pramenů.

Nahoru

Odkazy

Příspěvky

Recenze knihy Programování aplikací pro vícejádrové procesory
ludolph 7. 10. 2011, 08:43:00
Odpovědět  Odkaz 
Ja bych jeste doplnil zakladni informace o knize:
pocet stran, ISBN a hlavne cena(!!!).

Je zajimave, ze do dnesnich dnu, je cca 75% vsech opravdu narocnych paralelnich vypoctu realizovano v jazyce Fortran a ten se v knize pravdepodobne nezminuje vubec...?!
Recenze knihy Programování aplikací pro vícejádrové procesory
Simi 7. 10. 2011, 08:53:33
Odpovědět  Odkaz 
Cetl jsem tuto knihu v originale. Dost mi pomohla kdyz jsem zacinal s vlaknama a chtel jsem napsat multiplatformni knihovnu. Zakladni prehled co se jak dela v jakym systemu se hodil a podrobnosti jsem si dohledal (kdyz uz jsem vedel co vubec chci hledat)

Ale pravda ze mi mnohe veci v knize chybeli a neslo se moc do hloubky. Spis bych ji bral jako takovy vycet co se da pouzit.
František Bártík Recenze knihy Programování aplikací pro vícejádrové procesory
František Bártík 7. 10. 2011, 11:00:13
Odpovědět  Odkaz 
Počet stran 416. Vlastní text (bez obsahu apod.) je mezi stranami 20 a 408. Mezinárodní standardní číslo knihy je 978-80-251-3487-0. Knihy recenzované v LinuxExpres si autoři recenzí nekupují, takže nemá přímou zkušenost s cenou. Web nakladatele http://knihy.cpress.cz/programovani-aplikaci-pro-vicejadrove-procesory.html nabízí knihu za 479 a uvádí doporučenou maloobchodní cenu 599 Kč.

Vzpomínám si, že v knize byly zdrojáky v C, assembleru pro SPARC, assembleru pro x86, C + OpenMP a jedna ukázka v Haskellu. Fortran (pravděpodobně) není v knize vůbec zmíněn.
Re: Recenze knihy Programování aplikací pro vícejádrové procesory
ludolph 8. 10. 2011, 10:37:23
Odpovědět  Odkaz 
599,-Kc ... to je teda cena, za kterou si tuhle knihu nekoupi asi vubec nikdo...:(

Na internetu se daji zadarmo dohledat mnohem kvalitnejsi texty o multicore programovani.
Re: Re: Recenze knihy Programování aplikací pro vícejádrové procesory
karl 8. 10. 2011, 17:58:09
Odpovědět  Odkaz 
>>>Na internetu se daji zadarmo dohledat mnohem kvalitnejsi texty o multicore programovani.

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

František Bártík

Soustředím se na problémy, které vyžadují kreativní přístup anebo využití teoretických znalostí. Orientuji se na svobodná řešení a baví mě učit se nové věci. Neváhejte a oslovte mě s Vaším zajímavým pracovním zadáním.


  • Distribuce: debian a odvozená distra
  • Grafické prostředí: GNOME

| blog