Come costruire un super computer in cluster a casa

Al suo interno, un supercomputer non è altro che un gruppo di computer minori collegati tra loro da cavi molto veloci. Ogni singolo computer è chiamato nodo, e ogni cavo un collegamento. Un supercomputer molto semplice potrebbe essere semplicemente il tuo desktop e il tuo portatile collegati insieme da un cavo ethernet. Tuttavia, questo non è molto utile - quindi concentrerò il resto di questa risposta su come costruire un supercomputer utile.

Prima di tutto, avrete bisogno di capire per cosa volete usarlo - si tratta di calcoli scientifici e simulazioni che eseguono molti degli stessi calcoli contemporaneamente? O calcoli continui, quasi in tempo reale, che si pubblicano sul web? O volete semplicemente accelerare un videogioco? Tutti questi fattori influenzano l'hardware da acquistare e il software da installare, quindi è molto importante capire bene lo scopo del vostro problema fin dall'inizio.

Dopo questo, dovrete comprare l'hardware. In tutti i casi, vorrete una CPU con un'alta velocità di clock - altrimenti ottenere più nodi è inutile. Se il vostro uso previsto farà un sacco di comunicazione da nodo a nodo, allora vorrete collegamenti veloci. Un'opzione è gigabit o 10-gigabit ethernet - avrete bisogno di comprare cavi e schede di rete che siano compatibili con queste velocità. La fibra ottica è un'altra opzione. Tentate di collegare la struttura fisica della rete nello stesso modo in cui la vostra applicazione la userà. Sarà dividere il problema in elementi finiti e far comunicare ogni nodo solo con il suo vicino? O è un problema di map-reduce che ha molti nodi slave che comunicano solo con un hub centrale?

Se l'applicazione memorizzerà molti calcoli intermedi, vorrete anche una grande quantità di RAM per nodo. Se genererà molti dati, vorrete un fileserver in grado di memorizzare tutto il vostro output. Se la vostra applicazione dovrà funzionare per giorni e giorni senza interruzioni, considerate l'acquisto di un gruppo di continuità (UPS) per i componenti critici. Molte applicazioni di lunga durata usano i chequepoints - la capacità per loro di salvare il loro stato a metà dell'esecuzione, per riprendere nel caso di un'interruzione o di un arresto programmato. Se avete intenzione di fare uso di questo, sarà più veloce se installate sufficiente storage permanente su ogni nodo separato.

Se la vostra applicazione esegue molti piccoli calcoli separati simultaneamente, allora è un buon candidato per l'uso della GPU per scopi generali (GPGPU) - vedi sotto per un esempio del software necessario. Se avete intenzione di fare questo, assicuratevi di installare potenti schede grafiche che siano compatibili con la piattaforma GPGPU che intendete utilizzare.

L'ultima considerazione sull'hardware è la potenza e il raffreddamento. I supercomputer consumano molta energia e generano molto calore. Se è relativamente piccolo, potete usare l'aria condizionata di casa vostra, ma tenete presente che questo aumenterà significativamente la vostra bolletta elettrica. Assicuratevi che la potenza massima per la vostra casa, e per ogni presa a muro che intendete usare, e la capacità del vostro fusibile siano sufficienti a sostenere il sistema che intendete eseguire. Diffidate di collegare tutto a una barra di alimentazione - sono fatti per lampade e tostapane, non per i supercomputer.

Ora che avete impostato tutto l'hardware, dobbiamo configurarlo per farlo funzionare come un supercomputer! La prima cosa da determinare è il sistema operativo. Linux è uno standard industriale, di solito una varietà di Red Hat come CentOS - tuttavia i nuovi utenti HPC spesso trovano Ubuntu più accessibile. Vorrai installare una piattaforma MPI (Message Passing Interface), la più popolare è OpenMPI. Questo permette alle applicazioni di comunicare tra i diversi nodi. Se avete una potente GPU, vorrete anche installare la piattaforma CUDA di NVIDIA, che permette alle applicazioni di usare la GPU per fare calcoli generici.

Le applicazioni per il calcolo scientifico sono per lo più scritte in FORTRAN e C, quindi vorrete installare compilatori e un ambiente di runtime adatto per questi, così come qualsiasi libreria numerica che può essere utilizzata dalle applicazioni desiderate. Non posso sottolineare abbastanza l'importanza di buone librerie HPC - sono ampiamente sintonizzate per ottenere le migliori prestazioni per quello che fanno, quindi vi faranno risparmiare tempo e guadagnare velocità rispetto a scrivere il vostro codice per le funzioni comunemente eseguite.

Ci sono un sacco di considerazioni! Se avete intenzione di fare qualche calcolo serio, tutto questo può diventare un costo formidabile. Dal punto di vista economico, la maggior parte degli aspiranti proprietari di supercomputer sta meglio se utilizza un sistema esterno come Amazon Cloud Compute per il proprio lavoro. Le eccezioni sono:

  1. Se volete costruirlo per il gusto di costruirlo - un obiettivo lodevole, fatelo!
  2. Se pensate di farlo funzionare a piena capacità per un lungo periodo di tempo - in questo modo il costo operativo risparmiato può compensare il costo capitale dell'acquisto dell'attrezzatura.
  3. Se hai bisogno di una velocità di trasferimento dati molto alta tra la tua casa e il computer

A meno che l'opzione 1 non sia applicabile a te, guarda bene il tuo budget, e le alternative, prima di impegnarti a costruire il tuo. Buona fortuna!