La promessa dei supercomputer personali

La scorsa settimana, Intel ha annunciato un progetto di ricerca che ha fatto saltare di gioia i geek: il primo supercomputer programmabile in terascala su un chip. L'azienda ha dimostrato un singolo chip con 80 core, o processori, e ha dimostrato che questi core possono essere programmati per elaborare numeri alla velocità di un trilione di operazioni al secondo, una misura nota come teraflop. Il chip ha le dimensioni di un grosso francobollo, ma ha la stessa velocità di calcolo di un supercomputer che, nel 1996, occupava circa 2.000 piedi quadrati e consumava circa 1.000 volte più potenza.





Non così eccezionale: Un supercomputer nel 1996 (in alto a sinistra) in grado di calcolare un trilione di operazioni al secondo occupava circa 2.000 piedi quadrati e consumava 500.000 watt. Recentemente, Intel ha presentato un chip di ricerca a 80 core (in basso a destra) che raggiunge la stessa velocità di calcolo ma ha le dimensioni di un grosso francobollo e utilizza circa 65 watt.

Questo chip di ricerca è uno dei primi passi di Intel verso la tecnologia multicore di massa, afferma Nitin Borkar, responsabile tecnico e capo progetto di laboratorio presso Intel. L'obiettivo, afferma, è utilizzare questo chip per testare tecniche che potrebbero rendere la tecnologia multicore più veloce, più efficiente dal punto di vista energetico e, cosa più scoraggiante, facile da programmare. Queste tecniche verranno incanalate in prodotti futuri che potrebbero apparire, se tutto va bene, entro cinque-dieci anni.

Ma quasi tutti gli ingegneri del settore informatico concordano sul fatto che realizzare computer consumer con centinaia di core non sarà facile. In effetti, molti non sono nemmeno sicuri che si possa fare. La sfida più lampante sarà quella di trovare un modo per revisionare completamente il software in modo che le applicazioni possano sfruttare numerosi core. Ciò include insegnare agli sviluppatori di software come scrivere codice per macchine multicore, un'attività nota come programmazione parallela, e sviluppare nuovi strumenti che consentano loro di codificare in modo accurato ed efficiente.



Ricercatori e visionari stanno già pensando a come utilizzare al meglio questi chip per supercomputer. Intel ritiene che il riconoscimento, l'estrazione e la sintesi ( RMS ) le applicazioni saranno fondamentali. Insieme, queste tecnologie potrebbero consentire la traduzione linguistica in tempo reale tramite telefoni cellulari, la ricerca di video in tempo reale per frase o immagine pronunciata e sistemi di raccomandazione migliori per lo shopping, la pianificazione dei pasti e persino l'assistenza sanitaria.

Per rendere queste applicazioni una realtà, l'industria informatica dovrà affrontare alcuni problemi di crescita, afferma David Patterson , professore di informatica all'Università della California, Berkeley. (Lui e i suoi colleghi hanno un sito web che ospita discussioni e fornisce un white paper e video sull'argomento.) Siamo nelle prime fasi di questo gigantesco cambiamento, afferma Patterson. Descrive la direzione in cui l'industria ha deciso di andare, abbandonando i processori single-core a prestazioni limitate per la tecnologia multicore, come un passaggio dell'Ave Maria lanciato in una partita di calcio. I produttori di chip stanno mettendo sempre più core su un chip, ma gli ingegneri del software non sono sicuri di poter tenere il passo. È un momento entusiasmante per i ricercatori, dice Patterson, se riusciamo a capire come prendere il pass.

Poiché la frequenza di clock, la misura della velocità del processore, dei chip single-core ha continuato ad aumentare costantemente per decenni, i programmatori potrebbero evitare la sfida della programmazione in parallelo, afferma John Shalf , informatico presso il Lawrence Berkeley Laboratory, a Berkeley, in California. I loro programmi funzionerebbero più velocemente se aspettassero solo 18 mesi per l'arrivo della prossima generazione di chip, dice. Ma verso il 2002, divenne evidente che questi chip single-core consumavano troppa energia e non sarebbero stati in grado di mantenere gli aumenti di velocità. Quindi, l'industria ha deciso di cambiare rotta: invece di cercare di ottenere più velocità da un singolo processore, i produttori di chip hanno semplicemente aggiunto un altro processore. Ora che non possiamo aumentare la frequenza di clock, dobbiamo affrontare il parallelismo a testa alta, afferma Shalf, e il modo migliore per caratterizzare la risposta del settore è il panico diffuso.



Cosa c'è di così spaventoso nella programmazione parallela? Per iniziare, è stato relegato a specialisti nel mondo dell'elaborazione ad alte prestazioni (HPC) che scrivono software che risolvono problemi specifici che vengono eseguiti su macchine con migliaia e milioni di core. Il software può creare modelli di cambiamento climatico o prevedere il ripiegamento delle proteine, ma è scritto per un singolo compito laborioso, non per i capricci dei consumatori che vogliono parlare con un computer, guardare video ad alta definizione e tenere sotto controllo i propri genitori anziani dall'altra parte del paese.

In particolare, i programmi paralleli devono essere scritti in modo che le attività possano essere adeguatamente condivise tra i processori. Questo è difficile perché non tutte le applicazioni hanno naturalmente componenti che possono essere separati; a volte, quando sono separati, le attività vengono completate in momenti diversi e creano colli di bottiglia. Inoltre, ci sono complicazioni con le risorse condivise: se un'applicazione ha bisogno di accedere a dati in memoria condivisi da decine o centinaia di altri core, il programma potrebbe rallentare o bloccarsi. Inoltre, il debug di programmi paralleli può essere un incubo perché spesso un errore è difficile da duplicare, rendendo difficile l'individuazione della fonte del problema.

Ma anche con tutte le sfide, c'è speranza, dice Shalf. I ricercatori HPC hanno sviluppato portafogli di algoritmi paralleli che potrebbero essere utili per i programmi paralleli dei consumatori. Inoltre, sul mercato sono già presenti prodotti multicore in modo massiccio, che forniscono indizi sui migliori approcci dal punto di vista dell'architettura e della programmazione. Ad esempio, azienda di grafica NVIDIA ha appena rilasciato un chip commerciale con 128 core, progettato per il rendering di grafica per applicazioni come i videogiochi. Molti dei core sono di uso generale, il che significa che possono essere programmati per svolgere molte diverse attività orientate alla grafica. L'alternativa è che i core abbiano istruzioni cablate nel chip.



Inoltre, Intel, AMD e altri stanno collaborando con ricercatori accademici per cercare di creare un framework di programmazione parallela che possa essere concordato. Un approccio che sembra promettente si chiama memoria transazionale, afferma Krste Asanovic , professore di informatica al MIT. (Vedi The Trouble with Multicore Computers.) Usando la memoria transazionale, una combinazione di architettura del chip e codice, i programmatori potranno pensare in modo più sequenziale, come fanno quando programmano sistemi single-core, e lasciare che il sistema fornisca il parallelismo. Asanović afferma che i programmatori scrivono istruzioni che iniziano e finiscono in modo lineare, ma dietro le quinte corrono in parallelo. Questo approccio richiede la collaborazione dei fornitori di hardware e degli ingegneri del software perché l'hardware e il software devono lavorare insieme. Le due comunità stanno parlando, dice Asanović, ma non c'è consenso su come sarà. Aggiunge che la memoria transazionale sarà molto probabilmente una combinazione di approcci che potrebbe aiutare a semplificare la programmazione in parallelo.

Senza un consenso su come procedere con la tecnologia multicore, tuttavia, l'industria dei computer di consumo potrebbe trovarsi a un punto morto tra circa cinque anni, afferma Shalf. Ma è ottimista perché il campo del calcolo parallelo è stato iniettato con un nuovo senso di urgenza con l'emergere di prodotti dual e quad-core. Nel mondo accademico possiamo essere in disaccordo per anni, dice, ma l'industria ha un modo, con il suo imperativo economico, di trovare una soluzione abbastanza rapidamente.

nascondere