Un llenguatge de programació per a acceleradors de maquinari | Notícies del MIT

La llei de Moore necessita una abraçada. Els dies d’ompliment de transistors en xips d’ordinador de silici estan comptats i les seves balses salvavides, acceleradors de maquinari, tenen un preu.

Quan programeu un accelerador, un procés on les aplicacions descarreguen determinades tasques al maquinari del sistema, especialment per accelerar aquesta tasca, heu de crear un suport de programari completament nou. Els acceleradors de maquinari poden executar determinades tasques més ràpidament que les CPU, però no es poden utilitzar de manera immediata. El programari ha d’utilitzar de manera eficient les instruccions dels acceleradors per fer-lo compatible amb tot el sistema d’aplicacions. Això es tradueix en una gran quantitat de treball d’enginyeria que s’hauria de mantenir per a un xip nou al qual esteu compilant codi, amb qualsevol llenguatge de programació.

Ara, els científics del Laboratori d’Informàtica i Intel·ligència Artificial (CSAIL) del MIT van crear un nou llenguatge de programació anomenat “Exo” per escriure codi d’alt rendiment en acceleradors de maquinari. Exo ajuda els enginyers de baix nivell a transformar programes molt senzills que especifiquen el que volen calcular, en programes molt complexos que fan el mateix que l’especificació, però molt, molt més ràpid mitjançant l’ús d’aquests xips acceleradors especials. Els enginyers, per exemple, poden utilitzar Exo per convertir una multiplicació de matrius simple en un programa més complex, que executa ordres de magnitud més ràpidament mitjançant l’ús d’aquests acceleradors especials.

A diferència d’altres llenguatges de programació i compiladors, Exo es basa en un concepte anomenat “Exocompilation”. “Tradicionalment, moltes investigacions s’han centrat a automatitzar el procés d’optimització del maquinari específic”, diu Yuka Ikarashi, estudiant de doctorat en enginyeria elèctrica i informàtica i afiliada a CSAIL que és autor principal d’un nou article sobre Exo. “Això és fantàstic per a la majoria de programadors, però per als enginyers de rendiment, el compilador s’interposa tan sovint com ajuda. Com que les optimitzacions del compilador són automàtiques, no hi ha una bona manera d’arreglar-ho quan fa el mal i us ofereix un 45% d’eficiència en lloc del 90%.

Amb Exocompilation, l’enginyer de rendiment torna al seient del conductor. La responsabilitat d’escollir quines optimitzacions aplicar, quan i en quin ordre s’exterioritza des del compilador, de nou a l’enginyer de rendiment. D’aquesta manera, no han de perdre el temps lluitant contra el compilador d’una banda, o fent-ho tot manualment de l’altra. Al mateix temps, Exo es fa responsable de garantir que totes aquestes optimitzacions siguin correctes. Com a resultat, l’enginyer de rendiment pot dedicar el seu temps a millorar el rendiment, en lloc de depurar el codi complex i optimitzat.

“El llenguatge Exo és un compilador que es parametritza sobre el maquinari al qual s’orienta; el mateix compilador pot adaptar-se a molts acceleradors de maquinari diferents”, diu Adrian Sampson, professor ajudant del Departament d’Informàtica de la Universitat de Cornell. “En lloc d’escriure un munt de codi C++ desordenat per compilar per a un nou accelerador, Exo us ofereix una manera abstracta i uniforme d’escriure la “forma” del maquinari que voleu orientar. A continuació, podeu reutilitzar el compilador Exo existent per adaptar-vos a aquesta nova descripció en lloc d’escriure alguna cosa completament nou des de zero. L’impacte potencial d’un treball com aquest és enorme: si els innovadors de maquinari poden deixar de preocupar-se pel cost del desenvolupament de nous compiladors per a cada idea de maquinari nova, poden provar i enviar més idees. La indústria podria trencar la seva dependència del maquinari heretat que només té èxit a causa del bloqueig de l’ecosistema i malgrat la seva ineficiència”.

Els xips informàtics de més alt rendiment que es fabriquen avui, com ara el TPU de Google, el motor neuronal d’Apple o els nuclis de tensor de NVIDIA, alimenten les aplicacions de computació científica i d’aprenentatge automàtic accelerant el que s’anomena “subprogrames clau”, nuclis o computació d’alt rendiment (HPC). ) subrutines.

A part de l’argot maldestre, els programes són essencials. Per exemple, una cosa anomenada Subrutines d’àlgebra lineal bàsica (BLAS) és una “biblioteca” o col·lecció d’aquestes subrutines, que es dediquen a càlculs d’àlgebra lineal i permeten moltes tasques d’aprenentatge automàtic com xarxes neuronals, previsions meteorològiques, càlcul al núvol i descobriment de fàrmacs. . (BLAS és tan important que va guanyar el premi Turing a Jack Dongarra l’any 2021.) Tanmateix, aquests nous xips, que necessiten centenars d’enginyers per dissenyar, només són tan bons com ho permeten aquestes biblioteques de programari HPC.

Actualment, però, aquest tipus d’optimització del rendiment encara es fa a mà per garantir que s’aprofiti cada darrer cicle de càlcul en aquests xips. Les subrutines HPC funcionen regularment amb un 90 per cent més de l’eficiència teòrica màxima, i els enginyers de maquinari fan tot el possible per afegir un cinc o un 10 per cent addicional de velocitat a aquests pics teòrics. Per tant, si el programari no està optimitzat de manera agressiva, tot aquest treball dur es desaprofita, que és exactament el que Exo ajuda a evitar.

Una altra part clau d’Exocompilation és que els enginyers de rendiment poden descriure els nous xips que volen optimitzar, sense haver de modificar el compilador. Tradicionalment, els desenvolupadors del compilador mantenen la definició de la interfície de maquinari, però amb la majoria d’aquests nous xips acceleradors, la interfície de maquinari és propietat. Les empreses han de mantenir la seva pròpia còpia (fork) de tot un compilador tradicional, modificat per donar suport al seu xip particular. Això requereix contractar equips de desenvolupadors de compiladors a més dels enginyers de rendiment.

“A Exo, en canvi, exterioritzem la definició de backends específics del maquinari des de l’exocompilador. Això ens proporciona una millor separació entre Exo, que és un projecte de codi obert, i el codi específic del maquinari, que sovint és propietari. Hem demostrat que podem utilitzar Exo per escriure ràpidament codi tan eficient com la biblioteca de nucli matemàtic optimitzada a mà d’Intel. Estem treballant activament amb enginyers i investigadors de diverses empreses”, diu Gilbert Bernstein, un postdoctorat de la Universitat de Califòrnia a Berkeley.

El futur d’Exo implica explorar un metallenguatge de programació més productiu i ampliar la seva semàntica per suportar models de programació paral·lel per aplicar-lo a encara més acceleradors, incloses les GPU.

Ikarashi i Bernstein van escriure el document juntament amb Alex Reinking i Hasan Genc, ​​ambdós estudiants de doctorat a la UC Berkeley, i el professor adjunt del MIT Jonathan Ragan-Kelley.

Aquest treball va comptar amb el suport parcial del centre Applications Driving Architectures, un dels sis centres de JUMP, un programa de Semiconductor Research Corporation copatrocinat per la Defense Advanced Research Projects Agency. Ikarashi va comptar amb el suport de Funai Overseas Scholarship, Masason Foundation i Great Educators Fellowship. L’equip va presentar el treball a la Conferència ACM SIGPLAN sobre Disseny i Implementació del Llenguatge de Programació 2022.

.

Leave a Comment

Your email address will not be published. Required fields are marked *