Superarvuti

IBM Roadrunner oli esimene superarvuti, mis suutis teha üle petafloppi ehk kvadriljoni arvutuse sekundis.

Superarvuti on arvuti, mis kuulub esimeste hulka oma töötlemissuutlikuse, eriti arvutuskiiruse poolest.

Superarvuteid hakati looma 1960. aastatel, Seymore Cray oli üks peamine superarvutite kavandaja Control Data Corporationis (CDC)[1]. 1972. aastal lahkus Cray CDC-st, et luua oma firma, Cray Research, mis võttis üle superarvutite turu, hoides superarvutamise esikohta 5 aastat (1985–1990). 1980. aastatel tuli turule hulk väiksemaid konkurente, kuid paljud neist kadusid 1990. aastate keskel toimunud "superarvutituru krahhi" käigus. Tänapäeva superarvutid on tavaliselt ainulaadsed lahendused, mis on loodud selliste "traditsiooniliste" firmade poolt nagu Cray, IBM ja Hewlett-Packard, kes ostsid paljud 1980. aastate arvutitega tegelevatest firmadest ja omandasid sellega vajalikud kogemused.

2011. aasta keskpaigast on maailma kiireim superarvuti K Computer, mis asub Jaapanis ja ületab eelmist rekordiomanikku (Tianhe-I) kolmekordselt.

Mõiste superarvuti on aja jooksul palju muutunud ja tänane superarvuti kipub olema homne tavaarvuti. CDC varased masinad olid lihtsalt väga kiired skalaarprotsessorid, mõned kümme korda kiiremad kui teiste firmade pakutavad. 1970. aastatel enamus superarvuteid olid loodud töötama vektorprotsessoril. 1980. aastate esimesel poolel loodi masinad, kus paralleelselt töötas mitu, tavaliselt 4–6, vektorprotsessorit. 1980. aastate lõpus ja 1990. aastatel pöördus tähelepanu vektorprotsessoritelt massiivsetele paralleeltöötlussüsteemidele, mis sisaldasid tuhandeid „tavalisi“ protsessoreid. Tänapäeva paralleelsüsteemid põhinevad tavakasutuses olevatel serveriklassi mikroprotsessoritel nagu PowerPC, Opteron või Xeon ja kaasprotsessoritel nagu NVIDIA Tesla GPGPUs, AMD GPUs, IBM Cell, FPGAs. Enamik tänapäeva superarvutitest on kõrgtasemel seadistatud klastrid, mis kasutavad tavakasutuses olevaid protsessoreid eriotstarbeks loodud omavaheliste ühendustega.

Superarvuteid kasutatakse väga palju arvutusi nõudvate ülesannete lahendamiseks, näiteks kvantfüüsikas, ilmaennustamises, kliimauuringutes, molekulide modelleerimiseks ja füüsikaliste simulatsioonide jaoks.[2]

Riistvara ja tarkvara superarvutites

Kohandatud protsessoreid kasutavad superarvutid saavutasid traditsiooniliselt suurema kiiruse üle tavaarvutite innovaatiliste disainidega, mis lubasid neil teha mitut ülesannet paralleelselt. Tavaliselt on superarvutid spetsialiseeritud teatud tüüpi arvutustele, tavaliselt numbrilistele arvutustele, ning tänu sellele töötavad halvemini üldisemate andmetöötlus ülesannete puhul. Nende mälu hierarhia on väga hoolikalt disainitud, et tagada, et protsessor saaks pidevalt infot ja juhendeid – tegelikult, suur erinevus aeglasemate arvutite ja superarvutite vahel tuleneb mälu hierarhiast. Nende sisend/väljund süsteemid on tavaliselt kavandatud toetama suurt ribalaiust ning latentsus ei ole nii tähtis, sest superarvuteid ei kasutata transaktsiooniliseks protsessimiseks.

Superarvutite väljakutsed ja tehnoloogiad

Superarvuti toodab suurtes kogustes soojust ja seetõttu tuleb seda jahutada. Tüüpiline TOP500 superarvuti kasutab elektrit 1 ja 10 megavatti ning muudab peaaegu kõik selle soojuseks. Elektrikulu ja jahutus on tavaliselt üks teguritest, mis seab süsteemi suurusele piirid. (Näiteks Tianhe-1A võiks kulutada iga aasta mitme miljoni dollari väärtuses elektrit.)

Informatsiooni kahe arvuti vahel ei ole võimalik liigutada kiiremini kui valguskiirus. Seetõttu superarvuti, mille osad on üksteisest palju meetreid eemal, peab omama latentsust vähemalt kümneid nanosekundeid. Seymore Gray superarvuti kavandites üritati seetõttu hoida kaableid nii lühikesena kui võimalik. Modernsetes superarvutites, mis on ehitatud paljudest paralleelselt töötavatest tavaprotsessoritest, on tavaline latentsus kahe protsessoril vahel 1–5 mikrosekundit.

Superarvutid tarvitavad ja toodavad väga lühikese aja jooksul väga suurtes kogustes andmeid. Ken Batcher on öelnud: „Superarvuti on seadeldis, millega pöörata arvutuspiirangud sisend-/väljundpiiranguteks.“ Palju tööd on vaja teha andmekandjate ribalaiuse kallal, et teha kindlaks, et informatsioon saab kiiresti toimetatud ja talletatud või korrektselt vastu võetud.

Tehnoloogiad, mis on välja töötatud superarvutite jaoks, sisaldavad:

  1. Vektortöötlust
  2. Vedelikjahutust
  3. NUMA (Non-Uniform Memory Access)
  4. Andmete paigutamist korraga kahele füüsilisele kettale, et neid kiiremini kasutada. (Esimene etapp sellest, mida hiljem hakati kutsuma RAID-iks)
  5. Paralleelseid failisüsteeme.

Töötlemistehnikad

Vektortöötluse tehnikad olid esmalt arendatud superarvutitele ja edaspidi olid spetsiaalsetes kõrgvõimsusega programmides. Vektortöötluse tehnikad on jõudnud massina turule DSP arhitektuurina ja SIMD (Singe Instruction Multiple Data) töötlemisjuhenditena tavaarvutitele.

Eriti tänapäeva videomängukonsoolid kasutavad SIMD-d ja seetõttu mõned tootjad väidavad, et nende mängumasinad on superarvutid. Mõnedel graafikakaartidel on arvutusvõimsus isegi kuni mõni teraflops. Koht, kus seda võimsust kasutada saab, oli piiratud varase videotöötluse iseloomu pärast. Videotöötlus on arenenud, graafikaprotsessor (GPU ehk graphics processing unit) on edasi arenenud ning nüüd on nad kasulikumad tavaliste vektorprotsessoritena. Sellest on välja arenenud täiesti uus arvutiteaduse alaliik: tavaotstarbeline arvutus graafikaprotsessoritel ( GPGPU – General-Purpose Computing on Graphics Processing Unit).

Operatsioonisüsteemid

Superarvutid jooksevad enamasti Linuxil.

Tänapäeval kasutavad superarvutid kõige enam Linuxi eri variante. [3] 1980. aastate esimeses pooles ohverdasid superarvutid juhendite ühilduvuse ja koodi teisaldatavuse, et saada paremaid tulemusi (töötlus- ja mälu kättesaamise kiirusi). Selle ajani olid superarvutitel enamasti väga erinevad operatsioonisüsteemid. Cray-1'l üksi oli vähemalt 6 erinevat operatsioonisüsteemi, mis olid tavalisele arvutikogukonnale enamasti tundmatud. Samamoodi olid olemas erinevad ja mitteühilduvad vektoriseerivad ning paralleeliseerivad kompilaatorid Fortranilt. Selline trend lõppes, kui loodi ühilduv juhendite komplekt Cray-1 ja Cray X-MP vahel ja võeti kasutusele sellised arvutisüsteemid nagu Cray' Unicos või Linux.

Programmeerimine

Paralleelse arhitektuuri tõttu superarvutites kasutati tihti spetsiaalseid programmeerimistehnikaid, et kasutada ära superarvutite kiirust. Baaskeel superarvutite jaoks on üldiselt Fortran või C, kasutades spetsiaalseid teeke, et jagada infot sõlmede vahel. Kõige tavalisemal juhul, keskkonnad nagu PVM ja MPI, olid kasutuses lõdvalt ühendatud klastrite vahel ja OpenMP tihedalt koordineeritud jagatud mäluga masinates. Märkimisväärseid jõupingutusi on vaja teha, et optimeerida probleem antud ühenduste iseloomu jaoks, millel masin jooksma hakkab. Eesmärk on hoida ära võimalus, et mõni protsessor kulutab aega andmetele teistest sõlmedest. Uued massiivselt paralleelsed GPGPU-d omavad sadasid protsessorituumi ja on programmeeritud kasutades programmeerimismudeleid nagu CUDA ja OpenCL.