LLVM looja arendab uut programmeerimiskeelt Mojo

Chris Lattner, LLVMi asutaja ja peaarhitekt ning programmeerimiskeele Swift looja, koos Tim Davise, endise Google'i AI-projektide juhi, nagu Tensorflow ja JAX, esitlesid uut programmeerimiskeelt Mojo, mis ĂŒhendab uurimisarenduse ja kiire prototĂŒĂŒpimise lihtsuse kĂ”rge jĂ”udlusega lĂ”ppproduktide loomisvĂ”imega. Esimest saavutatakse Python'i keele tuttava sĂŒntaksi kasutamise kaudu, teist aga masinkoodi kompileerimise, mĂ€lu ohutu töö mehhanismide ja arvutuskiirendamise vahendite rakendamise kaudu.

Projekt on keskendunud masinĂ”ppe arendusele, kuid samas esitletakse seda ĂŒldotstarbelise keelena, mis laiendab Python'i vĂ”imalusi sĂŒsteemse programmeerimise kaudu ja sobib laia valiku ĂŒlesannete tĂ€itmiseks. NĂ€iteks saab keelt rakendada sellistes valdkondades nagu kĂ”rge jĂ”udlusega arvutamine, andmete töötlemine ja transformeerimine. Huvitav omadus Mojo keeles on emoji-sĂŒmboli â€žđŸ”„â€œ kasutamine koodifailide laiendina (nt „helloworld.đŸ”„â€œ), lisaks tekstilisele laiendile „.mojo“.

Praegu on keel intensiivse arenduse faasis ning testimiseks on saadaval ainult veebiliides. Iseseisvad versioonid kohalikele sĂŒsteemidele lubatakse avaldada hiljem, pĂ€rast tagasiside saamist interaktiivse veebikeskkonna toimimise kohta. Kompilaatori, JIT'i ja teiste projekti seotud tööde lĂ€htekoodid plaanitakse avada pĂ€rast sisemise arhiitektuuri projekteerimise lĂ”petamist (tööpaberiku arenduse mudel meenutab LLVMi, Clangi ja Swifti arenduse algfaasi). Kuna Mojo sĂŒntaks pĂ”hineb Python'il ja tĂŒĂŒbimudel on C/C+-iga sarnane, on tulevikus plaanis vĂ€lja töötada tööriistad, mis lihtsustavad olemasolevate C/C++ ja Python'is kirjutatud projektide tĂ”lkimist Mojo'sse ning hĂŒbriidprojektide, mis kombineerivad koodi Python'is ja Mojo's, arendamist.

Projekt on suunatud sĂŒsteemi riistvaraliste ressursside kaasamisele heterogeensetes sĂŒsteemides arvutuste teostamiseks. NĂ€iteks vĂ”ivad Mojo keeles rakenduste tĂ€itmiseks ja arvutuste paralleelseks jagamiseks kasutada GPU-sid, spetsialiseeritud kiirendajaid masinĂ”ppe jaoks ja vektorpinkide protsessorite kĂ€ske (SIMD). Eraldi Python'i alakeele arendamise pĂ”hjuseks, selle asemel et optimeerida olemasolevat CPython'i, on vĂ€lja toodud fookus kompileerimisele, sĂŒsteemse programmeerimise vĂ”imaluste integreerimisele ja tĂ€iesti erineva sisemise arhitektuuri kasutamisele, mis vĂ”imaldab koodi töödelda GPU-del ja erinevatel riistvarakiirenditel. Samuti kavatsevad Mojo arendajad vĂ”imalikult palju jĂ€rgida CPython'i ĂŒhilduvust.

Mojo't saab kasutada nii tĂ”lgendamisreĆŸiimis JIT-i abil kui ka tĂ€itmistfailide kompileerimiseks (AOT, ahead-of-time). Kompilaatorisse on integreeritud kaasaegsed automaatse optimeerimise, vahemĂ€lu ja jaotatud kompileerimise tehnoloogiad. Mojo keeles skriptid muudetakse madala taseme vahe-koodiks MLIR (Multi-Level Intermediate Representation), mille arendab LLVM projekt ja mis pakub tĂ€iendavaid optimeerimisvĂ”imalusi andmevoo graafide töötlemiseks. Kompilaator vĂ”imaldab kasutada masinkoodi genereerimiseks erinevaid backende, mis toetavad MLIR-i.

Lisariistvaramehhanismide kaasamine arvutuste kiirendamiseks vĂ”imaldab saavutada jĂ”udlust, mis intensiivsete arvutuste puhul ĂŒletab C/C++ rakenduste omasid. NĂ€iteks Mandelbroti hulga genereerimiseks mĂ”eldud rakenduse testimisel oli Mojo keeles kompileeritud rakendus AWS (r7iz.metal-16xl) keskkonnas 6 korda kiirem kui C++ rakenduse teostus (0,03 sek. vĂ”rreldes 0,20 sek.) ning 35 000 korda kiirem kui Python'i rakendus, kasutades standardset CPython 3.10.9 (0,03 sek. vĂ”rreldes 1027 sek.) ja 1500 korda kiirem kui PYPY kasutamisel (0,03 sek. vĂ”rreldes 46,1 sek.).

MasinĂ”ppeĂŒlesannete soorituse hindamisel on AI-pakk Modular Inference Engine, mis on kirjutatud Mojo keeles, vĂ”rreldes TensorFlow raamatukogul pĂ”hineva lahendusega, Intel CPU sĂŒsteemis kolm korda kiirem keeletehnoloogia mudeli töötlemisel, 6.4 korda kiirem soovitusmudeli kĂ€itamisel ja 2.1 korda kiirem visuaalsete teadete mudelite töötlemisel. AMD protsessoritega Mojo kasutamise eelised olid vastavalt 3.2, 5 ja 2.2 korda, ning ARM protsessoritega 5.3, 7.5 ja 1.7 korda. PyTorch-lahendus jĂ€i Mojo-le alla Intel CPU-l 1.4, 1.1 ja 1.5 korda, AMD CPU-l 2.1, 1.2 ja 1.5 korda, ning ARM CPU-l vastavalt 4, 4.3 ja 1.3 korda.

LLVM looja arendab uut programmeerimiskeelt Mojo

Keele toetab staatiline tĂŒĂŒpide kontroll ja tööriistad mĂ€lu madalal tasemel turvaliseks tööks, mis meenutab Rust keele vĂ”imalusi, nĂ€iteks viidete eluea jĂ€lgimine ja muutujate laenamise kontroll (borrow checker). Lisaks mĂ€lu turvalisele töötlemisele on keeles olemas ka madala taseme töövĂ”imalused, nĂ€iteks otse mĂ€lu kĂ€sitlemine unsafe reĆŸiimis kasutades Pointer tĂŒĂŒpi, ĂŒksikute SIMD-kĂ€skude kutsumine vĂ”i juurdepÀÀs riistvaralistele tĂ€iendustele, nagu TensorCores ja AMX.

LLVM looja arendab uut programmeerimiskeelt Mojo

Klassikalise ja optimeeritud Python-koodi eristamise lihtsustamiseks on ettepanek kasutada eraldi vĂ”tmesĂ”na „fn” asemele „def” funktsioonide puhul, kus on selge tĂŒĂŒpide mÀÀramine kĂ”igile muutujatele. Sarnasel viisil, kui andmete staatilist pakkimist mĂ€llu on vaja kompileerimise ajal (sarnaselt C-ga), vĂ”ib „class” asemel kasutada tĂŒĂŒpi „struct”. Samuti on vĂ”imalik lihtne moodulite import C/C++ keeltes, nĂ€iteks funktsiooni cos importimiseks math raamatukogust vĂ”ib mĂ€rkida „from 'math.h' import cos”.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster