LLVM sortzaileak Mojo programazio-lengoaia berria garatzen du

Chris Lattner-ek, LLVM-en sortzaile eta arkitekto nagusiak eta Swift programazio-lengoaiaren sortzailea, eta Tim Davis-ek, Tensorflow eta JAX bezalako Google AI proiektuen buru ohiak, Mojo programazio-lengoaia berri bat aurkeztu zuten, ikerketa-garapenerako erabiltzeko erraztasuna eta erabilera-erraztasuna uztartzen dituena. prototipo azkarrak errendimendu handiko azken produktuak formulatzeko ahalmenarekin. Lehenengoa Python lengoaiaren sintaxi ezagunaren erabileraren bidez lortzen da, eta bigarrena makina-kodean, memoria seguruko mekanismoetan eta hardware-azelerazio-tresnen erabileran konpilatzeko gaitasunaren bidez.

Proiektua ikaskuntza automatikoaren alorrean garatzeko erabilerara bideratuta dago, baina helburu orokorreko lengoaia gisa aurkezten da, Python-en gaitasunak sistemak programatzeko tresnekin zabaltzen dituena eta zeregin askotarako egokia dena. Esaterako, hizkuntza errendimendu handiko informatika, datuen tratamendua eta eraldaketa bezalako arloetan aplikagarria da. Mojoren ezaugarri interesgarri bat "πŸ”₯" emoji karakterea kode fitxategietarako luzapen gisa zehazteko gaitasuna da (adibidez, "helloworld.πŸ”₯"), ".mojo" testu-luzapenaz gain.

Gaur egun, hizkuntza garapen intentsiboaren fasean dago eta online interfazea soilik eskaintzen da probak egiteko. Tokiko sistemetan exekutatzeko muntaia bereiziak geroago argitaratuko direla agintzen da, web ingurune interaktiboaren funtzionamenduari buruzko iritzia jaso ondoren. Konpiladorearen, JITren eta proiektuarekin lotutako beste garapen batzuen iturburu-kodea barne arkitektura amaitu ondoren irekitzea aurreikusi da (ate itxi atzean lan egiteko prototipoa garatzeko ereduak LLVM, Clang eta Clang-en garapenaren hasierako fasea gogorarazten du. Azkarra). Mojo sintaxia Python lengoaian oinarritzen denez, eta tipo-sistema C/C++tik gertu dagoenez, etorkizunean C/C++ eta Python-en Mojora idatzitako lehendik dauden proiektuen itzulpena errazteko tresnak garatzeko asmoa dute, baita Python kodea eta Mojo konbinatuz proiektu hibridoak garatzeko.

Proiektua sistema heterogeneoen hardware baliabide eskuragarriak kalkuluak egiterakoan inplikatzeko diseinatuta dago. Adibidez, GPUak, ikaskuntza automatikoko azeleragailu espezializatuak eta prozesadorearen instrukzio-bektoreak (SIMD) erabil daitezke Mojo aplikazioak exekutatzeko eta kalkuluak paralelizatzeko. Lehendik dagoen CPython optimizazio lanarekin bat egin beharrean Python lengoaiaren azpimultzo bereizi bat garatzeko emandako arrazoien artean, konpilazioan, sistemaren programazio gaitasunen integrazioan eta kodea GPUetan eta hainbatetan exekutatzeko aukera ematen duen barne-arkitektura funtsean ezberdina erabiltzea dago. hardware azeleragailuak. Hala ere, Mojo garatzaileek CPython-ekin bateragarri izaten jarraitzeko asmoa dute ahalik eta gehien.

Mojo interpretazio moduan erabil daiteke JIT erabiliz, eta fitxategi exekutagarrietan biltzeko (AOT, aurretik). Konpilatzaileak teknologia modernoak ditu optimizazio automatikorako, cachean eta konpilazio banaturako. Mojo hizkuntzan iturburu-testuak maila baxuko bitarteko kode MLIR (Multi-Level Intermediate Representation) bihurtzen dira, LLVM proiektuak garatua eta datu-fluxuaren grafikoaren prozesamendua optimizatzeko gaitasun gehigarriak eskaintzen ditu. Konpilatzaileak MLIR onartzen duten hainbat backend erabil ditzakezu makina kodea sortzeko.

Kalkuluak bizkortzeko hardware-mekanismo osagarriak erabiltzeak C/C++ aplikazioen errendimendu handiagoa lortzen du kalkulu intentsiboetan. Adibidez, Mandelbrot multzoa sortzeko aplikazio bat probatzean, Mojo hizkuntzan konpilatutako aplikazio bat AWS hodeian exekutatu zenean (r7iz.metal-16xl) C++-n inplementazioa baino 6 aldiz azkarragoa izan zen (0.03 seg. vs. . 0.20 seg.), eta Python aplikazio bat baino 35 mila aldiz azkarragoa CPython 3.10.9 estandarra erabiltzen denean (0.03 seg. vs. 1027 seg.) eta 1500 aldiz azkarragoa PYPY erabiltzen denean (0.03 seg. vs. 46.1 seg.) .

Ikaskuntza automatikoko arazoak ebazteko alorrean errendimendua ebaluatzean, Mojo hizkuntzan idatzitako AI-stack Modular Inference Engine-a TensorFlow liburutegian oinarritutako soluzio batekin alderatuta, 3 aldiz azkarragoa izan zen hizkuntza-eredu bat prozesatzen zuen sistema batean. Intel prozesadore bat, 6.4 aldiz azkarragoa gomendioak sortzeko ereduaren exekuzioa prozesatzen denean eta 2.1 aldiz azkarragoa ikusizko informazioa prozesatzeko ereduekin lan egitean. AMD prozesadoreak erabiltzean, Mojo erabiltzean irabaziak 3.2, 5 eta 2.2 aldiz izan ziren, eta ARM prozesadoreak erabiltzean - 5.3, 7.5 eta 1.7 aldiz, hurrenez hurren. PyTorch-en oinarritutako irtenbidea Mojoren atzetik 1.4, 1.1 eta 1.5 aldiz geratu zen Intel CPUetan, 2.1, 1.2 eta 1.5 aldiz AMD CPUetan eta 4, 4.3 eta 1.3 aldiz ARM CPUetan.

LLVM sortzaileak Mojo programazio-lengoaia berria garatzen du

Hizkuntzak idazketa estatikoa eta Rust gogorarazten duten memoria-segurtasun txikiko funtzioak onartzen ditu, hala nola erreferentzia-bizitzarako jarraipena eta mailegu-egiaztapena. Erakusleekin lan segururako instalazioez gain, hizkuntzak maila baxuko lanetarako eginbideak ere eskaintzen ditu, adibidez, modu seguruan memoriarako sarbidea zuzena Pointer mota erabiliz, SIMD argibide indibidualak deitzea edo TensorCores eta AMX bezalako hardware luzapenak atzitzea. .

LLVM sortzaileak Mojo programazio-lengoaia berria garatzen du

Aldagai guztietarako mota esplizituak dituzten funtzioetarako Python kode klasikoaren eta optimizatuaren bereizketa errazteko, "fn" gako-hitz bat erabiltzea proposatzen da "def"-en ordez. Klaseetan ere, konpilatzean datuak memorian estatikoki bildu behar badituzu (C-n bezala), "struct" mota erabil dezakezu "class"-en ordez. C/C++ lengoaietan moduluak inportatzea ere posible da, adibidez, cos funtzioa matematika liburutegitik inportatzeko, "from "math.h" inportatu cos" zehaztu dezakezu.

Iturria: opennet.ru

Gehitu iruzkin berria