Back

Il supercalcolo universitario (e la ricerca su macchine altrui)

IBM Blue Gene Computer ad Argonne - fonte wikimedia
IBM Blue Gene Computer ad Argonne - fonte wikimedia

Da una domanda di Gabriele Soranzo.

Il mondo informatico si evolve rapidamente per i consumatori. Ma nonostante questo determini prodotti sempre nuovi e con funzionalità differenti sugli scaffali dei negozi, non rende automaticamente obsoleto l’utilizzo tradizionale di sistemi di calcolo massivo. Al contrario il “supercalcolo” svolto in sistemi appositamente costruiti per l’elaborazione di grandi dati è sempre più usato per le esigenze della ricerca e industria moderna.

Le istanze di calcolo estremamente parallelizzate che utilizzano migliaia di processori per giorni sono necessarie per simulare il nucleo atomicoalgoritmi di reti neurali, quindi parte fondamentale della vita di ricerca è l’utilizzo di tali macchine, e di converso la richiesta di accesso e usufrutto.

Il mondo del calcolo è tanto vario quanto è possibile immaginarlo, vengono utilizzati da cellulari a suddette macchine di supercalcolo, e di conseguenza una certa richiesta di potenza può venire soddisfatta sia da privati cittadini che mettono a disposizione i propri computer e smartphones (visitate Boinc per contribuire!), che industrie (ad esempio amazon), che centri statali e universitari appositamente dedicati al supercalcolo (in Italia specialmente il cineca).

Limitandoci ai supercalcolatori, quando un ricercatore necessita di grande quantità di potenza, deve solitamente farne richiesta presso i centri affiliati alla sua università. Molti ricercatori hanno del denaro assegnato alla ricerca vinto attraverso bandi o assegnato con il contratto. Tuttavia questo fondo è solitamente destinato per comprare rivelatori e materiale di ricerca, e viaggi per collaborazioni e conferenze. Date le ristrette dei finanziamenti alla ricerca il mondo accademico vede con diffidenza l’acquisto di materiale che il sistema universitario (e affiliazioni) stesso può fornire.

Quindi sebbene in linea di principio i fondi di ricerca siano sufficienti per acquistare buone potenze di calcolo (i fondi di ricerca tipicamente variano tipicamente da poche migliaia a un milione di euro anno per una singola iniziativa scientifica/gruppo), non si riesce a fornire una giustificazione sufficiente per farlo in molte legislazioni (io non conosco nessuno che sia riuscito a farsela autorizzare).

Normalmente quindi si procede a scrivere un Proposal, che è una richiesta ad un ente che è proprietaria di certe macchine particolari (siano esse acceleratori di particelle o supercomputer), per potere utilizzare una certa risorsa motivata da un obiettivo scientifico. Ad esempio è possibile presentare una richiesta per avere potenza di calcolo per uno studio teorico oppure giorni di acceleratore di particelle per uno studio sperimentale.

A quel punto una commissione vaglierà la richiesta e stabilirà quanto e _come _essa verrà soddisfatta. Tipiche richieste variano da qualche giorno a qualche settimana di fascio di particelle, oppure da centinaia di migliaia a miliardi di ore di CPU.

A quel punto, nel caso di laboratori come per gli acceleratori di particelle, saranno stabilite le date a disposizione, e il gruppo viaggerà per eseguire l’esperimento al laboratorio prescelto, dividendosi i turni e spesso portando alcuni dei propri strumenti. Invece nel caso di centri calcolo le risorse sono spendibili comodamente collegandosi in remoto da casa (e rovinando l’immagine del cervellone di turno che corre verso il supercomputer con la chiavetta in mano), ma devono essere spese tutte entro una scadenza, solitamente annuale ma a volte più breve.

Il ricercatore avrà quindi realizzato un programma, e utilizzerà il suo monte ore per simulare un evento fisico. A seconda delle sue necessità di calcolo avrà chiesto risorse adeguate, tuttavia non è così tanto semplice. Infatti un algoritmo andrà parallelizzato efficientemente, per disporre delle grandi risorse.

Un supercomputer è un sistema di diversi computer, detti nodi, ognuno dei quali contenenti molti processori, quindi un po' più potente del desktop o laptop che avete a casa che verosimilmente contiene un singolo processore (anche se con molti core).

In questa figura uno schema semplificato. Un compito viene suddiviso fra 4 istanze MPI e ognuna di queste viene suddivisa in 3 thread openMP.

In questa figura uno schema semplificato: un compito viene suddiviso fra 4 istanze MPI (ad esempio i processori all’interno di un nodo) e ognuna di queste viene suddivisa in 3 thread (ovvero il carico fra i vari core di un singolo processore) openMP.

Quando si esegue un programma “massivamente parallelo”, esso funziona su diversi nodi per volta ognuno dei quali dotato (solitamente) 4 processori (ed eventualmente acceleratori grafici). Le comunicazioni si fanno molto intricate: la comunicazione all’interno dello stesso core è più veloce che fra due core dello stesso processore che è più veloce che fra due processori dello stesso nodo che è più veloce che fra due nodi diversi. Di conseguenza la progettazione di un algoritmo che efficientemente scali su grandi parallelizzazioni, con diversi gradini di velocità e complicazione, non è sempre banale né fattibile.

Simulazione di collasso di supernova

Simulazione di collasso di supernova del gruppo di Monaco

Le citate _ore _che il ricercatore ottiene sono le ore per ogni singolo processo (core). Ad esempio si può fare richiesta scrivendo un progetto (che porta via qualche giorno di lavoro a qualche persona), si ottengono 5 milioni di ore sul cluster Dirac Complexity che possono essere usate come 2 mila 500 ore su 128 nodi (circa metà di tutto il centro).

Il risultato può essere una simulazione spettacolare come questa, oppure qualcosa di molto meno spettacolare ma altrettanto interessante scientificamente come le tante che spesso descrivo da queste parti!

Per commenti, scrivimi ad andrea (punto) idini (at) gmail (punto) com. Static web, no cookies collected.