Superpočítače Cray

26. 8. 2010
Doba čtení: 12 minut

Sdílet

V předchozích částech seriálu o historii výpočetní techniky jsme se zabývali popisem mnoha typů různých více či méně významných počítačů, které dnes již tvoří nedílnou součást historie IT. Dnes si představíme stroje nesoucí jméno pravděpodobně nejznámějšího konstruktéra počítačů v historii – Seymoura Craye.

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ů

7. MHz nebo MFLOPS?

8. Obsah následující části seriálu

9. Odkazy na Internetu

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 nejpropracova­ně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

bitcoin_skoleni

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

  1. Cray History
    http://www.cra­y.com/About/His­tory.aspx?404;http:­//www.cray.com:80/a­bout_cray/his­tory.html
  2. Cray Historical Timeline
    http://www.cra­y.com/Assets/PDF/a­bout/CrayTime­line.pdf
  3. Seymour Cray Biography
    http://www.cra­y.com/Assets/PDF/a­bout/SeymourCra­y.pdf
  4. Company: Cray Research, Inc. (Computer History)
    http://www.com­puterhistory.or­g/brochures/com­panies.php?al­pha=a-c&company=com-42b9d5d68b216
  5. Cray Wiki
    http://www.cra­ywiki.com/index­.php?title=Ma­in_Page
  6. Seymour Cray
    http://www.cra­ywiki.com/index­.php?title=Se­ymour_Cray
  7. Cray (Wikipedia)
    http://en.wiki­pedia.org/wiki/Cray
  8. Cray-1 (Cray Wiki)
    http://www.cra­ywiki.com/index­.php?title=Cra­y_1S
  9. Cray-1 (Wikipedia)
    http://en.wiki­pedia.org/wiki/Cray-1
  10. Cray X-MP (Wikipedia)
    http://en.wiki­pedia.org/wiki/Cra­y_X-MP
  11. Cray-2 (Wikipedia)
    http://en.wiki­pedia.org/wiki/Cray-2
  12. What Limits Forecast Accuracy?
    http://weather­.mailasail.com/Fran­ks-Weather/Forecast-Accuracy-Limitations
  13. Remembering the Cray-1
    http://www.the­register.co.uk/2008/01/­05/tob_cray1/
  14. Cray Supercomputer FAQ and other documents
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/index­.html
  15. Cray Research and Cray computers FAQ Part 1
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp1­.html#TOC
  16. Cray Research and Cray computers FAQ Part 2
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp2­.html#TOC1
  17. Cray Research and Cray computers FAQ Part 3
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp3­.html#TOC1
  18. Cray Research and Cray computers FAQ Part 4
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp4­.html#TOC1
  19. Cray Research and Cray computers FAQ Part 5
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp5­.html#TOC1
  20. The making of a CRAY-3
    http://www.cis­l.ucar.edu/doc­s/SCD_Newslet­ter/News_summer93/04e­.cray3.html
  21. Computer Speed Claims 1980 to 1996
    http://homepa­ge.virgin.net/ro­y.longbottom/mip­s.htm
  22. Speed of Intel 8087 co-processor in FLOPS ($100)
    http://answer­s.google.com/an­swers/threadvi­ew/id/542435.html
  23. Million instructions per second
    http://en.wiki­pedia.org/wiki/Mflops
  24. Million instructions per second
    http://en.wiki­pedia.org/wiki/Mi­llion_instruc­tions_per_secon­d#Million_instruc­tions_per_second

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.