LLVM Creator sviluppa una nova lingua di prugrammazione Mojo

Chris Lattner, fundatore è architettu capu di LLVM è creatore di a lingua di prugrammazione Swift, è Tim Davis, ex capu di prughjetti di Google AI cum'è Tensorflow è JAX, anu introduttu un novu linguaghju di prugrammazione Mojo chì combina facilità d'utilizazione per R&D è prototipazione rapida cù idoneità per i prudutti finali di altu rendiment. U primu hè ottenutu per l'usu di a sintassi familiare di a lingua Python, è u sicondu hè dovutu à a capacità di cumpilà à u codice macchina, i miccanismi per a gestione di memoria sicura, è l'utilizazione di strumenti per l'accelerazione hardware di i calculi.

U prughjettu hè focu annantu à l'usu per u sviluppu di l'apprendimentu di a macchina, ma hè presentatu cum'è una lingua di scopu generale chì estende e capacità di a lingua Python cù a prugrammazione di sistemi è hè adattatu per una larga gamma di attività. Per esempiu, a lingua hè applicabile à e zone cum'è l'informatica d'alta prestazione, a trasfurmazioni di dati è a trasfurmazioni. Una caratteristica interessante di Mojo hè a capacità di specificà u simbulu emoji "🔥" cum'è estensione per i schedarii di codice (per esempiu, "helloworld.🔥"), in più di l'estensione di testu ".mojo".

Attualmente, a lingua hè in sviluppu intensivu è solu l'interfaccia in linea hè offerta per a prova. L'assemblei separati per eseguisce nantu à i sistemi lucali sò prumessi per esse publicati dopu, dopu avè ricivutu feedback nantu à u travagliu di l'ambiente web interattivu. U codice fonte per u compilatore, JIT è altri sviluppi ligati à u prugettu hè previstu per esse apertu dopu chì u disignu di l'architettura interna hè finitu (u mudellu di sviluppu di un prototipu di travagliu daretu à porte chjuse s'assumiglia à a fase iniziale di sviluppu di LLVM, Clang). è Swift). Siccomu a sintassi di Mojo hè basatu annantu à Python è u sistema di tipu hè vicinu à C/C++, ci sò piani in u futuru per sviluppà un toolkit per facilità a traduzzione di prughjetti esistenti scritti in C/C++ è Python à Mojo, è ancu di sviluppà. prughjetti hibridi chì combina u codice Python è Mojo.

U prughjettu hè pensatu per involucà e risorse hardware di sistemi eterogenei dispunibuli in u sistema in i calculi. Per esempiu, GPU, acceleratori di apprendimentu di macchina specializati è struzzioni di trasfurmazioni vettoriali (SIMD) ponu esse aduprati per eseguisce l'applicazioni Mojo è parallelizà i calculi. U mutivu di sviluppà un subset separatu di a lingua Python, invece di unisce à u travagliu di ottimisazione di u CPython esistente, hè citatu cum'è un focus di compilazione, integrazione di capacità di prugrammazione di u sistema, è l'usu di una architettura interna fundamentalmente diversa chì permette à u codice per esse. eseguitu nantu à GPU è diversi acceleratori hardware. À u listessu tempu, i sviluppatori di Mojo intendenu aderisce à a cumpatibilità cù CPython quantu pussibule.

Mojo pò esse usatu sia in u modu di interpretazione JIT sia per a compilazione in i fugliali eseguibili (AOT, prima di u tempu). U compilatore hà tecnulugii muderni integrati per ottimisazione automatica, caching è compilazione distribuita. I testi di origine in a lingua Mojo sò cunvertiti in codice intermediu di livellu bassu MLIR (Multi-Level Intermediate Representation), sviluppatu da u prughjettu LLVM è furnisce funzioni supplementari per ottimisà u processu di un gràficu di flussu di dati. U compilatore permette di utilizà diversi backends chì supportanu MLIR per generà codice macchina.

L'usu di meccanismi hardware supplementari per accelerà i calculi permette di ottene un rendimentu chì, cù calculi intensivi, supera l'applicazioni C / C ++. Per esempiu, quandu pruvate una applicazione per generà un set Mandelbrot, l'applicazione Mojo compilata, quandu eseguita in a nuvola AWS (r7iz.metal-16xl), era 6 volte più veloce di l'implementazione C ++ (0.03 sec. vs. 0.20 sec. .), è ancu 35 mila volte più veloce di una applicazione Python chì utilizeghja stock CPython 3.10.9 (0.03 sec vs 1027 sec) è 1500 volte più veloce cù PYPY (0.03 sec vs 46.1 sec).

Quandu valutà a prestazione in l'area di risolve i prublemi di apprendimentu di macchina, a pila Modular Inference Engine AI scritta in lingua Mojo, paragunata à una soluzione basata nantu à a biblioteca TensorFlow, hè stata 3 volte più veloce in un sistema cun Intel. processore quandu trasfurmà un mudellu di lingua, 6.4 volte più veloce quandu l'esekzione di u mudellu di generazione di ricunniscenza è 2.1 volte più veloce quandu si travaglia cù mudelli per trasfurmà l'infurmazioni visuali. Quandu si usanu processori AMD, u guadagnu quandu si usa Mojo era 3.2, 5 è 2.2 volte, è quandu si usanu processori ARM - 5.3, 7.5 è 1.7 volte, rispettivamente. A suluzione basata in PyTorch hà ritardatu Mojo da 1.4, 1.1 è 1.5 volte nantu à u CPU Intel, 2.1, 1.2 è 1.5 volte in u CPU AMD è 4, 4.3 è 1.3 volte in u CPU ARM.

LLVM Creator sviluppa una nova lingua di prugrammazione Mojo

A lingua accumpagna a tipografia statica è e funzioni di salvezza di memoria di bassu livellu chì ricordanu e caratteristiche di Rust cum'è u seguimentu di a vita di riferimentu è u verificatore di prestitu variabile (verificatore di prestitu). In più di i mezi per u funziunamentu sicuru cù puntatori, a lingua furnisce ancu funzioni per u travagliu di livellu bassu, per esempiu, hè pussibule accede direttamente à a memoria in modu micca sicuru utilizendu u tipu Pointer, chjamate struzzioni SIMD individuali, o accede à estensioni hardware cum'è cum'è TensorCores è AMX.

LLVM Creator sviluppa una nova lingua di prugrammazione Mojo

Per simplificà a separazione di u codice Python classicu è ottimizatu per e funzioni cù definizioni di tipu esplicite per tutte e variàbili, hè prupostu di utilizà una keyword separata "fn" invece di "def". In modu simile per e classi, se avete bisognu di imballà staticamenti dati in memoria in tempu di compilazione (cum'è in C), invece di "classe" pudete aduprà u tipu "struct". Hè ancu pussibule impurtà solu moduli in lingue C / C ++, per esempiu, per impurtà a funzione cos da a biblioteca di matematica, pudete specificà "da "math.h" impurtà cos".

Source: opennet.ru

Add a comment