androide

Chip multicore Pose Next Big Challenge for Industry

Mod-01 Lec-01 Foundation of Scientific Computing-01

Mod-01 Lec-01 Foundation of Scientific Computing-01
Anonim

L'aggiunta di più core di elaborazione è emersa come il modo principale per aumentare le prestazioni dei chip server e PC, ma i vantaggi saranno notevolmente ridotti se l'industria non può superare determinate sfide hardware e di programmazione, partecipanti al Multicore Expo di Santa Clara, California, ha detto questa settimana.

La maggior parte dei software oggi è ancora scritta per chip single-core e dovrà essere riscritta o aggiornata per trarre vantaggio dal numero crescente di core che Intel, Sun Microsystems e altri produttori di chip stanno aggiungendo a i loro prodotti, ha affermato Linley Gwennap, presidente e analista principale del gruppo The Linley.

Le applicazioni disponibili spesso girano più velocemente su CPU con un massimo di quattro core del processore, ma oltre a tali prestazioni si spegne e può persino deteriorarsi con l'aggiunta di più nuclei, ha detto. Un recente rapporto di Gartner ha anche evidenziato il problema.

I produttori di chip e i system builder hanno iniziato a impegnarsi per educare gli sviluppatori e fornire loro strumenti migliori per la programmazione multicore. Un anno fa, Intel e Microsoft hanno annunciato che avrebbero investito 20 milioni di dollari USA per aprire due centri di ricerca negli Stati Uniti dedicati all'affrontare il problema. La mancanza di strumenti di programmazione multicore per gli sviluppatori mainstream è forse la più grande sfida che l'industria deve affrontare oggi, ha detto Gwennap.

Scrivere applicazioni in modo da consentire diverse parti di un compito di calcolo, come risolvere un problema matematico o rendere un'immagine, essere diviso ed eseguito simultaneamente su più core non è nuovo. Ma questo modello, spesso chiamato calcolo parallelo, è stato finora limitato principalmente a ambienti di calcolo specializzati e ad alte prestazioni.

Ma negli ultimi anni, Intel e Advanced Micro Devices hanno aggiunto core come un modo più efficiente di potenziare prestazioni del chip, un notevole cambiamento rispetto alla pratica tradizionale di aumentare la velocità di clock. Intel sta costruendo otto core nei suoi futuri chip Nehalem-EX e AMD sta progettando chip a 12 core per server. Aggiungono inoltre funzionalità multi-threading, che consentono a ciascuno dei core di lavorare su più linee di codice contemporaneamente.

Ciò significa che le applicazioni mainstream devono essere scritte in un modo diverso per sfruttare i core aggiuntivi disponibili. Il lavoro è difficile da fare e crea il potenziale per nuovi tipi di bug del software. Uno dei più comuni è "condizioni di gara", in cui l'output di un calcolo dipende dai vari elementi di un'attività completata in un determinato ordine. In caso contrario, possono verificarsi errori.

Sono disponibili alcuni strumenti di programmazione paralleli, come Parallel Studio di Intel per C e C ++. Altri venditori nello spazio sono Codeplay, Polycore Software e Clik Arts. Esiste anche un nuovo modello di programmazione parallelo basato su C chiamato OpenCL, sviluppato da The Khronos Group e supportato da Apple, Intel, AMD, Nvidia e altri.

Ma molti degli strumenti disponibili sono ancora in corso, partecipanti a ha detto il Multicore Expo. I compilatori di software devono essere in grado di identificare il codice che può essere parallelizzato e quindi eseguire il parallelismo senza l'intervento manuale dei programmatori, ha affermato Shay Gal-on, direttore dell'ingegneria del software presso EEMBC, un'organizzazione non profit che sviluppa benchmark per chip integrati

Nonostante la mancanza di strumenti, alcuni produttori di software hanno trovato relativamente facile creare codice parallelo per semplici lavori di elaborazione, come l'elaborazione di immagini e video, ha detto Gwennapp. Adobe ha riscritto Photoshop in un modo che può assegnare compiti come ingrandimento e filtraggio di immagini a core x86 specifici, migliorando le prestazioni di tre o quattro volte, ha detto.

"Se stai facendo video o grafica, puoi prendere diversi set di pixel e assegnarli a diverse CPU. In questo modo puoi ottenere molto parallelismo ", ha affermato. Ma per compiti più complessi, è difficile trovare un singolo approccio per identificare una sequenza di calcoli che possono essere parallelizzati e quindi dividerli.

Mentre il lato della programmazione può presentare la sfida più grande, ci sono anche cambiamenti hardware che devono essere fatti, per superare problemi come la latenza della memoria e le basse velocità del bus. "Mentre aggiungi sempre più CPU sul chip, hai bisogno della larghezza di banda della memoria per eseguire il backup", ha detto Gwennap.

Condividere una singola cache di memoria o bus dati tra più core può creare un collo di bottiglia, il che significa che i core aggiuntivi saranno essere ampiamente sprecato. "Quando arrivano a sei o otto CPU, passano tutto il loro tempo a parlare tra loro e non si muovono in avanti per ottenere alcun lavoro", ha detto.

L'onere potrebbe alla fine risiedere con gli sviluppatori per colmare il divario tra hardware e software per scrivere programmi paralleli migliori. Molti programmatori non sono aggiornati sugli ultimi sviluppi nella progettazione hardware, ha affermato Gal-on. Dovrebbero aprire schede dati e studiare architetture di chip per capire come il loro codice può funzionare meglio, ha detto.