LLVM Creator dezvoltă un nou limbaj de programare Mojo

Chris Lattner, fondatorul și arhitectul șef al LLVM și creatorul limbajului de programare Swift, și Tim Davis, fost șef al proiectelor Google AI, cum ar fi Tensorflow și JAX, au introdus un nou limbaj de programare, Mojo, care combină ușurința de utilizare pentru dezvoltarea cercetării și prototipare rapidă cu potențialul de a formula produse finale de înaltă performanță. Primul se realizează prin utilizarea sintaxei familiare a limbajului Python, iar al doilea prin capacitatea de a compila în cod mașină, mecanisme sigure pentru memorie și utilizarea instrumentelor de accelerare hardware.

Proiectul este axat pe utilizarea pentru dezvoltare în domeniul învățării automate, dar este prezentat ca un limbaj de uz general care extinde capacitățile Python cu instrumente de programare a sistemelor și este potrivit pentru o gamă largă de sarcini. De exemplu, limbajul este aplicabil în domenii precum calculul de înaltă performanță, procesarea și transformarea datelor. O caracteristică interesantă a Mojo este capacitatea de a specifica caracterul emoji „🔥” ca extensie pentru fișierele de cod (de exemplu, „helloworld.🔥”), în plus față de extensia de text „.mojo”.

În prezent, limbajul se află în stadiul de dezvoltare intensivă și doar interfața online este oferită pentru testare. Ansambluri separate pentru rularea pe sistemele locale sunt promise a fi publicate ulterior, după primirea feedback-ului privind funcționarea mediului web interactiv. Codul sursă pentru compilator, JIT și alte dezvoltări legate de proiect este planificat să fie deschis după finalizarea arhitecturii interne (modelul de dezvoltare a unui prototip funcțional în spatele ușilor închise amintește de stadiul inițial de dezvoltare a LLVM, Clang și Rapid). Deoarece sintaxa Mojo se bazează pe limbajul Python, iar sistemul de tipări este aproape de C/C++, pe viitor intenționează să dezvolte instrumente pentru a simplifica traducerea proiectelor existente scrise în C/C++ și Python în Mojo, precum și pentru a dezvolta proiecte hibride care combină codul Python și Mojo.

Proiectul este conceput pentru a implica resursele hardware disponibile ale sistemelor eterogene în efectuarea calculelor. De exemplu, GPU-urile, acceleratoarele specializate de învățare automată și vectorii de instrucțiuni ale procesorului (SIMD) pot fi utilizate pentru a rula aplicații Mojo și a paraleliza calculele. Motivele prezentate pentru dezvoltarea unui subset separat al limbajului Python, mai degrabă decât a se alătura activității de optimizare CPython existente includ concentrarea pe compilare, integrarea capacităților de programare a sistemului și utilizarea unei arhitecturi interne fundamental diferite, care permite codului să ruleze pe GPU-uri și diverse acceleratoare hardware. Cu toate acestea, dezvoltatorii Mojo intenționează să rămână compatibili cu CPython cât mai mult posibil.

Mojo poate fi folosit atât în ​​modul de interpretare folosind JIT, cât și pentru compilare în fișiere executabile (AOT, înainte de timp). Compilatorul are încorporate tehnologii moderne pentru optimizare automată, stocare în cache și compilare distribuită. Textele sursă în limbajul Mojo sunt convertite în cod intermediar de nivel scăzut MLIR (Multi-Level Intermediate Representation), dezvoltat de proiectul LLVM și oferind capabilități suplimentare pentru optimizarea procesării graficului fluxului de date. Compilatorul vă permite să utilizați diverse backend-uri care acceptă MLIR pentru a genera codul de mașină.

Utilizarea mecanismelor hardware suplimentare pentru a accelera calculele face posibilă obținerea unor performanțe superioare aplicațiilor C/C++ în timpul calculelor intensive. De exemplu, la testarea unei aplicații pentru generarea setului Mandelbrot, o aplicație compilată în limbajul Mojo atunci când este executată în cloud AWS (r7iz.metal-16xl) s-a dovedit a fi de 6 ori mai rapidă decât implementarea în C++ (0.03 sec. vs. . 0.20 sec.), și, de asemenea, de 35 de mii de ori mai rapidă decât o aplicație Python când se utilizează CPython standard 3.10.9 (0.03 sec. vs. 1027 sec.) și de 1500 de ori mai rapid când se folosește PYPY (0.03 sec. vs. 46.1 sec.) .

La evaluarea performanței în domeniul rezolvării problemelor de învățare automată, AI ​​stack Modular Inference Engine, scris în limbajul Mojo, în comparație cu o soluție bazată pe biblioteca TensorFlow, a fost de 3 ori mai rapid la procesarea unui model de limbaj pe un sistem cu un procesor Intel, de 6.4 ori mai rapid la procesarea execuției modelului de generare a recomandărilor și de 2.1 ori mai rapid la lucrul cu modele pentru procesarea informațiilor vizuale. La utilizarea procesoarelor AMD, câștigurile la utilizarea Mojo au fost de 3.2, 5 și 2.2 ori, iar la utilizarea procesoarelor ARM - de 5.3, 7.5 și, respectiv, 1.7 ori. Soluția bazată pe PyTorch a rămas în urma lui Mojo cu 1.4, 1.1 și 1.5 ori pe procesoarele Intel, de 2.1, 1.2 și 1.5 ori pe procesoarele AMD și de 4, 4.3 și 1.3 ori pe procesoarele ARM.

LLVM Creator dezvoltă un nou limbaj de programare Mojo

Limbajul acceptă tastarea statică și funcții de nivel scăzut de siguranță pentru memorie, care amintesc de Rust, cum ar fi urmărirea pe durata de viață a referințelor și verificarea împrumuturilor. Pe lângă facilitățile pentru lucrul în siguranță cu pointeri, limbajul oferă și funcții pentru lucru la nivel scăzut, de exemplu, acces direct la memorie în modul nesigur folosind tipul Pointer, apelarea instrucțiunilor individuale SIMD sau accesarea extensiilor hardware precum TensorCores și AMX .

LLVM Creator dezvoltă un nou limbaj de programare Mojo

Pentru a simplifica separarea codului Python clasic și optimizat pentru funcțiile cu definiții explicite de tip pentru toate variabilele, se propune utilizarea unui cuvânt cheie separat „fn” în loc de „def”. În mod similar pentru clase, dacă trebuie să împachetați static datele în memorie în timpul compilării (ca în C), puteți utiliza tipul „struct” în loc de „class”. De asemenea, este posibil să importați pur și simplu module în limbaje C/C++, de exemplu, pentru a importa funcția cos din biblioteca de matematică, puteți specifica „de la „math.h” import cos”.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster