LLVM Creator ûntwikkelet nije Mojo-programmearringstaal

Chris Lattner, oprjochter en haadarsjitekt fan LLVM en skepper fan 'e programmeartaal Swift, en Tim Davis, eardere haad fan Google AI-projekten lykas Tensorflow en JAX, yntrodusearren in nije programmeartaal, Mojo, dy't it gemak fan gebrûk kombineart foar ûndersyksûntwikkeling en rappe prototyping mei it potensjeel om einprodukten mei hege prestaasjes te formulearjen. De earste wurdt berikt troch it brûken fan 'e bekende syntaksis fan' e Python-taal, en de twadde troch de mooglikheid om te kompilearjen yn masinekoade, ûnthâldfeilige meganismen, en it brûken fan hardware-fersnellingsark.

It projekt is rjochte op gebrûk foar ûntwikkeling op it mêd fan masine learen, mar wurdt presintearre as in algemiene doeltaal dy't de mooglikheden fan Python útwreidet mei ark foar systeemprogrammearring en geskikt is foar in breed skala oan taken. Bygelyks, de taal is fan tapassing op gebieten lykas hege-performance computing, gegevens ferwurkjen en transformaasje. In nijsgjirrige eigenskip fan Mojo is de mooglikheid om it emoji-karakter "🔥" op te jaan as tafoeging foar koadebestannen (bygelyks "helloworld.🔥"), neist de tekstútwreiding ".mojo".

Op it stuit is de taal op it poadium fan yntinsive ûntwikkeling en allinich de online ynterface wurdt oanbean foar testen. Aparte gearkomsten foar it útfieren fan lokale systemen wurde tasein letter publisearre te wurden, nei ûntfangst fan feedback oer de wurking fan 'e ynteraktive webomjouwing. De boarnekoade foar de gearstaller, JIT en oare ûntwikkelingen yn ferbân mei it projekt is pland om te iepenjen nei't de ynterne arsjitektuer is foltôge (it model foar it ûntwikkeljen fan in wurkjend prototype efter sletten doarren docht tinken oan 'e earste faze fan ûntwikkeling fan LLVM, Clang en Swift). Sûnt de Mojo-syntaksis is basearre op de Python-taal, en it typesysteem tichtby C/C++ is, binne se yn 'e takomst fan plan ark te ûntwikkeljen om de oersetting fan besteande projekten te ferienfâldigjen skreaun yn C/C++ en Python nei Mojo, lykas ek om hybride projekten te ûntwikkeljen dy't Python-koade en Mojo kombinearje.

It projekt is ûntworpen om de beskikbere hardware-boarnen fan heterogene systemen te belûken by it útfieren fan berekkeningen. Bygelyks, GPU's, spesjalisearre masine-learversnellers, en prosessorynstruksjevektoren (SIMD) kinne brûkt wurde om Mojo-applikaasjes út te fieren en berekkeningen te parallelisearjen. De redenen jûn foar it ûntwikkeljen fan in aparte subset fan 'e Python-taal ynstee fan mei te dwaan oan it besteande CPython-optimalisearringswurk omfetsje in fokus op kompilaasje, yntegraasje fan systeemprogrammearringsmooglikheden, en it brûken fan in fûneminteel oare ynterne arsjitektuer wêrmei koade kin rinne op GPU's en ferskate hardware accelerators. De Mojo-ûntwikkelders binne lykwols fan doel om safolle mooglik kompatibel te bliuwen mei CPython.

Mojo kin brûkt wurde sawol yn ynterpretaasje modus mei help fan JIT, en foar kompilaasje yn útfierbere triemmen (AOT, foarút-of-time). De kompilator hat moderne technologyen ynboud foar automatyske optimalisaasje, caching en ferspraat kompilaasje. Boarneteksten yn 'e Mojo-taal wurde omset yn leech-nivo tuskenlizzende koade MLIR (Multi-Level Intermediate Representation), ûntwikkele troch it LLVM-projekt en jouwe ekstra mooglikheden foar it optimalisearjen fan de ferwurking fan 'e gegevensstreamgrafyk. De gearstaller lit jo ferskate backends brûke dy't MLIR stypje om masinekoade te generearjen.

It brûken fan ekstra hardwaremeganismen om berekkeningen te fersnellen makket it mooglik om prestaasjes te berikken dy't superieur binne oan C / C ++-applikaasjes by yntinsive berekkeningen. Bygelyks, by it testen fan in applikaasje foar it generearjen fan de Mandelbrot-set, in kompilearre applikaasje yn 'e Mojo-taal doe't útfierd yn' e AWS-wolk (r7iz.metal-16xl) die bliken 6 kear flugger te wêzen as de ymplemintaasje yn C ++ (0.03 sek. vs. 0.20 sek.), En ek 35 tûzen kear flugger as in Python-applikaasje by it brûken fan standert CPython 3.10.9 (0.03 sek. tsjin 1027 sek.) en 1500 kear flugger by it brûken fan PYPY (0.03 sek. tsjin 46.1 sek.) .

By it beoardieljen fan prestaasjes op it mêd fan it oplossen fan problemen mei masine-learen, wie de AI-stack Modular Inference Engine, skreaun yn 'e Mojo-taal, fergelike mei in oplossing basearre op 'e TensorFlow-bibleteek, 3 kear rapper by it ferwurkjen fan in taalmodel op in systeem mei in Intel-prosessor, 6.4 kear flugger by it ferwurkjen fan útfiering fan it oanbefellingsgeneraasjemodel en 2.1 kear flugger as jo wurkje mei modellen foar it ferwurkjen fan fisuele ynformaasje. By it brûken fan AMD-processors wiene de winsten by it brûken fan Mojo 3.2, 5 en 2.2 kear, en by it brûken fan ARM-processors - respektivelik 5.3, 7.5 en 1.7 kear. De PyTorch-basearre oplossing bleau efter Mojo troch 1.4, 1.1 en 1.5 kear op Intel CPUs, 2.1, 1.2 en 1.5 kear op AMD CPUs en 4, 4.3 en 1.3 kear op ARM CPUs.

LLVM Creator ûntwikkelet nije Mojo-programmearringstaal

De taal stipet statysk typen en lege-nivo ûnthâld-feilige funksjes dy't tinken docht oan Rust, lykas referinsje lifetime tracking en lien checker. Neist foarsjenningen foar feilich wurkjen mei oanwizers, biedt de taal ek funksjes foar wurk op leech nivo, bygelyks direkte tagong ta ûnthâld yn ûnfeilige modus mei it Pointer-type, yndividuele SIMD-ynstruksjes oproppe of tagong krije ta hardware-útwreidingen lykas TensorCores en AMX .

LLVM Creator ûntwikkelet nije Mojo-programmearringstaal

Om de skieding fan klassike en optimalisearre Python-koade te ferienfâldigjen foar funksjes mei eksplisite type definysjes foar alle fariabelen, wurdt foarsteld om in apart kaaiwurd "fn" te brûken ynstee fan "def". Lykas foar klassen, as jo gegevens statysk yn it ûnthâld moatte pakke by kompilaasje (lykas yn C), kinne jo it type "struct" brûke ynstee fan "klasse". It is ek mooglik om gewoan ymportearje modules yn C / C ++ talen, bygelyks, te ymportearjen de cos funksje út de wiskunde bibleteek, kinne jo opjaan "fan "math.h" ymport cos".

Boarne: opennet.ru

Add a comment