LLVM sortzaileak Mojo programazio-lengoaia berria garatzen du

Chris Lattnerrek, LLVM-ren sortzaile eta arkitekto nagusiak eta Swift programazio-lengoaiaren sortzaileak, eta Tim Davisek, Google-ren IA proiektuen buru izandakoa (Tensorflow eta JAX, adibidez), Mojo izeneko programazio-lengoaia berri bat aurkeztu zuten, ikerketarako eta prototipo azkarrak egiteko erraztasuna eta errendimendu handiko azken produktuak eraikitzeko egokitasuna uztartzen dituena. Horretarako, Pythonen sintaxi ezaguna erabiltzen da, eta azken hori, berriz, konpilazio natiboaren, memoria-segurtasun mekanismoen eta hardware-azelerazioaren bidez.

Proiektuak makina-ikaskuntzaren garapenean oinarritzen da, baina baita ere Python sistema-programazio gaitasunekin zabaltzen duen eta zeregin sorta zabal baterako egokia den helburu orokorreko hizkuntza gisa aurkezten da. Adibidez, hizkuntza errendimendu handiko konputazioa eta datuen prozesamendua eta eraldaketa bezalako arloetan aplika daiteke. Mojoren ezaugarri interesgarri bat "🔥" emoji ikurra kode fitxategien luzapen gisa zehazteko gaitasuna da (adibidez, "helloworld.🔥"), ".mojo" testu luzapenaz gain.

Hizkuntza garapen intentsiboan dago gaur egun, eta online interfazea baino ez dago eskuragarri probak egiteko. Tokiko sistemetan exekutatzeko bertsio autonomoak geroago argitaratuko direla agintzen da, web ingurune interaktiboari buruzko iritzia jaso ondoren. Konpiladorearen, JITaren eta bestelako garapen erlazionatuen iturburu-kodea kode irekikoa izatea aurreikusten da barne-arkitektura amaitu ondoren (prototipo funtzional baten garapen-eredu itxiak LLVM, Clang eta Swift-en hasierako garapen-fasea gogorarazten du). Mojoren sintaxia Pythonen oinarrituta dagoenez, eta bere mota-sistema C/C++-ren antzekoa denez, etorkizuneko planen artean, dauden C/C++ eta Python proiektuak Mojora migratzea errazteko tresnak garatzea dago, baita Python eta Mojo kodea konbinatzen dituzten proiektu hibridoen garapena errazteko ere.

Proiektua sistema heterogeneoen hardware baliabideak kalkuluetarako aprobetxatzeko diseinatuta dago. Adibidez, GPUak, makina ikaskuntzako azeleragailu espezializatuak eta instrukzio bakarreko bektore prozesadoreak (SIMD) erabil daitezke Mojo aplikazioak exekutatzeko eta kalkuluak paralelizatzeko. Python azpimultzo bereizi bat garatzeko aipatutako arrazoien artean, CPython-en optimizaziorako oinarritu beharrean, konpilazioan arreta jartzea, sistemen programazio gaitasunen integrazioa eta GPUetan eta hainbat hardware azeleragailutan kodea exekutatzea ahalbidetzen duen barne arkitektura funtsean desberdina erabiltzea daude. Aldi berean, Mojo garatzaileek CPython-ekin bateragarritasuna ahalik eta gehien mantentzea dute helburu.

Mojo JIT (just-in-time) eta ahead-of-time (AOT) moduan erabil daiteke. Konpiladoreak optimizazio automatikorako, cacherako eta konpilazio banaturako teknologia modernoak barneratzen ditu. Mojo iturburu-kodea LLVM proiektuak garatu duen behe-mailako tarteko kodera (MLIR) bihurtzen da, eta datu-fluxuaren grafikoen prozesamendua optimizatzeko gaitasun gehigarriak eskaintzen ditu. Konpiladoreak makina-kodea sortzeko MLIR gaitutako hainbat backend onartzen ditu.

Hardwarearen azelerazio gehigarria aprobetxatzeak C/C++ aplikazioen errendimendua gainditzen duten kalkulu intentsiboetarako errendimendu hobekuntzak ahalbidetzen ditu. Adibidez, Mandelbrot multzoak sortzeko aplikazio bat probatzean, konpilatutako Mojo aplikazioa (r7iz.metal-16xl) C++ inplementazioa baino 6 aldiz azkarragoa izan zen AWS hodeian exekutatzen zenean (0.03 seg. 0.20 seg. vs.), Python aplikazioa baino 35 aldiz azkarragoa CPython 3.10.9 estandarra erabiltzean (0.03 seg. 1027 seg. vs.), eta 1500 aldiz azkarragoa PYPY erabiltzean (0.03 seg. 46.1 seg. vs.).

Makina-ikaskuntzaren errendimendua ebaluatzerakoan, Mojo-n idatzitako Modular Inference Engine AI pila 3 aldiz azkarragoa izan zen Intel prozesadore batean hizkuntza-eredu bat prozesatzean, 6.4 aldiz azkarragoa gomendio-eredu bat exekutatzean eta 2.1 aldiz azkarragoa informazio bisualaren prozesatzeko ereduak exekutatzean TensorFlow-en oinarritutako soluzio batekin alderatuta. AMD prozesadoreetan, Mojo-k 3.2x, 5x eta 2.2x errendimendu-irabaziak lortu zituen, eta ARM prozesadoreetan, berriz, 5.3x, 7.5x eta 1.7x errendimendu-irabaziak. PyTorch-en oinarritutako soluzioa Mojo-ren atzetik geratu zen 1.4x, 1.1x eta 1.5x Intel CPUetan, 2.1x, 1.2x eta 1.5x AMD CPUetan, eta 4x, 4.3x eta 1.3x ARM CPUetan.

LLVM sortzaileak Mojo programazio-lengoaia berria garatzen du

Hizkuntzak idazketa estatikoa eta Rust-en antzeko memoria-segurtasuneko behe-mailako ezaugarriak onartzen ditu, hala nola erreferentziaren bizitza-jarraipena eta mailegu-egiaztatzailea. Erakusleen segurtasuneko ezaugarriez gain, hizkuntzak behe-mailako gaitasunak ere eskaintzen ditu, hala nola memoria-sarbide zuzena modu ez-seguruan Pointer mota erabiliz, SIMD instrukzio indibidualak deitzea eta TensorCores eta AMX bezalako hardware-luzapenetara sartzea.

LLVM sortzaileak Mojo programazio-lengoaia berria garatzen du

Aldagai guztietarako mota esplizituki definituak dituzten funtzioetarako Python kode klasiko eta optimizatuaren bereizketa errazteko, "def" gako-hitz bereizi bat erabiltzea proposatzen da. Era berean, klaseetarako, datu estatikoak memorian paketatzea beharrezkoa bada konpilazio-garaian (C-n bezala), "struct" mota erabil daiteke "class"-en ordez. C/C++ moduluen inportazio sinplea ere posible da. Adibidez, cos funtzioa matematika liburutegitik inportatzeko, "from "math.h" import cos" zehaztu dezakezu.

Iturria: opennet.ru

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak 🔥 Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster