Aziende come Google, Amazzonia, e Intel hanno ampiamente adottato diversi tipi di acceleratori hardware nelle loro pipeline di cloud computing, ma molti programmi non riescono ancora a sfruttarli appieno. Credito:Università del Michigan
Una nuova tecnica sviluppata dai ricercatori dell'Università del Michigan potrebbe consentire una più ampia adozione dei componenti informatici post-legge di Moore attraverso la traduzione automatica del codice. Il sistema, chiamato AutomataSynth, consente agli ingegneri del software di sfruttare la potenza degli acceleratori hardware come gli FPGA senza conoscenze di programmazione specializzate o senza dover riscrivere vecchi, Codice incentrato sulla CPU.
Con la legge di Moore che si avvicina alla fine, aziende e progettisti si affidano a una serie di tecniche hardware per aggirare i rendimenti decrescenti forniti dalle nuove CPU. Tra i candidati più praticabili a breve termine ci sono gli acceleratori hardware come gli FPGA (Field Programmable Gate Array), che può essere dedicato all'esecuzione rapida di particolari funzioni comuni e all'eliminazione dei colli di bottiglia nelle applicazioni più grandi.
Mentre la loro adozione da parte di aziende come Microsoft e Amazon Web Services è già a buon punto, Gli FPGA sono limitati nel loro utilizzo da requisiti di programmazione estranei a molti sviluppatori di software. Questi requisiti limitano anche il loro utilizzo su software legacy preesistenti, che in genere è stato scritto per funzionare specificamente con le CPU.
La maggior parte dei programmi in uso oggi deve essere completamente riscritta a un livello molto basso per sfruttare i vantaggi dell'accelerazione hardware. A causa di ciò, i componenti vengono installati più rapidamente di quanto non vengano effettivamente utilizzati.
"Le aziende stanno adottando misure per cercare di rendere [gli FPGA] più accessibili alle persone, "dice Kevin Angstadt, un dottorato di ricerca candidato alla guida del progetto, "ma quando si tratta di scrivere nuovi programmi, il processo è ancora molto primitivo."
Il gruppo, di cui fanno parte i proff. Westley Weimer e Jean-Baptiste Jeannin, ha cercato di superare queste barriere all'adozione riscrivendo automaticamente alcune funzioni di basso livello utilizzate da molte applicazioni più grandi. Implementato su larga scala, ciò significherebbe che gli sviluppatori potrebbero sfruttare appieno gli FPGA semplicemente aggiungendo poche righe al loro codice esistente, senza necessità di riscrittura.
Angstadt confronta il processo con l'adattamento delle unità di elaborazione grafica (GPU) all'elaborazione per scopi generici, inizialmente abilitato dalla piattaforma CUDA di NVIDIA. CUDA ha fornito agli sviluppatori un'interfaccia attraverso la quale potevano attingere alla potenza di elaborazione di una GPU su attività non grafiche.
"L'obiettivo di questo lavoro era fare qualcosa di simile con gli FPGA, " dice Angstadt. "Non puoi semplicemente scrivere nella stessa lingua quando li usi, ma possiamo darvi l'illusione di scrivere nella stessa lingua."
Per realizzare questo, i ricercatori hanno utilizzato una tecnica chiamata apprendimento degli automi limitati. La tecnica utilizza una combinazione di diverse analisi del programma per produrre una macchina a stati che sia equivalente in funzione al codice originale e suscettibile di accelerazione con gli FPGA. Essenzialmente, il loro sistema legge il codice che gli è stato dato, apprende la funzionalità del codice, e scrive una descrizione hardware di questo comportamento da inviare all'acceleratore.
In un documento presentato sul lavoro, hanno dimostrato la loro tecnica su una classe di funzioni, kernel di stringa, che gestiscono le operazioni di ricerca e confronto eseguite sul testo.
"Ogni volta che esegui una ricerca in un documento di testo, stai usando una delle forme più primitive di questi kernel di stringhe, " afferma Angstadt. Ma possono essere molto più complesse:le funzioni sono fondamentali per applicazioni così diverse come il rilevamento dello spam, analisi genetica, consigli sui prodotti, e fisica delle particelle.
Esecuzione di AutomataSynth su una suite di benchmark di funzioni stringa del mondo reale scritte per funzionare con le CPU, il team ha scoperto di essere in grado di apprendere progetti hardware completamente equivalenti nel 72% dei casi e approssimazioni ravvicinate in un altro 11%.
L'applicazione di questa tecnica ad altre classi di funzioni rimane un problema aperto per ulteriori lavori, ma Angstadt è fiducioso che possa essere utilizzato ampiamente.
"La nostra ricerca indica che anche se esistono molti tipi di funzioni diverse da quelle che supportiamo, ci sono più applicazioni di quante ci rendiamo conto che possono essere riscritte come kernel di stringhe, " dice Angstadt. "Quindi potremmo essere ancora in grado di applicare tecniche simili per supportare altri tipi di codice".
In caso di successo, potremmo vedere gli FPGA diventare un componente standard per l'elaborazione generica.
I ricercatori hanno presentato le loro scoperte nel documento "Accelerare i kernel di stringhe legacy tramite l'apprendimento limitato degli automi, " accettato dalla Conferenza 2020 Architectural Support for Programming Languages and Operating Systems (ASPLOS).