“Utilizzo di processori grafici nel trigger di NA62” Incontro di lavoro della CCR INFN Napoli 26.1.2010 Gianluca Lamanna Scuola Normale Superiore and INFN Pisa Perché utilizzare le GPU nel trigger? Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 PES 2010: FC Barcellona VS Liverpool Anello ricostruito dall’online monitor durante test beam del rivelatore Cherenkov di NA62 (RICH) GPU = Graphics Processing Unit Architettura idonea al calcolo parallelo ottimizzata per applicazioni di grafica. Può essere adattata al calcolo scientifico? SI!!! E al realtime? Forse! … velocità? … latenza? … stabilità? … robustezza? … affidabilità? 2 L’esperimento NA62 NA62 CERN a LHC occupatum 2763 ab Urbe Condita M.Sozzi 3 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 NA62: Introduzione Previsione nel modello standard con piccolo errore (“golden mode”) Ottima capacità di discriminazione tra modelli BSM Una sola traccia nello stato finale Eventi di fondo diversi ordini di grandezze più frequenti Buon sistema di veto e di PID Fascio adronico molto intenso Misura attuale con 7 candidati e errore totale di ~65% NA62 è un esperimento su targhetta BR(K+→pnn)TH=(8.22±0.84) ·10-11 fissa all’acceleratore SPS del CERN Lo scopo principale è la misura del decadimento ultrararo K+→p+nn E’ in fase di costruzione e si prevede l’inizio della presa dati nel 2012 24 istituzioni, ~130 persone INFN: Ferrara, Firenze, Frascati, Napoli, Perugia, Pisa, Roma1, Roma2, Torino 4 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 NA62: Introduzione Fascio non separato ad alta intensità: identificazione positiva dei K nel fascio (CEDAR) Misura di impulso e direzione dei K nel fascio (GTK) a ~1 GHz Misura accurata dell’impulso dei prodotti di decadimento in vuoto (STRAW) Sistema di veto ad alta efficienza (LAV+LKR+IRC+SAC) Identificazione del tipo di particella (RICH+MUV) Ricostruzione cinematica della massa mancante: definizione di due regioni in massa mancante PK Fondo cinematicamente costretto: 92% Fondo non cinematicamente costretto: 8% Fascio molto intenso: sistema di readout e trigger idonei Scopo NA62: O(100) eventi in 2 anni di presa dati + altre misure importanti nei K + ricerca di nuova fisica in decadimenti proibiti Pp pK Pn Pn 5 READOUT & TRIGGER 6 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 NA62 trigger Contesto sperimentale: Esperimento su targhetta fissa → no clock dalla macchina (eventi distribuiti nel burst) L’elettronica di Readout può essere posta vicino al FE per ogni detector No importanti problemi di dose Richieste al Readout & Trigger: decadimenti ultrarari → alto rate, alta efficienza di trigger, bassa probabilità di veto random no limitazione dal flusso di protoni → scalabilità in termini di banda Affidabilità dei veti → controllo delle inefficienze di lettura a 10-8, lettura senza zero suppression per gli eventi candidati Altri canali di fisica e canali di controllo, aumenti dell’intensità → flessibilità Economicità → utilizzo di soluzioni già esistenti detector Rate (MHz) CEDAR 50 GTK 800 LAV (total) 9.5 STRAW (each) 8 RICH 8.6 LKR 10.5 MUV 9.2 SAC 1.5 Sistema di readout e trigger (TDAQ) completamente integrato e digitale → controllo e misura di inefficienze direttamente sui dati raccolti Hardware custom minimo → possibilità di pieno controllo della catena di trigger e di utilizzo di soluzioni già esistenti (HEP o commerciali) Uniformità tra i detectors → più semplice gestione 7 RICH MUV CEDAR STRAWS 1 MHz 1 MHz L0TP PC PC PC GigaEth SWITCH L2 PC PC PC PC PC PC PC PC PC PC L1 PC L0: Livello 10 MHz hardware. Decisione basata sulle primitive LKR LAV prodotte nelle schede di RO dei detector che partecipano al trigger 1 MHz L1: Livello Software. La decisione è presa su informazioni costruite PC PC al livello del singolo detector. L2: Livello software. Le informazioni provenienti da diversi PC PC PC PC detector sono messe insieme L0 O(KHz) L0 trigger Trigger primitives Data PC PC PC PC CDR EB Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Schema generale del trigger di NA62 8 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Sistema integrato Trigger & DAQ L’acquisizione avviene tramite la TELL1, una scheda “general purpose” sviluppata per LHCB (EPFL Lausanne) Nella stessa scheda si definiscono le primitive di trigger 5 FPGA (Altera Stratix) permettono una completa configurazione 4 connettori permettono di aggiungere daughter cards secondo le necessità La maggior parte dei detector Standard GBE network card (4 links) per la utilizzano TDCs raccolta dei dati in uscita Una mezzanina è stata sviluppata dal gruppo di Pisa, per fornire un’alta risoluzione temporale (100 ps) usando gli HPTDC (CERN) con un’alta densità di canali Una TDCB contiene 4 HPTDC per un totale di 128 canali, 4 daughter boards per TELL1 = 512 canali 9 L0 trigger Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Le primitive di trigger sono prodotte direttamente nella TELL1 con gli stessi dati destinati al RO Esempio: molteplicità in bin di tempo di 3.125 ns per identificare positivamente le particelle cariche (nel RICH o in un possibile odoscopio carico) Tramite un canale GBE le primitive sono inviate al L0TP che prende la decisione di trigger, con una latenza totale di 1ms Diverse soluzioni per L0TP in studio: PC, TELL1 o custom I dati aspettano la decisione di trigger nelle DDR della TELL1 La memoria delle TELL1 permette una latenza (per tutti i detector con TDC) molto più lunga (anche l’intero burst). Ma non tutti i detector hanno TELL1 (GTK & LKR) La condizione di trigger: RICH+!MUV+!LKR Permette una riduzione di un fattore 10 (da 10 MHz a 1 MHz) 10 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Livelli software Il livelli di trigger successivi sono completamente software Il L2 è costituito da una farm di PC dopo uno switch GBE Ogni PC (o gruppo di PC) del L1 riceve i dati e costruisce primitive relative al solo detector cui si riferisce (ex: L1-STRAWS calcolano l’impulso delle tracce, L1-RICH costruisce i cerchi, …) Le informazioni di tutti i detector sono messe insieme per calcolare grandezze più complesse (ex: massa mancante, energia totale, …) Il numero di PC del L1 dipende dalla quantità di dati e dal rate all’uscita del L0 La latenza del L2 non è definita, ma tutti i dati devono essere trattati entro l’arrivo del burst successivo (circa 16 s) Il rate totale dopo i livelli software sarà dell’ordine di decine di kHz La latenza del L1 non è definita, ma si assume che tutti i dati siano accettati o rigettati entro il termine del burst (circa 6 s) 11 UTILIZZO DEI PROCESSORI GRAFICI (GPU) 12 NA62: perché un trigger con GPU? Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 In un esperimento di ricerca di eventi rari un trigger efficiente e selettivo è essenziale Alta flessibilità: per permettere l’acquisizione di altri canali Alta efficienza: per non pregiudicare la statistica totale Alto rigetto: per non saturare la banda e i dischi con dati di scarso interesse Selezione di alta qualità fin dai primi livelli del trigger Processori di calcolo nei Livelli più bassi del trigger!!! 13 Supercomputing VS Real Time Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Calcolo scientifico Pochi dati da trasferire in input Tempo di esecuzione fluttuante Parallelizzazione sull’algoritmo Latenza poco rilevante Calcolo con alta precisione Tempo di esec. dipende dalla complessità Grande utilizzo della memoria video Real Time → → → → → → → Ampia banda per trasferimento dati in input Tempo di esecuzione quasi-deterministico Parallelizzazione sugli eventi Latenza ridotta Calcolo con precisione sufficiente Tempo di esecuzione indipendente dal dato Limitato utilizzo della memoria video 14 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 NVIDIA Tesla C1060 (GT200) Gflops1200 GPUs 1 Tesla GPU Single Precision Performance 933 Gigaflops Double Precision Performance 78 Gigaflops Memory 4 GB DDR3 Memory speed 800 MHz Bandwidth 102 GB/s NVIDIA GPU Intel CPU 1000 Tesla 10series 800 600 Tesla 8series 400 200 0 Intel Pentium 4 3.2 GHz 22/09/2002 04/02/2004 Intel Pentium 4 Dual-core 3.0 GHz Intel Core2 Dual-core 3.0 GHz 18/06/2005 31/10/2006 Intel Xeon Quad-core 3 GHz 14/03/2008 15 Uso in real time come trigger Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 I dati sono portati attraverso GBE (o GBE custom, vedi Il kernel inizia l’esecuzione sotto) alla RAM del PC Il PC trasferisce un pacchetto di N dati da esaminare alla scheda video La latenza massima del trigger fissa il tempo totale in cui la decisione di trigger deve essere presa Il rate di eventi fissa la velocità di elaborazione del singolo evento I tempi di trasferimento possono essere trascurati rispetto al tempo di esecuzione in quanto questa può essere contemporanea al trasferimento (streams) Il tempo per singolo evento può essere minimizzato facendo elaborare più eventi contemporaneamente Esempio: se il tempo di esecuzione di 1000 eventi è 1 ms, questo va bene per un trigger con latenza 1 ms (più qualcosa) e con rate di eventi di 1 ms/1000 → 1 MHz I risultati arrivano sul PC e vengono mandati al Trigger Processor t Il kernel finisce l’esecuzione. I risultati vengono trasferiti sul PC 16 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Possibile schema di trigger in NA62 Le GPU possono essere impiegate al L1 & L2 (software) La latenza non è definita, il rate non è un problema Affidabilità e stabilità Utilità: diminuzione delle dimensioni delle farm di L1 e L2 Già teoricamente possibile! RICH MUV STRAWS L0TS PC GP U PC GP U PC GP U L0 trigger Trigger primitives Data to L1 RICH MUV GPU L0TS GPU STRAWS L0 trigger primitives Le GPU possono essere impiegate al L0 La latenza è di 1 ms, il rate di eventi è di 10 MHz (=100 ns) sui principali detector Affidabilità e stabilità Utilità: selezione più efficiente a L0, possibilità di raccogliere eventi altrimenti eliminati dalla presa dati Trigger Reduced Data Data to L1 17 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Esempio: RICH Il RICH deve separare p/m tra 15 e 35 GeV Fattore di soppressione dei m: almeno 100 Risoluzione temporale : 100 ps Tubo di 17 m x 3 m, Neon 1 atm, specchio a mosaico (18 specchi esagonali) Focalizzazione su due spot da 1000 PMTs ognuno Presenza della beam pipe (dopo lo spettrometro) per evitare segnale dalle particelle del fascio p+ beam pipe 1 atm Ne gas mirror 17 m 18 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Esempio: RICH Ricerca di anelli nel rivelatore RICH 2 spot da ~1000 fototubi Ogni cerchio ha in media circa ~20 hits Il raggio è proporzionale alla velocità, il centro è proporzionale all’angolo Rate totale ~10 MHz Contributo proveniente da muoni (paralleli) dell’alone del fascio (~1 MHz ) Possibilità di multipli cerchi La cosa più semplice per individuare la presenza di un cerchio è fare un trigger di molteplicità. E’ stato dimostrato che un trigger di questo tipo, con buona efficienza a qualunque energia, implica un trasporto di dati tra le varie parti del sistema non sostenibile. 19 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Algoritmo 1: Hough Transform Ogni hit è il centro di un cerchio di “test” di raggio assegnato. Il centro del cerchio Cherenkov è il punto comune dei cerchi di test posizione dei PMs → constant memory hits → global memory Prototipi dei cerchi di test → constant memory Spazio 3D per istogrammi nella shared memory (2D XYgrid VS raggio del cerchio di test) Limitazioni a causa delle limitazioni della shared memory Y (16K) Un thread per ogni centro (hits) → 32 threads (in un thread block) per evento Radius Pro: parellizzazione naturale, piccolo numero di thread per evento Contro: impredicibile accesso alla shared memory (conflitti in read & write), uso massiccio della memoria veloce del chip 20 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Algoritmo 2: Problem-optimized multi histos (POMH) Ogni PM (1000) è considerato come centro di un cerchio. Per ogni centro si costruisce un istogramma delle distanze tre il centro e gli hits (<32). L’intero processore è utilizzato per un singolo evento (visto il grande numero di centri): un thread = un centro Il singolo thread deve calcolare poche distanze Molti histogrammi sono calcolati nella shared memory . Non “naturale” per la GPU: non si sfrutta ottimamente la parallelizzazione Non è possibile processare più di un evento contemporaneamente (il parallelismo è completamente sfruttato per accelerare il calcolo) Pro: Operazioni del kernel veloci e semplici Contro: assegnamento delle risorse non naturale; l’intero processore è utilizzato per un solo evento 21 distance Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Algoritmo 3: Device-Optimized multi histos (DOMH) Esattamente lo stesso algoritmo rispetto a POMH, ma con diversa assegnazione delle risorse. Il sistema è sfruttato in un modo più “naturale”: ogni blocco è dedicato a un singolo evento Nella shared memory è costruito un solo istogramma Ogni thread deve processare più di un centro Molti eventi sono processati in parallelo contemporaneamente Più facile evitare conflitti nella shared e global memory 1 event -> M threads (each thread for N PMs) S h a r e d 1 event -> M threads (each thread for N PMs) S h a r e d 1 event -> M threads (each thread for N PMs) S h a r e d G L O B A L M E MO R Y 22 Risultati algo 1 algo 2 algo 3 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 us GPU 12 hits Best ring Hits generated NA62 - G4 MC Diversi step di ottimizzazione preliminare HOUGH e DOMH processano più eventi contemporaneamente, POMH uno solo In HOUGH i conflitti in shared memory sono difficili da gestire Lo spread nell’esecuzione del kernel è intorno al 1.5 us (globale) σ~1.5 us us Algorithm TESLA c1060 Hough 85 us POMH 139 us DOMH 12.4 us 23 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Ottimizzazione di DOMH I due parametri cruciali da ottimizzare sono: N: Numero totale di eventi da processare nello stesso kernel PM: numero di PM da processare nello stesso thread us 8 PMs x Thread Il tempo di esecuzione è lineare con il numero di eventi (si sceglie 1000 eventi) Il minimo per numero di PM si ha su 8 Working Point (N=1000,PM=8) → 10.8 ms/evento Ulteriori ottimizzazioni: arrays dai local registers alla shared memory → 6 ms/evento Ottimizzazione di occupazione → 5.9 ms/evento Ottimizzazione degli Istogrammi in shared memory → 5.0 ms/evento Conflitti nella constant memory → 3.1 ms/evento N events us 1000 events x kernel PM x Thread Tempi di trasferimento dati (per pacchetto): Dati dall’ host alla vram GPU → 70 us Risultati dalla vram GPU all’host → 7 us 24 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Sviluppi futuri Il risultato ottenuto (3.1 us/evento) indica che con una latenza di 3.1 ms e un rate di 320 kHz, il trigger di L0 sarebbe già fattibile a questo livello Per NA62 (latenza 1 ms, rate 10 MHz) è necessario usare 30 GPU (semplice calcolo distribuito) Raggiungere il livello di 1 us/evento sembra fattibile allo stato attuale attraverso nuovi algoritmi in studio Le nuove generazioni di processori video presentano caratteristiche che fanno immaginare almeno un fattore 2 GPUs NVIDIA ATI HD NVIDIA di miglioramento • Passo successivo: studio di altri algoritmi per il RICH e di algoritmi di pattern recognition per lo spettrometro FERMI 5870 TESLA Single Precision Performance 2 Teraflops 2.72 Teraflops 933 Gigaflops Memory 6 GB DDR5 6 GB DDR5 4 GB DDR3 Memory speed ? 1.2 GHz 800 MHz Bandwidth 230 GB/s 153 GB/s 103 GB/s Stream processors 512 1600 240 25 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Cosa manca per realizzare il L0? La parte non deterministica di questo sistema è dovuta alla necessità di usare un PC per poter controllare il processore grafico Pensare di impiegare un sistema custom basato su FPGA senza PC è impossibile al momento (così come pensare di portare i dati sulla memoria video senza passare dalla RAM, almeno su TESLA) Il processore del PC deve fare il minor lavoro possibile 2 soluzioni per ridurre il contributo della CPU: Linux Real-Time (o simile) su macchina bi-processore Scheda GBE intelligente (con FPGA) connessa su PCI-ex gen2 per “spacchettare” i dati e fornirli direttamente alla RAM limitando il lavoro del processore Tale scheda, in versione prototipale, è stata sviluppata dal gruppo TDAQ di NA62 della sezione di Roma2 26 Benefici del trigger GPU per NA62 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Molti vantaggi connessi all’uso di GPU a livello di trigger: Approccio quasi-triggerless : la maggior parte dei dati sono processati in PC (a L0 e/o L1/L2) Ridotto numero di PC nelle L1/L2 farm (calcolo scientifico quasi standard) Possibilità di disegnare un livello di trigger L0 molto versatile per raccogliere selettivamente diversi canali di fisica contemporaneamente Scalabile e Upgradabile: compatibile con upgrade di luminosità o estensioni del detector Sistema facilmente adattabile ad altri esperimenti Soluzione a basso costo, basata su tecnologia commerciale. a b RICH STRAWS RICH(r,(x,y)) +mp → (b, pp) + ptkick → (a,pp) + K → mm2 27 Una possibile nuova architettura Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Standard trigger system FE digitiz ation pipeline L1 PCs L0 FE Trigger primitives Trigger processor Custom HW “Triggerless” Commercial PCs FE digitiz ation PCs PCs Commercial GPU system “quasi-triggerless” with GPUs FE L1 Digitization + buffer + (trigger primitives) L0 PCs+GPU PCs+GPU 28 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Conclusioni I processori grafici stanno dimostrando grandi capacità nel calcolo scientifico I recenti miglioramenti in termini di potenza di calcolo e conseguente riduzione della latenza, permettono di pensare ad applicazioni Real time L’esperimento NA62, dedicato alla misura del decadimento raro K→pnn, potrebbe beneficiare molto dell’utilizzo nei primi livelli di trigger di una selezione basata su primitive di alta qualità, definite per mezzo di calcolo veloce su GPU L’impiego nei livelli software a latenza indefinita non presenta particolari problemi L’impiego nei livelli hardware è molto promettente, anche in vista dei prossimi sviluppi tecnologici nelle schede video Grande vantaggio connesso all’utilizzo di una tecnologia commerciale in rapido e continuo sviluppo (Computer grafica, video games, …) La crescita in potenza e il prezzo competitivo, insieme con la versatilità dell’approccio, rendono l’idea di utilizzare le GPU molto interessante per scopi di trigger in esperimenti di fisica delle alte energie! 29 Per ulteriori informazioni: [email protected] [email protected] [email protected] 30 SPARES Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Scopi NA62 Scopo principale è misurare il BR(K→pnn) con O(100) eventi, ~10 % di fondo, in 2 anni di presa dati Diverse altre misure importanti per la determinazione di parametri nella descrizione della dinamica delle interazioni adroniche a bassa energia Ricerca diretta di processi esotici (es: Sgoldstino di piccola massa, LFV, …) e proibiti (es: K→pg, p0→ggg, …) del K e del p Fascio adronico di alta intensità Ricostruzione completa della cinematica Ottima capacità di veto e PID 32 La “tecnica” sperimentale di NA62 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Pp PK 2 miss m pK Pn Pn 92% Kinematically constrained Pp PK 2 PK Pp p2K m 1 + m 1 p PK Pp 2 K Ricostruzione cinematica completa → misura dell’impulso del K e del p prodotto dal decadimento in volo 8% Not Kinematically constrained Identificazione del fondo non escluso dalla cinematica → PID e Veti Segnale molto piccolo → fascio intenso, trigger efficiente e selettivo 33 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Beam line 75 GeV (±1%) Kaon beam (~6%) ~50MHz ~800MHz 400 GeV SPS Proton beam 3·1012 ppp ~10MHz π ν ν Targhetta fissa Decadimento in volo Fascio non separato 34 TELL 1 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 La TELL1 è una scheda di acquisizione “general purpose” sviluppata per LHCB (EPFL Lausanne) Formato 9U, crate speciale (senza bus e alimentazioni dedicate) 5 FPGA (Altera Stratix) permettono una completa configurazione 384 Mbytes di DDR ram per “bufferizzare” i dati in attesa della decisione di trigger di L0 4 connettori permettono di aggiungere daughter cards secondo le necessità Un Credit Card PC (CCPC) per controllare la scheda, connessione TTC per trigger e clock Standard GBE network card (4 links) per la raccolta dei dati in uscita Semplice implementare procedure di controllo di flusso e monitor Sviluppo di una nuova versione con nuove FPGA e 35 caratteristiche più performanti TDC board (TDCB) Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 La maggior parte dei detector utilizzano TDCs Una mezzanina è stata sviluppata dal gruppo di Pisa, per fornire un’alta risoluzione temporale (100 ps) usando gli HPTDC (CERN) con un’alta densità di canali Una TDCB contiene 4 HPTDC per un totale di 128 canali 4 daughter boards per TELL1 = 512 canali 128 Input LVDS (con DC-DC converter 8 cavi da 16 coppie) a basso noise con Altera Stratix II per monitoring e filtri analogici QPLL on board preprocessing Connettore Lemo Connettori Seconda versione. Una nuova per diretto I/O TTL miniaturizzati (su versione sarà pronta a metà del ambedue i lati) 1 MB SRAM prossimo mese Supporto I2C e JTAG 36 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Generalità sulle GPU I processori grafici (GPU) sono stati sviluppati per il calcolo matematico intensivo, soprattutto per applicazioni di grafica Le GPU hanno superato le CPU in termini di GFLOPS Recentemente si è molto sviluppato l’utilizzo di questi device per computing in applicazioni non grafiche (GPGPU) Grande sforzo da parte di NVIDIA per permettere un accesso semplice alle 37 funzionalità del driver (CUDA) Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Perché le GPU sono più potenti delle CPU? Nelle GPU molti più transistors sono utilizzati per il calcolo, rispetto al caching o al controllo di flusso I due processori non sono intercambiali (hanno funzioni differenti e affrontano i problemi in modo differente) Aggirata la legge di Moore: per aumentare la capacità di calcolo i processori non diventeranno più veloci ma più grandi! Architettura e algoritmi massivamente paralleli 38 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Schema strutturale del GT200 La struttura delle GPU è fortemente pensata per la parallelizzazione I core di calcolo sono raggruppati in 30 Multiprocessori (8 core per multiprocessore = 240 core) Ogni MP condivide uno stesso spazio di memoria (shared memory) per mezzo del quale i core “comunicano” In ogni MP i processi sono schedulati in modalità SIMD (Single Instruction Multiple data) Tutti i processi che vengono eseguiti su un MP eseguono le stesse istruzioni (Instruction pool) su dati differenti Le istruzioni vengo quadruplicate nel pool in modo da eseguire 32 processi concorrenziali (warp) Divergenze nei processi, nello stesso MP, generano perdita di parallelizzazione (recuperata appena possibile) Lo stesso MP può eseguire più di 32 processi, schedulati dal driver sequenzialmente Codice parallelo (molti threads Instruction pool PU PU PU PU D a t a p o o l lavorano sullo stesso problema) Parallelizzazione in una struttura multicores Eventi-Multipli (molti eventi sono processati nello stesso tempo) 39 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Schema di esecuzione Quello che la GPU deve fare viene definito nel Kernel, come una semplice funzione C Il Kernel è sempre lanciato da un programma Host che risiede sulla CPU Thread Per-thread Local Storage Block Per-block Shared Memory Il singolo processo (thread) viene descritto nel kernel e viene eseguito dal singolo core Un gruppo di threads (threads block) è eseguito dal Multiprocessore. La struttura dei blocchi è definita al lancio del kernel. I thread nel blocco si parlano attraverso la shared memory. Grid .. . ... Per-device Global Memory: final result Ogni blocco può essere visto come il membro di una griglia (Grid). I vari multiprocessori lavorano in parallelo, ma la priorità non è definita 40 (scalabilità) Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 Gestione della memoria Memory In/out chip Cach ed Access Scope Lifetim e Register In no R/W 1 thread Thread Local Out no R/W 1 thread Thread Shared In no R/W 1 thread block Block Global Out no R/W All threads Kernel Constant Out yes R All threads Kernel Texture Out yes R All threads Kernel Le schede video dispongono di spazi di memoria differenti da quelli della CPU Il modo di utilizzo di questi spazi è completamente differente e deve tener conto dell’architettura del device L’ottimizzazione di un kernel deve necessariamente passare dalla corretta gestione della memoria Esempio: la shared memory ha una banda di 1 TB/s solo se si evitano conflitti per banchi in R/W, la global memory ha una banda di 100 GB/s solo se si accede con la coalescenza Global memory Shared memory 1 2 Thr 3 3 4 5 Thr 6 6 Thr 7 7 8 9 10 11 Thr 12 12 13 14 Thr 15 15 16 Thr 1 41 Incontro CCR INFN – Gianluca Lamanna – Napoli 26.1.2010 NVIDIA FERMI (GT 300) In più: Gestione della memoria a 40 bit unificata Doppio DMA per trasferimento dati Esecuzione parallela multi-kernel 64K shared memory Operazioni atomiche 10X … 42