Data di nascita: | 11 Luglio 1968 |
Luogo di nascita: | Erice (TP) |
Nazionalià: | Italiana |
Email: | schifano at fe.infn.it |
RearchId: | http://www.researcherid.com/rid/C-3555-2012 |
Le simulazioni numeriche sono da anni ampiamente utilizzate in parecchie aree della scienza, ed in particolare in quei casi in cui la complessità del sistema da studiare non permette di ottenere predizioni significative con tecniche di calcolo analitiche. Nell'ambito della fisica teorica, alcuni esempi significativi sono rappresentati dalla teoria della Cromodinamica Quantistica (QCD), basata sulla teoria di Gauge su reticolo (LGT), per lo studio delle interazione delle particelle elementari della materia, dalle Equazioni di Boltzmann per lo studio della fluidodinamica, e dalla teoria degli Spin Glass per lo studio di sistemi disordinati complessi, come i materiali ferro-magnetici. Predizioni quantitative per questi problemi possono essere ottenute solamente mediante estensive simulazioni Monte Carlo, per le quali è necessario utilizzare sistemi ad elevata potenza di calcolo e massicciamente paralleli.
L'attività di ricerca può divisa in due filoni principali:
Nell'ambito dei progetti APE sono stato coinvolto nelle seguenti attività:
Scopo del progetto è stato quello di realizzare un sistema di calcolo parallelo ottimizzato per simulazioni Monte Carlo di sistemi altamente disordinati come gli Spin Glass, rilevanti nell'area della fisica della materia dello stato solido (condensed matter physics) e dell'ottimizzazione.
Le prestazioni delle simulazioni dei sistemi di calcolo commodity non sono sufficienti a soffisfare le richieste computazionali per lo studio dei sistemi di Spin Glass. Tale limitazione è principalmente dovuta al fatto che i kernel di calcolo degli algoritmi di simulazione effettuano prevalentemente operazioni su variabili singolo bit (rappresentanti i valori degli spin) per cui una implementazione su processori con architetture standard risulta poco efficiente. Inoltre, l'elaborazione di un singolo spin richiede il valore di almeno altri 7 valori single-bit, il numero esatto dipende dall'algoritmo di simulazione utilizzato, per cui la banda passante verso la memoria limita il numero di spin che possono essere aggiornati in parallelo.Janus è un sistema parallelo eterogeneo composto da 16 schede ognuna delle quali contiene 16 processori FPGA-based, denominati scientific processor (SP), e 1 processore di I/O anch'esso realizzato mediante una FPGA. L'idea di Janus è quella di permettere l'implementazione di algoritmi di simulazione Monte Carlo di spin glass in hardware, ovvero su un dispositivi elettronici le cui funzionalità sono programmabili mediante un linguaggio di descrizione hardware come il VHDL. In questo modo è possibile definire ed allocare su una singola FPGA circa un migliaio di motori di update, ognuno dei quali effettua calcoli su singoli bit ed ha accesso ad una memoria privata.
Nell'ambito del progetto Janus ho contribuito alla definizione dell'architettura del sistema, e sono stato responsabile per il coordinamento dello sviluppo del sistema di IO, per scambiare dati da e verso l'host. Ho quindi sviluppato un modulo che realizza una interfaccia gigabit ethernet, un driver linux, un protocollo di comunicazione, e una libreria di funzioni che permettono all'utente di caricare il programma sui processori della macchina, monitorare la loro esecuzione ed effettuare il download e l'upload dei dati.A Febbraio 2008 è stato assemblato presso l'istituto BIFI un sistema Janus di 256 processori. L'intero sistema ha una potenza di calcolo complessiva, per applicazioni di simulazione di Spin Glass, di circa 75 Tera-ops, ed un rapporto performance per Watt di circa 7.5 Giga-ops/Watt.
Janus ha permesso per la prima volta di simulare un sistema di Spin Glass per un tempo dell'ordine di 1 secondo, contribuendo a verificare e capire meglio i risultati sperimentali. Tali risultati sono stati pubblicate su varie referenze. In merito a tali pubblicazioni desidero precisare che, trattandosi di pubblicazioni di pura fisica, sono stato inserito nella lista degli autori come segno di riconoscimento della comunità di Spin Glass per il mio contributo dato nella realizzazione del sistema di calcolo utilizzato per le simulazioni Monte Carlo.
Pubblicazioni rilevanti per questa attvità sono:
Tale studio ha dimostrato che è possibile definire un'equazione di bilanciamento la cui soluzione permette di partizionare in modo ottimale l'area del chip tra unità di storage (memoria on-chip) e unità funzionali. L'equazione di bilanciamento può essere utilizzata sia per valutare se l'architettura di processori esistenti soddisfa i requisiti computazionali di applicazioni LQCD, sia come linea guida per la progettazione di processori application-driven di futura generazione.
I risultati di tale ricerca hanno messo in evidenza che l'architettura del processore Cell, sviluppato inizialmente per il mercato dei video-game, se opportunamente programmato, soddisfa con alta efficienza le richieste computazionali di applicazioni LQCD, ed hanno dato origine alla proposta di progetto QPACE, di cui sono co-autore, per la realizzazione di un sistema di calcolo Petaflop scaling ottimizzato per applicazioni LQCD.
QPACE è un progetto finanziato dal governo tedesco, tramite il programma SFB, e da IBM, ed è iniziato formalmente a Gennaio 2008. Hanno partecipano al progetto le Università di Regensburg, Wuppertal, Ferrara e Milano, l'istituto JSC di Juelich, e l'istituto DESY di Zeuthen. Scopo del progetto è quello di sviluppare un sistema di calcolo parallelo per applicazioni scientifiche di fisica teorica, ed in particolare per applicazioni di Lattice QCD, interconnettendo i processori IBM-PowerXCell8i mediante una griglia mesh-3D derivante dall'esperienza del progetto apeNEXT.
Su una scheda di calcolo QPACE sono stati integrati un processore IBM-PowerXCell8i, 4 GB di memoria, ed una FPGA, un dispositivo elettronico programmabile a livello hardware, per supportare le funzionalità di IO del processore, sia verso la rete di interconnessione mesh-3D, sia verso l'esterno. Il processore PowerXCell8i è un processore multi-core con una potenza di calcolo di picco di 100 Gflop (peak double-precision), e con un alto rapporto Flops per Watt, rilevante per assemblare centinaia di chip in un volume di spazio di qualche metro cubo.
Il processore di comunicazione, esterno al processore di calcolo, è stato implementato su una FPGA, e si interfaccia da un lato con il processore di calcolo e dall'altro lato è connesso a sei link di comunicazione, ciascuno con una banda di trasferimento di 1GB/s, per link e per direzione.
Nell'ambito di questo progetto mi sono occupato di progettare ed implementare la logica del processore di rete, e il protocollo di comunicazione. Il processore di rete, chiamanto torus, è implementato su una FPGA, un dispositivo elettronico le cui funzionalità hardware sono programmabili mediante un linguaggio di programmazione di descrizione hardware come il VHDL. Il protocollo di trasferimento è stato implementato direttamente in hardware, e non prevede alcuna gestione del livello TLP (Transaction Layer Packet) da parte del sistema operativo. I dati sono trasmessi in pacchetti di 128 Bytes insieme ad un header ed un CRC per il controllo degli errori. In ricezione il CRC viene ricalcolato, confrontato con quello trasmesso insieme al pacchetto, ed viene inviato al trasmittente un feedback positivo o negativo corrispondente al risultato del confronto. In caso di feedback negativo il trasmittente provvede ad inviare nuovamente i pacchetti a partire da quello per cui ha ricevuto un feedback negativo. Il risultato ottenuto è un sistema di trasferimento affidabile con un bit error rate inferiore a 10-14, con una banda passante di 1 GB/s per link e per direzione, ed una latenza di trasmissione inferiore a .5 micro-secondi.
Ad Agosto 2009 sono stati installati due prototipi di macchine QPACE da 1024 processori (8192 cores) ciascuna, con una potenza di calcolo di picco di 200 Tflops in double-precision, ed una potenza elettrica dissipata massima di 280 KWatt.
A novembre 2009 e Giugno 2010 il sistema QPACE e' stato giudicato come il miglior sistema al mondo con il migliore rapporto Flops/Watt (classifica Green500, green-500 list Nov. 2009, green-500 list Jun 2010).
Pubblicazioni rilevanti per questa attività sono:
Nell'ambito di questa attività ho preso in considerazioni due applicazioni di fisica teorica: un modello di simulazione dei fluidi basato su metodo Lattice Boltzmann, e un modello di simulazione di Spin Glass.
Inizialmente l'attività è stata principalmente svolta sul processore IBM Cell Broadband Engine. Ho implementato un algoritmo di simulazione di un modello di fluidodinamica basato sul metodo di Lattice Boltzmann 2D e 3D su processore multi-core IBM-Cell. Lo studio ha esplorato varie strategie di parallelizzazione, di allocazione della memoria e di scheduling delle istruzioni. Successivamente ho preso in considerazione anche i processori multi-core della classe Nehalem e Sandybridge, e i processori grafici NVIDIA Tesla C1060 e C2050.
Nell'ambito di questa attività ho coordinato l'implementazione e ottimizzazione di un codice di fluido-dinamica basato su un modello Lattice Boltzmann D2Q37 recentemente sviluppato. Ho implementato il codice prima su un cluster di nodi basati su processori multi-core Intel Nehalem, e successivamente su un cluster di nodi basato su due schede GP-GPU della classe C2050. Entrambe le implementazioni utilizzano una grande frazione della potenza di calcolo del processore, hanno una efficienza di esecuzione tra il 40% e il 50%, e scalano su decince di nodi.
Nel 2012 ho proposto all'INFN il progetto Computing on Knights Architecture (COKA) per lo studio delle performance di calcolo dei processori Many Integrated Core (MIC) sviluppati da Intel. Il progetto è stato finanziato e svolgo il ruolo di coordinatore nazionale. Il progetto studierà l'implementazione e l'ottimizzazione di applicazioni sia di fisica teorica che di fisica sperimentale.
Pubblicazioni rilevanti per questa attività sono: