Hlavní navigace

Povídky paralelistické: vytváření souběžnosti

Michal Burda

O fyzikálních limitech, lovcích mamutů a nějakém tom škatulkování do tří kategorií. Dnešní úvodní díl nového miniseriálu o paralelismu vás stručně uvede do problematiky "vytváření souběžnosti". Podíváme se na to, proč nemusíme čekat na kvantové počítače a co pro zrychlení našich mašin můžeme udělat už dnes.

Vážení čtenáři, na vašem (doufám) oblíbeném elektronickém časopisu Root.cz právě začíná nová telenovela. Už se jistě stejně jako já nemůžete dočkat, co vám o tématu blyštícím se nad těmito řádky napovídám, takže nechme planých řečí zatěžujících spojovací linky a pusťme se do toho.

My všichni, kdo s počítači něco děláme, jsme neustále svědky různých technologických zázraků. Jejich zrod je doprovázen superlativy, aby za několik málo let zmizel v žumpě dějin. Rychlost našich křemíkových koní se neustále (geometrickou řadou!) zvyšuje, ale jen tehdy, když občas sáhneme hluboko do kapsy, nahmatáme tučný svazek bankovek a koupí dalšího kusu šrotu trochu zrychlíme.

Někomu takové neustálé krví naší práce vykoupené inovování vyhovuje: vývoj jde kupředu a on (ona) si pořád může spouštět ty stále úžasnější textové editory. Jsou však mezi námi lidé, kterým to prostě nestačí. Zatěžují své mašiny nevídaným množstvím dat a chtějí po nich různé složité výpočty. Přitom koho vlastně nějaké data-miningové aplikace, expertní systémy, rozpoznávání řeči nebo předpovědi počasí a jiné matematické výpočty a simulace vlastně zajímají?

Situaci na trhu procesorů výstižně předpověděl vizionář Intelu Gordon Moore, jehož dnes už otřepaný výrok je znám jako tzv. Moorův zákon. Ten pán kdysi v polovině šedesátých let řekl, že:

„Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu.“

Je zajímavé, že tento smělý odhad vývoje výpočetní techniky platí již bezmála čtyřicet let.

V dnešní době můžeme ze všech stran slyšet, že technologie současných kompjútrů se blíží ke svým fyzikálním hranicím, že zkrátka i atom má svou velikost a světlo bohužel omezenou rychlost a tyto hodnoty nejdou snížit/zvýšit tak, jak by se nám zrovna hodilo do krámu. Není proto divu, ze chytří pánové a dámy vymýšlejí různé zběsilosti jako kvantové, chemické nebo snad i biologické (jestli to nejsou fámy) počítače. Kdo totiž první vymyslí slušnou alternativu k dnešním zastarávajícím technologiím, napakuje se penězi a vyhraje. (Tím samozřejmě nechci říct, že vědci vymýšlejí jen kvůli penězům – ale to jsem už pořádně off-topic.)

Je zde však něco (a konečně se dostáváme k tématu), co pro zrychlení našich mašin můžeme udělat už dnes. Ano, správně, je to paralelismus.

Myšlenka paralelizace, čili vytváření souběžnosti (Akadem. slovník cizích slov, Academia Praha 2001), neboli organizace práce tak, aby se při provádění něčeho současně mohlo dělat i něco jiného, je stará jako lidstvo samo. Už první lovci a sběrači typu Mamutík či Kopčem (asi 30000 př. Kr.) pochopili, že se uživí pouze, budou-li lovit všichni spolu (pravda, tehdy tomu asi zrovna „paralelnost“ neříkali, ale princip byl stejný), a že pyramidy (někdy mezi 2500 až 2100 př. Kr.) si faraón taky sám nepostaví a že, aby se jich vůbec dožil, budou potřeba jedni otroci, kteří by mlátili do kamene a dělali z něj kvádry, zatímco další by je souběžně s těmi prvními tahali a kupili na sebe.

Zájem o paralelní zpracovávání není žádnou novinkou ani v informačních technologiích. První pokusy v této oblasti se datují už do prenatálního období počítačového průmyslu: například stroj ILLIAC IV z roku 1967 měl 64 procesorů.

Rozsáhlá paralelizace může být jednou z cest, jak zajistit další růst výpočetního výkonu hned teď. Použít lze dnešní „domácí“ procesory, které jsou relativně levné, a spolu s moderními síťovými technologiemi vytvořit vhodné prostředí pro distribuované výpočty. Můžete si být jisti, že svět nečeká, až mu to na Rootu poradíme, protože přesně takhle se to děje dnes a denně.

Stejně jako každá věc má i paralelní zpracování problémů svá výrazná „ale“ – ty však v našem vyprávění vyplavou na povrch jako bubliny zapáchajícího plynu, teprve až se někdy v průběhu dalších dílů ponoříme hlouběji do bažiny paralelnosti.

Úrovně paralelizace

Principy paralelismu můžeme do světa počítačů zavádět v několika rovinách. Tou nejnižší (englicky fine grained) je paralelizace pomocí „velmi malých“, dá se říci elementárních podprográmků, které mohou běžet najednou. Tento stupeň je obrazně řečeno cítit cínem a kalafunou, protože se často řeší už na úrovni hardwaru a strojových instrukcí. Dnešní procesory své instrukce zpracovávají zřetězeně (jinými slovy v řetězu, v rourách, jako na běžícím pásu, pipelined) tak, že jeden kus křemíku je předzpracovává, několik dalších jednotek souběžně vykonává a další se stará o to, aby celý ten cirkus dohromady dával smysl. Nebo: Jestliže často pracujete s grafikou, koupíte si grafický akcelerátor a tak ulehčíte samotnému procesoru, který se místo vypočítávání obrazu může zabývat něčím rozumnějším… Příkladů paralelizace na úrovni hardwaru by se jistě dalo najít mnoho a v některém z dalších dílů tohoto seriálu se jimi ještě budeme zabývat.

Trochu vyšším stupněm (middle grained) je paralelizace na úrovni procesorů, kde už je zapotřebí trochu intelektu samotných programátorů vyvíjejích aplikace. Výpočet se musí rozdělit do několika spolupracujících úloh a musí se to udělat natolik chytře, aby mohly běžet pokud možno současně na několika procesorech.

Nejvyšší (coarse grained) úrovní paralelizace se rozumí architektura s řadou procesorů, na kterých simultánně běží několik vzájemně nezávislých úloh. Díky násobnosti procesorů se propustnost systému zvýší, teoretická doba běhu algoritmů se však nezkrátí. Jednotlivé programy se píšou pořád stejně sekvenčně („jakoby pro jeden procesor“), vtip je však v tom, že když takových úloh běží v systému více, jejich zpracování se rozdělí na všechny dostupné procesory, a tak všechno chodí v konečném důsledku o poznání rychleji.

A to by mohlo být, milí čtenáři, pro dnešek vše. Paralelistické povídky budou pokračovat tím, jak princip paralelismu využívají u Intelu v návrzích svých procesorů – a to je dlouhé povídání, které si necháme na samostatný díl.

Našli jste v článku chybu?
27. 7. 2003 22:21
Pepa (neregistrovaný)

No, myslim, ze existuje este takova ta skupina "je mi to fuk" Jinak bylo to moc hezky psany, ale pomer text/informace nic moc...

26. 7. 2003 8:12
Twinsen (neregistrovaný)

Asi bych ocenil vice informaci, ale jelikoz me toto tema docela zajima tak asi nebudu objektivni. Jinak je clanek fajn, tesim se na pokracovani, doufam ze bude uz brzy :)