Obsah
1. Slavné superpočítače Seymoura Craye
2. Nejznámější modely superpočítačů Cray
3. Základní rysy superpočítačů Cray
4. Pracovních registrů není nikdy dost
5. Vektorové operace a podmíněné operace s vektory
6. Podmíněné operace se složkami vektorů
8. Obsah následující části seriálu
1. Slavné superpočítače Seymoura Craye
Jak bylo zmíněno v perexu článku, v seriálu o historii výpočetní techniky jsme se již seznámili s mnoha typy počítačů, které jsou nedílnou a přitom důležitou součástí historie IT. Jedná se jak o první řady mainframů firmy IBM (IBM 7×x a IBM 7×xx, posléze i IBM/360), tak i počítače PDP, na nichž mimochodem vznikla jak samotná koncepce Unixu, tak i programovací jazyk C, jenž je nedílnou součástí Unixu. Dále jsme se zabývali superpočítači Connection Machines programované většinou v paralelní verzi LISPu a nakonec jsme se zmínili i o některých počítačích zkonstruovaných v SSSR a v dalších zemích RVHP (samozřejmě včetně bývalého Československa). V této přehlídce různých a mnohdy i velmi kuriózních architektur (viz například počítač Сетунь pracující v trojkové soustavě, který vznikl v SSSR) nám však stále ještě chybí jedna z nejznámějších a nejpropracovanějších superpočítačových architektur; dokonce by se dalo říci, že se jedná o synonymum pro slovo „superpočítač“. Řeč je o strojích nesoucích název Cray, jejichž konstruktérem byl Seymour Cray.
Obrázek 1: Celkový pohled na superpočítač Cray-1.
Tyto superpočítače, známé především díky špičkovému výpočetnímu výkonu a také astronomickými sumami, za které je bylo možné pořídit :-), byly optimalizovány pro provádění výpočtů se skalárními hodnotami, vektory i maticemi, což znamená, že se jejich architektura poměrně značně odlišovala od například již zmíněných strojů Connection Machine, které spíše excelovaly při (symbolickém) zpracovávání strukturovaných údajů – seznamů, stromů, grafů atd. Díky tomu, že jedním z cílů počítačů Cray byl co největší výpočetní výkon, umisťovaly se tyto stroje mezi TOP10 nejvýkonnějších počítačů světa. Dokonce i dnes je nejrychlejším (reálně existujícím) počítačem na světě Jaguar neboli Cray XT5 s výpočetním výkonem neuvěřitelných 1.75 PFLOPS (petaflops), který překonal i IBM Roadrunner. V následujících kapitolách se však alespoň prozatím nebudeme Jaguarem zabýval; spíše si popíšeme první modely počítačů Cray, jejichž výpočetní výkon sice není z dnešního pohledu nijak oslňující (překoná je vlastně i běžný desktop), ale v době svého vzniku se jednalo o stroje, které jak svojí architekturou, tak i designem o několik let předběhly svoji dobu.
Obrázek 2: Cray-1 a jeho duchovní otec a konstruktér.
Pro čtenáře možná může být zajímavé porovnat výkonové, cenové a prostorové parametry Crayů s mikrořadiči, tj. výpočetními stroji ležícími na opačné straně výkonnostního spektra než superpočítače. Popisem mikrořadičů se zabýváme v paralelně běžícím seriálu.
2. Nejznámější modely superpočítačů Cray
V následující tabulce jsou vypsány některé základní parametry vybraných typů superpočítačů Cray. Rychlost jednotlivých procesorů (CPU) je vyjádřena v délce trvání jejich hodinového taktu uvedeného v nanosekundách (tuto hodnotu si můžete převést na frekvenci v GHz výpočtem převrácené hodnoty). Kapacita operační paměti je, z pohledu uživatelů osobních počítačů možná poněkud netypicky, uváděna v megaslovech, nikoli megabajtech. Vzhledem k tomu, že většina superpočítačů Cray byla specializována na výpočty s hodnotami v pohyblivé řádové čárce, je výpočetní výkon jednotlivých počítačů vyjádřen v jednotkách MFLOPS (MegaFLOPS, kde FLOPS značí FLoating point Operations Per Second), nikoli MIPS (Million Instructions Per Second). Pro porovnání: první matematický koprocesor pro osobní počítače kompatibilní s PC, tj. čip Intel 8087 taktovaný na 8 MHz, měl výpočetní rychlost cca 30000–50000 FLOPS, tj. 0,03 až 0,05 MFLOPS:
Systém/série | Architektura | Počet CPU | Cyklus (ns) | Paměť (Mslov) | MFLOPS | Rok výroby |
---|---|---|---|---|---|---|
CRAY 1 | PVP | 1 až 2 | 12,5 | 1 až 4 | 160 | 1977 |
CRAY 2 | PVP | 1 až 4 | 4,1 | 64 až 4096 | 488 až 1951 | 1985 |
CRAY 3 | PVP | 1 až 16 | 2,11 | 64 až 4096 | 948 až 15168 | 1993 |
CRAY X-MP | PVP | 1 až 4 | 9,5 | 8 až 16 | 200 až 800 | 1986 |
CRAY X-MP EA | PVP | 1 až 4 | 8,5 | 8 až 16 | 235 až 942 | 1987 |
CRAY Y-MP | PVP | 1 až 8 | 6,0 | 32 až 4096 | 333 až 2664 | 1989 |
CRAY C90 | PVP | 1 až 16 | 4,2 | 64 až 1024 | 1000 až 15238 | 1992 |
CRAY T90 | PVP | 1 až 32 | 2,2 | 64 až 1024 | 1800 až 57600 | 1995 |
CS6400 | SMP | 4 až 64 | 11,8 | 32 až 2048 | ||
CRAY Y-MP EL | PVP | 2 až 8 | 30,0 | 32 až 512 | 133 až 532 | 1991 |
CRAY J90 | PVP | 4 až 32 | 10,0 | 32 až 1024 | ||
CRAY T3D | MPP | 32 až 2048 | 6,7 | 8/CPU | ||
CRAY T3E | MPP | 16 až 2048 | 3,3 | 8 až 64/CPU | ||
CRAY XT5 (Jaguar) | MPP | 224 256 | 0,38 | 16GB/CPU | 1750000000 | 2009 |
Obrázek 3: Detail spodní části superpočítače CRAY-1S. Na pravé straně fotografie je patrný „vstup“ do vnitřního prostoru stroje.
Význam zkratek v předchozí tabulce (bude upřesněno při popisu jednotlivých modelů):
Zkratka | Význam |
---|---|
PVP | parallel vector processor |
MPP | massive parallel processing |
SMP | symmetric multiprocessing |
Obrázek 4: Další detail spodní části superpočítače CRAY-1S, kde můžeme mj. vidět i jeho chladicí systém.
3. Základní rysy superpočítačů Cray
Již v úvodní kapitole tohoto článku jsme si řekli, že superpočítače Cray byly (a dodnes jsou) konstruovány s ohledem na dosažení co nejvyššího výpočetního výkonu, především v oblasti numerických výpočtů s číselnými hodnotami uloženými v systému plovoucí řádové čárky (FP – Floating Point). Konstruktéři těchto počítačů se tedy snažili především o to, aby numerické operace mohly probíhat co nejrychleji (prakticky za jakoukoli cenu, a to doslova), a to i v těch případech, pokud byly výpočty prováděny nejenom se skalárními hodnotami, ale i s vektory (n-ticemi číslic) a maticemi, nebo pokud se ve výpočtech objevily (což je v praxi běžné) nějaké podmínky, které se musely pro každý zpracovávaný prvek vektoru či matice vyhodnotit. Výsledkem těchto snah je architektura založená na větším množství samostatně pracujících procesorů (CPU), z nichž každý je rozdělen do několika specializovaných modulů, nazývaných taktéž funkční jednotky. Důležitou součástí počítačů Cray je především jednotka pro provádění operací s vektory.
Obrázek 5: Příručka k superpočítači Cray-1.
Jména a operace podporované jednotlivými funkčními jednotkami jsou vypsány v následující tabulce (s postupným zvyšováním výpočetního výkonu se počet i typ různých jednotek zvyšoval, takže obsah tabulky je platný pro počítače Cray zkonstruované zhruba před rokem 1985):
Typ funkční jednotky | Prováděné operace |
---|---|
address | add, multiply |
scalar | add, shift, logical, pop/parity/leading zero |
vector | add, shift, logical, pop/parity |
floating | add, multiply, reciprocal approximation |
Obrázek 6: Příručka k superpočítači Cray-2.
4. Pracovních registrů není nikdy dost
Jedním z důvodů, proč superpočítače Cray po dlouhý čas patřily mezi nejrychlejší počítače na světě, bylo i to, že jejich konstruktéři v žádném případě nešetřili pracovními registry, s nimiž procesorové jednotky a jejich moduly mohly pracovat. Počet současně použitelných registrů byl samozřejmě mnohem vyšší, než je tomu například na mikroprocesorech řady i386 (jejichž nechvalně známá instrukční sada navíc funkce některých registrů omezuje pouze pro provádění redukovaného množství operací), ale dokonce je i vyšší, než počet pracovních registrů většiny mikroprocesorů postavených na architektuře RISC, kde jsou většinou k dispozici „registrová okna“ s 32 nebo 64 registry (registrové okno určuje, se kterými registry je možné v daném čase pracovat, nemusí se ovšem jednat o všechny registry, který mikroprocesor obsahuje). Navíc superpočítače Cray kromě „klasických“ registrů uchovávajících skalární hodnoty měly i sadu takzvaných vektorových registrů, tj. registrů určených pro uložení a zpracování několika prvků stejného typu.
Jako ukázka toho, jak rozsáhlé sady registrů bylo v superpočítačích Cray možné použít, jsou v tabulce zobrazené pod tímto odstavcem vypsány všechny pracovní registry dostupné v každé (!) procesorové jednotce počítače Cray řady Y-MP z roku 1989. Z tabulky je patrné, že registry jsou podle své funkce rozděleny do několika kategorií, přičemž každá kategorie je označena jedním písmenem (V – vektorové registry, S – skalární registry, A – registry používané pro adresování atd.). Registry z různých kategorií jsou zpracovávány různými funkčními jednotkami, což mj. znamená, že například s registry používanými pro adresování lze provádět operace součtu, rozdílu či násobení konstantou, nikoli však výpočet převrácené hodnoty, což je naopak operace dostupná pro registry spadající do kategorie S (skalární registry):
Označení | Počet registrů | Šířka | Poznámka |
---|---|---|---|
V | 8 | 64×64 bitů | každý registr je ve skutečnosti 64složkovým vektorem |
T | 64 | 64 bitů | |
S | 8 | 64 bitů | sada registrů pro běžné skalární operace |
B | 64 | 32 bitů | |
A | 8 | 32 bitů | |
I | 4 | 32×64-bitová slova | též se zpracovávají jako 128×16-bitová slova |
5. Základní vektorové operace
Díky tomu, že centrální procesorové jednotky superpočítačů Cray obsahovaly i již několikrát zmiňované moduly pro provádění operací s vektory, bylo možné některé na první pohled zdlouhavé výpočty s programovými smyčkami nahradit jedinou instrukcí nebo krátkou sekvencí instrukcí neobsahující žádné podmíněné ani nepodmíněné skoky. Například součet hodnot prvků dvou polí s uložením výsledku do třetího pole lze ve Fortranu, tj. programovacím jazyku používaném pro numerické výpočty již více než 50 let, zapsat následujícím způsobem (syntaxe je upravena pro verzi Fortran 90):
DO i = 1,42 c[i] = a[i] + b[i] END DO
Ve skutečnosti je výše uvedená operace provedena doslova v několika taktech pomocí vektorové jednotky.
To však není zdaleka vše. Vzhledem k tomu, že jednotek pro provádění vektorových operací bylo v počítačích Cray nainstalováno několik (jednotek, desítek, stovek), dokázaly tyto jednotky pracovat paralelně a nezávisle na sobě; samozřejmě za předpokladu, že nedocházelo ke kolizím při zápisu dat do skalárních proměnných nebo polí. Vzhledem k tomu, že následující blok programového kódu obsahuje dva výpočty nad nezávislými poli (vektory), bude tento blok proveden prakticky stejnou rychlostí jako blok předchozí, i když výpočtů je ve skutečnosti provedeno prakticky dvakrát tolik:
DO i = 1,42 c[i] = a[i] + b[i] d[i] = e[i] * f[i] END DO
Obrázek 7: Počítač Cray Y-MP.
6. Podmíněné operace se složkami vektorů
V mnoha typech algoritmů, v nichž vystupují vektory nebo matice, se můžeme setkat s tím, že se nějaká operace má provést pouze při splnění určité podmínky. Zatímco v případě implementace takového algoritmu na skalárním procesoru nedochází k větším problémům (v programové smyčce je podmíněný skok), v případě zpracování na vektorovém procesoru je nutné, aby se podmínka vyhodnotila pro každou složku zpracovávaných vektorů, v ideálním případě opět paralelně pro všechny prvky (jinak se z paralelního výpočtu stane výpočet sekvenční). I tuto činnost dokázaly vektorové jednotky v počítačích Cray automaticky (a především skutečně paralelně) provádět, samozřejmě za předpokladu, že se v podmínce nevyskytovaly výrazy, které by závisely na výpočtech prováděných s jinými prvky zpracovávaných vektorů. Překladače Fortranu implementované na počítačích Cray například dokázaly správně přeložit („vektorizovat“) následující programový kód takovým způsobem, že byl proveden v několika málo taktech:
DO i = 1,42 IF ( b[i] .gt. 0 ) c[i] = a[ i ] END DO
Poznámka: .gt. je relační operace „větší než“ zapisovaná v jiných jazycích pomocí operátoru >.
Další operací prováděnou na počítačích Cray jedinou instrukcí je výběr z pole (nebo zápis do pole) pomocí indexu získaného z jiného pole. Tento typ výrazu se používá například při práci s řídkými maticemi:
DO i = 1,42 c[i] = a[ b[i] ] END DO
Obrázek 8: Počítač Cray J90.
7. MHz nebo MFLOPS?
Pokud si uvědomíme, jak rozdílným způsobem by byly demonstrační programové bloky uvedené v předchozích dvou kapitolách zpracovány pomocí „klasického“ skalárního procesoru, například Intel 486 nebo i Pentium 1, pochopíme, proč je v těchto případech zcela nesmyslné porovnávat výpočetní výkon architektonicky rozdílných počítačů pouze na základě hodinové frekvence jejich procesorů (jinými slovy – porovnávat výpočetní rychlost na základě frekvence je možné pouze u procesorů s totožnou architekturou). Procesor, jenž dokáže v jeden okamžik provádět současně několik operací nad celými vektory, bude v případě správného naprogramování rychlejší, než procesor pracující pouze se skalárními hodnotami, i když při porovnání hodinových frekvencí by se mohlo zdát, že je skalární procesor je rychlejší. Právě z těchto důvodů se výpočetní výkon superpočítačů udává v MFLOPS (milionech operací s číselnými hodnotami v pohyblivé řádové čárce za sekundu), popř. se ještě pro větší věrohodnost dodává výsledek nějakého syntetického benchmarku (výkonnostního testu), kterých pro oblast numerických výpočtů existuje několik (některé z nich si popíšeme příště).
Obrázek 9: Seymour Cray
8. Obsah následující části seriálu
V následující části seriálu o historii výpočetní techniky si do větších podrobností popíšeme historii vývoje i technické parametry první generace superpočítačů Cray. Jedná se především o legendární Cray-1, zejména pak o modely Cray 1S a Cray 1M. Historie těchto strojů je velmi zajímavá. Když byl například v roce 1975 zveřejněn záměr zkonstruovat superpočítač optimalizovaný na numerické výpočty (jednalo se právě o model Cray 1S), začalo mezi některými firmami, universitami a výzkumnými ústavy, především mezi Lawrence Livermore National Laboratory a Los Alamos National Laboratory, přetahování o to, který z těchto subjektů získá první model počítače Cray 1S pro své výzkumné účely. Vítězem byla nakonec laboratoř v Los Alamos, která se může pyšnit počítačem Cray se sériovým číslem 001, jenž jí byl dodán v roce 1976. Právě v tomto roce začalo být jméno Cray skloňováno prakticky po celém IT světě a pro mnoho lidí až do konce devadesátých let minulého století bylo Cray synonymem pro slovo superpočítač. Ostatně i mimo IT bylo jméno Cray poměrně známé, mj. i díky tomu, že na Crayi 1 byl vyrendrován film TRON a navíc byl jeden z těchto počítačů (ne ten, který rendering prováděl :-) ve filmu i zachycen. Mimochodem – jednalo se o počítač se sériovým číslem 38.
Obrázek 10: Další pohled na superpočítač Cray-1.
9. Odkazy na Internetu
- Cray History
http://www.cray.com/About/History.aspx?404;http://www.cray.com:80/about_cray/history.html - Cray Historical Timeline
http://www.cray.com/Assets/PDF/about/CrayTimeline.pdf - Seymour Cray Biography
http://www.cray.com/Assets/PDF/about/SeymourCray.pdf - Company: Cray Research, Inc. (Computer History)
http://www.computerhistory.org/brochures/companies.php?alpha=a-c&company=com-42b9d5d68b216 - Cray Wiki
http://www.craywiki.com/index.php?title=Main_Page - Seymour Cray
http://www.craywiki.com/index.php?title=Seymour_Cray - Cray (Wikipedia)
http://en.wikipedia.org/wiki/Cray - Cray-1 (Cray Wiki)
http://www.craywiki.com/index.php?title=Cray_1S - Cray-1 (Wikipedia)
http://en.wikipedia.org/wiki/Cray-1 - Cray X-MP (Wikipedia)
http://en.wikipedia.org/wiki/Cray_X-MP - Cray-2 (Wikipedia)
http://en.wikipedia.org/wiki/Cray-2 - What Limits Forecast Accuracy?
http://weather.mailasail.com/Franks-Weather/Forecast-Accuracy-Limitations - Remembering the Cray-1
http://www.theregister.co.uk/2008/01/05/tob_cray1/ - Cray Supercomputer FAQ and other documents
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/index.html - Cray Research and Cray computers FAQ Part 1
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp1.html#TOC - Cray Research and Cray computers FAQ Part 2
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp2.html#TOC1 - Cray Research and Cray computers FAQ Part 3
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp3.html#TOC1 - Cray Research and Cray computers FAQ Part 4
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp4.html#TOC1 - Cray Research and Cray computers FAQ Part 5
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp5.html#TOC1 - The making of a CRAY-3
http://www.cisl.ucar.edu/docs/SCD_Newsletter/News_summer93/04e.cray3.html - Computer Speed Claims 1980 to 1996
http://homepage.virgin.net/roy.longbottom/mips.htm - Speed of Intel 8087 co-processor in FLOPS ($100)
http://answers.google.com/answers/threadview/id/542435.html - Million instructions per second
http://en.wikipedia.org/wiki/Mflops - Million instructions per second
http://en.wikipedia.org/wiki/Million_instructions_per_second#Million_instructions_per_second