Krijuesi i LLVM po zhvillon një gjuhë programimi të re, Mojo

Chris Lattner, themelues dhe arkitekt kryesor i LLVM, si dhe krijuesi i gjuhës së programimit Swift, dhe Tim Davis, ish-drejtor i projekteve AI të Google, si Tensorflow dhe JAX, prezantuan një gjuhë programimi të re, Mojo, e cila kombinon thjeshtësinë e përdorimit për zhvillimet kërkimore dhe krijimin e shpejtë të prototipeve me aftësinë për të formuarprodukteve me performancë të lartë. Kjo arrihet falë përdorimit të sintaksës së njohur të gjuhës Python, dhe përmes mundësisë për kompilim në kodin e makinës, mekanizmave të punës së sigurt me memorie dhe angazhimit të mjeteve për akcelerimin harduerik të llogaritjeve.

Projekti fokusohet nĂ« pĂ«rdorimin pĂ«r zhvillime nĂ« fushĂ«n e mĂ«simit automatik, por gjithashtu paraqitet si njĂ« gjuhĂ« e pĂ«rgjithshme, e cila zgjeron mundĂ«sitĂ« e gjuhĂ«s Python me mjete programimi sistemik dhe Ă«shtĂ« e pĂ«rshtatshme pĂ«r njĂ« gamĂ« tĂ« gjerĂ« detyrash. PĂ«r shembull, gjuha Ă«shtĂ« e aplikueshme nĂ« fusha si llogaritjet me performancĂ« tĂ« lartĂ«, pĂ«rpunimi dhe transformimi i tĂ« dhĂ«nave. NjĂ« veçori interesante e Mojo Ă«shtĂ« mundĂ«sia pĂ«r tĂ« vendosur simbolin emoji "đŸ”„" si zgjerim pĂ«r skedarĂ«t me kod (p.sh., "helloworld.đŸ”„"), pĂ«rveç zgjerimit tekstual ".mojo.",

Aktualisht, gjuha është në fazën e zhvillimit intensiv dhe për testim ofrohet vetëm një ndërfaqe online. Ndërtesat e veçanta për ekzekutimin në sisteme lokale pritet të publikohen më vonë, pas marrjes së komenteve në lidhje me punën eambientit interaktiv web. Plani është që të hapen kodet burimore të kompilatorit, JIT dhe punimeve të tjera lidhur me projektin pas përfundimit të projektimit të arkitekturës së brendshme (modeli i zhvillimit të prototipit funksional pas dyerve të mbyllura i ngjason fazës fillestare të zhvillimit të LLVM, Clang dhe Swift). Duke qenë se sintaksa Mojo bazohet në gjuhën Python, dhe sistemi i tipeve është i afërt me C/C++, në të ardhmen planifikojnë të zhvillojnë mjete për të thjeshtuar transferimin në Mojo të projekteve ekzistuese, të shkruara në C/C++ dhe Python, si dhe për zhvillimin e projekteve hibride, që kombinojnë kodin në Python dhe Mojo.

Projekti është i orientuar drejt shfrytëzimit të burimeve të disponueshme të harduerit në sisteme heterogjene për të realizuar llogaritjet. Për shembull, për të ekzekutuar aplikacione në gjuhën Mojo dhe për të paralelizarar llogaritjet, mund të angazhohen GPU-të, përshpejtuesit e specializuar për mësimin makinerik dhe instrukcionet procesorëve vektorë (SIMD). Një nga arsyet për zhvillimin e një nëngrupi të veçantë të gjuhës Python, në vend që të përfshihet në optimizimin e CPython ekzistues, është orientimi drejt kompajlimit, integrimi i mundësive të programimit sistemor dhe përdorimi i një arkitekture të brendshme themelore të ndryshme që lejon ekzekutimin e kodit në GPU dhe përshpejtues të ndryshëm harduerikë. Ndërkohë, zhvilluesit e Mojo përpiqen të ruajnë sa më shumë të jetë e mundur compatibilitetin me CPython.

Mojo mund të përdoret si në modin e interpretimeve me përdorimin e JIT, ashtu edhe për kompajlim në skedarë ekzekutivë (AOT, ahead-of-time). Kompajleri përmban teknologji moderne për optimizimin automatizuar, caching dhe kompajlim të shpërndarë. Kodet burimor në gjuhën Mojo transformohen në kod të poshtëm të ndërmjetëm MLIR (Multi-Level Intermediate Representation), e zhvilluar nga projekti LLVM dhe që ofron mundësi shtesë për optimizimin e përpunimit të grafit të rrjedhës së të dhënave. Kompajleri lejon përdorimin e backwardëve të ndryshëm për gjenerimin e kodit makinerik, që mbështesin MLIR.

Angazhimi i mekanizmave të tjerë harduerikë për përshpejtimin e llogaritjeve mund të ofrojë performancë që gjatë llogaritjeve intensive kalon aplikacionet në C/C++. Për shembull, gjatë testimit të një aplikuese për gjenerimin e një morie Mandelbrot, aplikacioni i kompajluar në gjuhën Mojo, kur ekzekutohet në AWS cloud (r7iz.metal-16xl), është treguar 6 herë më i shpejtë se implementimi në C++ (0.03 sek. kundrejt 0.20 sek.), dhe gjithashtu 35 mijë herë më i shpejtë se aplikacioni në Python duke përdorur CPython standard 3.10.9 (0.03 sek. kundrejt 1027 sek.) dhe 1500 herë më i shpejtë duke përdorur PYPY (0.03 sek. kundrejt 46.1 sek.).

Kur pasi i vlerësohet performanca në zgjidhjen e problemeve të mësimit makiner, stoku AI Modular Inference Engine, i shkruar në gjuhën Mojo, në krahasim me zgjidhjen që bazohet në bibliotekën TensorFlow, është treguar tre herë më i shpejtë në një sistem me procesor Intel për përpunimin e modelit gjuhësor, 6.4 herë më i shpejtë në ekzekutimin e modelit të rekomandimeve dhe 2.1 herë më i shpejtë në punën me modelet për përpunimin e informacionit vizual. Përdorimi i procesorëve AMD ka rezultuar në një fitim prej 3.2, 5 dhe 2.2 herë duke përdorur Mojo, ndërsa me procesorët ARM - 5.3, 7.5 dhe 1.7 herë, përkatësisht. Zgjidhja bazuar në PyTorch ka mbetur prapa Mojo me 1.4, 1.1 dhe 1.5 herë në CPU Intel, me 2.1, 1.2 dhe 1.5 herë në CPU AMD dhe me 4, 4.3 dhe 1.3 herë në CPU ARM.

Krijuesi i LLVM po zhvillon një gjuhë programimi të re, Mojo

Gjuha mbështet tipizimin statik dhe mjete për punë të sigurta me nivel të ulët të memories, të ngjashme me mundësitë e gjuhës Rust, si ndjekja e kohës së jetës së referencave dhe kontrolli i huazimit të variablave (borrow checker). Përveç mjeteve për punë të sigurta me tregues, gjuha ofron edhe mundësi për punë të nivelit të ulët, për shembull, është e mundur të aksesoni drejtpërdrejt memorien në modalitetin unsafe duke përdorur llojin Pointer, thirrjen e instrukcioneve të veçanta SIMD ose aksesin në zgjerimet harduerike, si TensorCores dhe AMX.

Krijuesi i LLVM po zhvillon një gjuhë programimi të re, Mojo

Për të thjeshtuar ndarjen e kodit klasik dhe të optimizuar të Python për funksionet me definimin e qartë të tipeve për të gjitha variablat, sugjerohet përdorimi i një fjalëkalimi të veçantë 'fn' në vend të 'def'. Po ashtu, për klasat, kur është e nevojshme paketimi statik i të dhënave në memorje gjatë kompilimit (si në C), mund të përdoret tipi 'struct' në vend të 'class'. Gjithashtu, është e mundur importimi i moduleve në gjuhët C/C++, për shembull, për të importuar funksionin cos nga biblioteka math mund të theksohet 'from "math.h" import cos'.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster