Cos’è l’High Performance Computing (HPC)
L’espressione High Performance Computing viene usata per identificare l’utilizzo di sistemi di elaborazione di grande potenza che sono costituiti dalla combinazione di un elevato numero di nodi di elaborazione.
A seconda dell’architettura scelta, questi nodi possono essere composti singoli processori oppure da veri e propri computer indipendenti e collegati tra loro in reti ad alta velocità.
Approcci infrastrutturali all’High Performance Computing
Tradizionalmente gli approcci tradizionali alla realizzazione di un sistema di HPC sono due:
- Cluster Computing: in quello più semplice del cluster computing si combina la capacità elaborativa di un insieme di computer che comunque possono anche operare autonomamente;
- Massive Parallel Processing: nell’approccio meglio definito di elaborazione parallela massiva (MPP, Massive Parallel Processing) si combina invece la potenza di decine o centinaia di processori che sono fisicamente collocati in un unico sistema fisico.
Il concetto di HPC è abbastanza generico da comprendere i due approcci descritti e anche altri, come ad esempio il quantum computing, perché sottolinea essenzialmente la disponibilità di elevata potenza elaborativa.
È spesso anche sinonimo di supercomputing, per quanto a rigor di termini si intenda come supercomputer un ristretto gruppo di sistemi sviluppati ad hoc che operano alla massima potenza oggi raggiungibile, mentre con HPC si intendono sistemi sì molto potenti ma che sono comunque normali prodotti commerciali. Le applicazioni sono spesso le stesse: ricerca scientifica, progettazione tecnica, simulazione di realtà complesse, analisi su grandi quantità di dati, machine learning.
In questa fase del mercato le soluzioni commerciali di HPC vanno prevalentemente nella direzione del cluster computing, che oggi si realizza concretamente con sistemi ad alta densità in cui sono ospitate decine di server rack collegati fra loro in architetture di converged infrastructure.
Leggi anche: l’incredibile infrastruttura IT del CERN
Queste configurazioni possono ospitare quindi decine o centinaia di processori da server e di conseguenza centinaia o migliaia di core di elaborazione.
Hardware dedicato per l’High Performance Computing
Sempre più i sistemi di HPC fanno anche uso di acceleratori che affiancano le CPU vere e proprie per velocizzare le operazioni di calcolo. Si tratta spesso di GPU, data la loro potenza elaborativa e l’alto numero di core, oppure – nelle applicazioni più sofisticate – chip FPGA (Field Programmable Gate Array) la cui organizzazione interna può essere adattata di volta in volta in base allo specifico task da compiere.
Per ottenere i risultati migliori dai sistemi di HPC è necessario che la comunicazione tra i nodi e l’accesso alle risorse condivise, tra cui in primo luogo lo storage, siano il più possibile fluidi. Per questo le comunicazioni tra i nodi avvengono mediante tecnologie a larga banda, come ad esempio Infiniband, mentre lato software si adottano filesystem e piattaforme di gestione dei dati in grado di gestire l’accesso allo storage e ai dati da parte di molti nodi contemporaneamente.
Un altro problema da affrontare nelle architetture di HPC basate su sistemi rack ad alta densità è la dissipazione termica dei nodi, motivo per cui diversi sistemi di HPC adottano il raffreddamento a liquido.