Strojna oprema gruče
Računalniška gruča je sestavljena iz množice vozlišč, dokaj tesno povezanih v omrežje. Vozlišča delujejo na enak način in so sestavljena iz enakih elementov, kot jih najdemo v osebnih računalnikih: procesorjev, pomnilnika in vhodno/izhodnih enot. Gruče seveda prednjačijo v količini, zmogljivosti in kvaliteti vgrajenih elementov, običajno pa nimajo vhodno-izhodnih naprav, kot so tipkovnica, miška in zaslon.
Tipi vozlišč
V gručah ločimo več tipov vozlišč, njihova zgradba je odvisna od njihove vloge v sistemu. Za uporabnika so pomembna:
- glavna vozlišča (angl. head nodes),
- vstopna vozlišča (angl. login nodes),
- računska vozlišča (angl. compute nodes) in
- podatkovna vozlišča (angl. data nodes).
Glavno vozlišče skrbi za usklajeno delovanje celotne gruče. Na njem tečejo programi, ki spremljajo stanje ostalih vozlišč, razvrščajo posle na računska vozlišča, nadzirajo izvajanje poslov in drugo.
Uporabniki se s programskimi orodji preko protokola SSH prijavimo na vstopno vozlišče. Preko vstopnega vozlišča na gručo in iz nje prenašamo podatke in programe, pripravljamo, spremljamo in upravljamo posle za računska vozlišča, rezerviramo računski čas na računskih vozliščih, se prijavljamo na računska vozlišča in podobno.
Posli, ki jih pripravimo na vstopnem vozlišču, se izvajajo na računskih vozliščih. Ločimo več vrst računskih vozlišč. Poleg običajnih vozlišč s procesorji, imamo zmogljivejša vozlišča z več pomnilnika in vozlišča s pospeševalniki, kot so splošno-namenske grafične procesne enote. Računska vozlišča so lahko združena v skupine ali particije (angl. partitions).
Na podatkovnih vozliščih shranjujemo podatke in programe. Podatkovna vozlišča so povezana v porazdeljeni datotečni sistem (na primer ceph). Porazdeljeni datotečni sistem vidijo vsa vstopna in računska vozlišča. Datoteke, ki jih prenesemo preko vstopnega vozlišča na gručo, so shranjene v porazdeljeni datotečni sistem.
Vsa vozlišča so med seboj povezana s hitrimi omrežnimi povezavami, običajno vključujejo omrežje Ethernet in včasih tudi omrežje InfiniBand (IB) za učinkovito komunikacijo med računskimi vozlišči. Za omrežne povezave je zaželeno, da imajo veliko pasovno širino (zmožnost prenosa velike količine podatkov) in nizko latenco (potrebujejo kratek čas za vzpostavitev povezave).
Zgradba vozlišča
Velika večina današnjih računalnikov sledi Von Neumannovi arhitekturi. V procesorju kontrolna enota skrbi za usklajeno delovanje sistema, bere ukaze in operande iz pomnilnika in rezultate zapisuje v pomnilnik. Procesor izvaja ukaze v aritmetično logični enoti (ALE), pri čemer si pomaga z registri (na primer sledenje toku programa, shranjevanje vmesnih rezultatov). Pomnilnik hrani podatke - ukaze in operande, vhodno-izhodne enote pa prenašajo podatke med procesorjem in pomnilnikom ter zunanjim svetom.
Dolgo časa je bil v računalniku en sam procesor ali centralna procesna enota (angl. Central Processing Unit, CPU), ki je z leti postajal vse zmogljivejši. Z rastjo potreb po procesorski moči in večji energijski učikovitosti, so procesorje razdelili na več jeder (angl. core), ki delujejo vzporedno in si delijo skupni pomnilnik. Dodatno imajo nekatera jedra podpora za vzporedno izvajanje ukazov, govorimo o nitih na nivoju strojne opreme (angl. hardware threads) oziroma hkratnem večnitenju (angl. simultaneous multithreading, hyper-threading). Vozlišča v današnjih računalniških gručah imajo več rež za procesorje (angl. socket). Vsi ti procesorji s svojimi jedri delujejo vzporedno in si delijo skupni pomnilnik, ki je zaradi večje učinkovitosti porazdeljen med procesorje. V mnoga računska vozlišča gruče NSC so na primer vgrajeni po štirje tesno povezani procesorji AMD Opteron 6376, vsak od njih ima po 16 jeder, skupaj ima vozlišče torej 64 jeder. Računska vozlišča v gručah Maister in Trdina imajo po 128 jeder.
Moderno računsko vozlišče z dvema procesorskima režama, pomnilnikom in množico grafičnih procesnih enot prikazuje spodnja slika.
Grafične procesne enote
Nekatera vozlišča so dodatno opremljena s pospeševalniki izračunov. Danes se kot pospeševalniki največ uporabljajo grafične procesne enote. Osnovna naloga grafičnih kartic je razbremenitev procesorja pri izrisovanju grafike na zaslon. Pri izrisovanju na zaslon morajo za miljone zaslonskih točk opraviti množico neodvisnih izračunov. Kadar ne izrisujejo na zaslon, pa lahko samo računajo. Govorimo o splošno-namenskih grafičnih procesnih enotah (angl. General Purpose Graphics Porcessing Units, GPGPU). Odlično se odrežejo vedno, ko moramo narediti množico podobnih izračunov na veliki količini podatkov z malo odvisnostmi. Na primer pri globokem učenju v umetni inteligenci in pri obdelavi videposnetkov.
Arhitektura grafičnih procesnih enot se precej razlikuje od arhitekture običajnih procesorjev. Zato moramo za učinkovito izvajanje programov na grafičnih procesnih enotah obstoječe programe močno predelati.