FYI.

This story is over 5 years old.

Gli ingegneri del MIT hanno aggirato la complessità del parallel processing

Questo è il futuro del parallel processing?
02 marzo 2015, 9:52am
​Immagine: Karl-Ludwig Poggemann/Flickr

Gli ingegneri del MIT hanno sviluppato un algoritmo che promette da una parte di velocizzare i sistemi multicore di anche il 50 percento e dall'altra di aumentare di quasi il 30 percento l'efficienza generale. Non elimina quegli infiniti colli di bottiglia dovuti al parallel processing conosciuti come cache hierarchy, ma il nuovo schema dovrebbe migliorare la situazione considerevolmente. I computer possono diventare più veloci, dopotutto.

I ricercatori del MIT, guidati dal professore di ingegneria elettronica Daniel Sanchez, ha presentato il suo lavoro all'Electrical and Electronics Engineers' International Symposium on High-Performance Computer Architecture di questo mese, dove sono stati nominati per il premio best paper della conferenza.

Come Sanchez scrive nel paper, lo schema "usa una combinazione di tecniche hardware e software per ottenere performance viste solo nei calcoli preliminari."

Il problema qui non è da poco. I processori dei computer hanno raggiunto i loro limiti assoluti, hanno raggiunto dimensioni così piccole che l'hardware comincia a interferire da solo, in una certa maniera. I limiti tecnici impongono un confine più o meno insuperabile su questo tipo di cose. Il multithreading, dove una serie di processori vengono fatti lavorare assieme, sembra essere la soluzione più naturale, ma ha a sua volta dei problemi. Sorpresa: raddoppiare il numero di chip in un computer non raddoppia le sue performance, e aggiungere core al sistema non migliora radicalmente la sua efficienza.

Il problema di cache hierarchy riguarda come i dati fisici vengono fatti sfrecciare tra i vari core di un sistema multicore. La chiave per un parallel processing più veloce riguarda una gestione migliore e più efficiente della divisione dei compiti, ciò prevede una profonda comprensione di come questi sono distribuiti in una determinata architettura. Sembra naturale pensare di immagazzinare i dati il più vicino possibile a dove verranno processati, ma quando si tratta di divisione dei compiti questo aspetto diventa incredibilmente difficile da gestire.

Lo schema di allocazione del gruppo illustrato. Immagine: MIT

"Perché i sistemi funzionino in maniera efficiente, i dati devono essere vicini a dove verranno processati. Ciò significa che è necessario mantenere i dati in cache bank vicine ai thread (per minimizzare il traffico on-chip), e allo stesso tempo bisogna gestire la memoria cache per i vari thread," scrivono Sanchez e il suo gruppo nel nuovo paper. "Abbiamo scoperto che per ottenere buone performance, il sistema deve sia gestire bene la cache capacity che programmare il lavoro dei thread per limitare i problemi di capacity. Chiamiamo questo processo computation e data co-scheduling. È un problema di ottimizzazione complesso e multi-dimensionale."

Il problema fondamentale è di lunga data. È conosciuto come "place and route" e l'idea alla base è quella di trovare la via migliore per minimizzarela distanza fisica tra le computazioni collegate in un determinato chip (o in un set di chip.) È semplicemente troppo complesso; se esistesse una soluzione, non ci sarebbe abbastanza tempo né potenza computazionale nell'intero universo per trovarla. Quindi, gli ingegneri si affidano a soluzioni approssimative, che funzionano piuttosto bene. In un sistema 64-core sono capaci di trovare buone soluzioni in qualche ora. Il fatto è che 'ore' per un computer significano 'millenni'per noi, visto che 50 milioni di operazioni possono essere processate nell'arco di millisecondi. Il nuovo algoritmo di Sanchez offre le stesse possibilità in calcoli da 25 millisecondi, permettendo all'architettura di riprogettarsi in tempo reale.

Sanchez spiega: "Noi prima di tutti piazziamo i dati alla bene e meglio. Poi i dati si diffondono in modo da non occupare troppe banche dati o tutte le zone di immagazzinamento su un determinato chip. Poi cerchiamo di capire come piazzare il thread computazionale di modo che sia vicino ai dati, e infine rifiniamo il piazzamento dei dati in base a dove sono stati collocati i thread. Eseguendo questi tre step, semplifichi il problema." Quindi: si tratta di distribuire i dati e le computazioni.

Questo schema prevede l'introduzione di nuovo scheduler on-board, che prenderebbe l'1 percento di spazio fisico dell'architettura. Un prezzo ragionevole per un computer più veloce.