LLVM Skepper ontwikkel nuwe Mojo-programmeertaal

Chris Lattner, stigter en hoofargitek van LLVM en skepper van die Swift-programmeertaal, en Tim Davis, voormalige hoof van Google KI-projekte soos Tensorflow en JAX, het 'n nuwe programmeertaal, Mojo, bekendgestel wat gebruiksgemak vir navorsingsontwikkeling en vinnige prototipering met die potensiaal om hoëprestasie-eindprodukte te formuleer. Die eerste word bereik deur die gebruik van die bekende sintaksis van die Python-taal, en die tweede deur die vermoë om in masjienkode saam te stel, geheue-veilige meganismes en die gebruik van hardeware-versnellingsgereedskap.

Die projek is gefokus op gebruik vir ontwikkeling in die veld van masjienleer, maar word aangebied as 'n algemene doeltaal wat die vermoëns van Python uitbrei met stelselprogrammeringsinstrumente en geskik is vir 'n wye reeks take. Die taal is byvoorbeeld van toepassing op gebiede soos hoëprestasie-rekenaarkunde, dataverwerking en transformasie. 'n Interessante kenmerk van Mojo is die vermoë om die emoji-karakter "🔥" te spesifiseer as 'n uitbreiding vir kodelêers (byvoorbeeld, "helloworld.🔥"), benewens die teksuitbreiding ".mojo".

Tans is die taal in die stadium van intensiewe ontwikkeling en slegs die aanlyn-koppelvlak word vir toetsing aangebied. Afsonderlike samestellings om op plaaslike stelsels te hardloop, word belowe om later gepubliseer te word, nadat terugvoer oor die werking van die interaktiewe webomgewing ontvang is. Die bronkode vir die samesteller, JIT en ander ontwikkelings wat met die projek verband hou, word beplan om oopgemaak te word nadat die interne argitektuur voltooi is (die model vir die ontwikkeling van 'n werkende prototipe agter geslote deure herinner aan die aanvanklike stadium van ontwikkeling van LLVM, Clang en Swift). Aangesien die Mojo-sintaksis op die Python-taal gebaseer is, en die tipestelsel naby aan C/C++ is, beplan hulle om in die toekoms gereedskap te ontwikkel om die vertaling van bestaande projekte wat in C/C++ en Python na Mojo geskryf is, te vereenvoudig, asook om hibriede projekte te ontwikkel wat Python-kode en Mojo kombineer.

Die projek is ontwerp om die beskikbare hardeware hulpbronne van heterogene stelsels te betrek by die uitvoer van berekeninge. Byvoorbeeld, GPU's, gespesialiseerde masjienleerversnellers en verwerkerinstruksievektore (SIMD) kan gebruik word om Mojo-toepassings te laat loop en berekeninge te paralleliseer. Die redes wat gegee word vir die ontwikkeling van 'n aparte subset van die Python-taal eerder as om by die bestaande CPython-optimeringswerk aan te sluit, sluit in 'n fokus op samestelling, integrasie van stelselprogrammeringsvermoëns, en die gebruik van 'n fundamenteel verskillende interne argitektuur wat dit toelaat om kode op GPU's en verskeie hardeware versnellers. Die Mojo-ontwikkelaars is egter van plan om soveel as moontlik met CPython versoenbaar te bly.

Mojo kan beide in interpretasiemodus gebruik word deur JIT te gebruik, en vir samestelling in uitvoerbare lêers (AOT, voor die tyd). Die samesteller het ingeboude moderne tegnologieë vir outomatiese optimalisering, cache en verspreide samestelling. Brontekste in die Mojo-taal word omgeskakel in laevlak-intermediêre kode MLIR (Multi-Level Intermediate Representation), ontwikkel deur die LLVM-projek en bied bykomende vermoëns vir die optimalisering van die verwerking van die datavloeigrafiek. Die samesteller laat jou toe om verskeie backends te gebruik wat MLIR ondersteun om masjienkode te genereer.

Die gebruik van bykomende hardeware meganismes om berekeninge te bespoedig maak dit moontlik om prestasie te behaal wat beter is as C/C++ toepassings tydens intensiewe berekeninge. Byvoorbeeld, wanneer 'n toepassing getoets word om die Mandelbrot-stel te genereer, het 'n saamgestelde toepassing in die Mojo-taal, wanneer dit in die AWS-wolk (r7iz.metal-16xl) uitgevoer is, 6 keer vinniger geblyk te wees as die implementering in C++ (0.03 sek. vs. 0.20 sek.), en ook 35 duisend keer vinniger as 'n Python-toepassing wanneer standaard CPython 3.10.9 (0.03 sek. vs. 1027 sek.) en 1500 keer vinniger gebruik word wanneer PYPY (0.03 sek. vs. 46.1 sek.) gebruik word. .

By die beoordeling van prestasie op die gebied van die oplossing van masjienleerprobleme, was die AI-stack Modular Inference Engine, geskryf in die Mojo-taal, in vergelyking met 'n oplossing gebaseer op die TensorFlow-biblioteek, 3 keer vinniger wanneer 'n taalmodel op 'n stelsel met 'n Intel-verwerker, 6.4 keer vinniger wanneer die uitvoering van die aanbevelinggenereringsmodel verwerk word en 2.1 keer vinniger wanneer daar met modelle gewerk word vir die verwerking van visuele inligting. By die gebruik van AMD-verwerkers was die winste met die gebruik van Mojo 3.2, 5 en 2.2 keer, en by die gebruik van ARM-verwerkers - onderskeidelik 5.3, 7.5 en 1.7 keer. Die PyTorch-gebaseerde oplossing het 1.4, 1.1 en 1.5 keer agter Mojo gebly op Intel SVE's, 2.1, 1.2 en 1.5 keer op AMD SVE's en 4, 4.3 en 1.3 keer op ARM SVE's.

LLVM Skepper ontwikkel nuwe Mojo-programmeertaal

Die taal ondersteun statiese tik en lae-vlak geheue-veilige kenmerke wat herinner aan Rust, soos verwysing leeftyd dop en leen checker. Benewens fasiliteite vir veilige werk met wysers, bied die taal ook kenmerke vir laevlak werk, byvoorbeeld, direkte toegang tot geheue in onveilige modus deur gebruik te maak van die Pointer-tipe, die oproep van individuele SIMD-instruksies, of toegang tot hardeware-uitbreidings soos TensorCores en AMX .

LLVM Skepper ontwikkel nuwe Mojo-programmeertaal

Om die skeiding van klassieke en geoptimaliseerde Python-kode vir funksies met eksplisiete tipe definisies vir alle veranderlikes te vereenvoudig, word voorgestel om 'n aparte sleutelwoord "fn" in plaas van "def" te gebruik. Net so vir klasse, as jy data staties in die geheue moet pak tydens samestelling (soos in C), kan jy die "struct" tipe gebruik in plaas van "klas". Dit is ook moontlik om modules eenvoudig in C/C++-tale in te voer, byvoorbeeld, om die cos-funksie vanaf die wiskunde-biblioteek in te voer, kan jy "vanaf "math.h" import cos" spesifiseer.

Bron: opennet.ru

Voeg 'n opmerking