LLVM Creator izstrādā jaunu Mojo programmÄ“Å”anas valodu

Kriss Latners, LLVM dibinātājs un galvenais arhitekts un Swift programmÄ“Å”anas valodas radÄ«tājs, un Tims Deiviss, bijuÅ”ais Google AI projektu, piemēram, Tensorflow un JAX vadÄ«tājs, ieviesa jaunu programmÄ“Å”anas valodu Mojo, kas apvieno lietoÅ”anas vienkārŔību pētniecÄ«bas attÄ«stÄ«bai un ātra prototipu izstrāde ar iespēju izstrādāt augstas veiktspējas galaproduktus. Pirmais tiek panākts, izmantojot pazÄ«stamo Python valodas sintaksi, bet otrais, izmantojot spēju kompilēt maŔīnkodā, atmiņu droÅ”iem mehānismiem un aparatÅ«ras paātrināŔanas rÄ«ku izmantoÅ”anu.

Projekts ir vērsts uz izmantoÅ”anu attÄ«stÄ«bai maŔīnmācÄ«bas jomā, bet tiek pasniegts kā vispārēja lietojuma valoda, kas paplaÅ”ina Python iespējas ar sistēmu programmÄ“Å”anas rÄ«kiem un ir piemērota plaÅ”am uzdevumu klāstam. Piemēram, valoda ir piemērojama tādās jomās kā augstas veiktspējas skaitļoÅ”ana, datu apstrāde un transformācija. Interesanta Mojo funkcija ir iespēja papildus teksta paplaÅ”inājumam ".mojo" norādÄ«t emocijzÄ«mes rakstzÄ«mi "šŸ”„" kā koda failu paplaÅ”inājumu (piemēram, "helloworld.šŸ”„").

Å obrÄ«d valoda ir intensÄ«vas izstrādes stadijā un testÄ“Å”anai tiek piedāvāts tikai tieÅ”saistes interfeiss. AtseviŔķus komplektus darbināŔanai lokālajās sistēmās sola publicēt vēlāk, saņemot atsauksmes par interaktÄ«vās tÄ«mekļa vides darbÄ«bu. Kompilatora, JIT un citu ar projektu saistÄ«to izstrāžu pirmkodu plānots atvērt pēc iekŔējās arhitektÅ«ras pabeigÅ”anas (darba prototipa izstrādes modelis aiz slēgtām durvÄ«m atgādina LLVM, Clang un Swift). Tā kā Mojo sintakse ir balstÄ«ta uz Python valodu, un tipu sistēma ir tuva C/C++, tad nākotnē plānots izstrādāt rÄ«kus, lai vienkārÅ”otu esoÅ”o C/C++ un Python valodā rakstÄ«to projektu tulkoÅ”anu uz Mojo, kā arÄ« izstrādāt hibrÄ«dus projektus, apvienojot Python kodu un Mojo.

Projekts izstrādāts, lai aprēķinu veikÅ”anā iesaistÄ«tu heterogēno sistēmu pieejamos aparatÅ«ras resursus. Piemēram, GPU, specializētus maŔīnmācÄ«Å”anās paātrinātājus un procesora instrukciju vektorus (SIMD) var izmantot, lai palaistu Mojo lietojumprogrammas un paralēli veiktu aprēķinus. Iemesli, kādēļ tika izstrādāta atseviŔķa Python valodas apakÅ”kopa, nevis pievienoÅ”anās esoÅ”ajam CPython optimizācijas darbam, ietver koncentrÄ“Å”anos uz kompilāciju, sistēmas programmÄ“Å”anas iespēju integrāciju un principiāli atŔķirÄ«gas iekŔējās arhitektÅ«ras izmantoÅ”anu, kas ļauj kodam darboties ar GPU un dažādiem. aparatÅ«ras paātrinātāji. Tomēr Mojo izstrādātāji plāno palikt saderÄ«gi ar CPython, cik vien iespējams.

Mojo var izmantot gan interpretācijas režīmā, izmantojot JIT, gan apkopoÅ”anai izpildāmos failos (AOT, pirms laika). Kompilatorā ir iebÅ«vētas modernas tehnoloÄ£ijas automātiskai optimizācijai, keÅ”atmiņai un izplatÄ«tai kompilācijai. Avotteksti Mojo valodā tiek pārveidoti zema lÄ«meņa starpkodā MLIR (Multi-Level Intermediate Representation), kas izstrādāts LLVM projektā un nodroÅ”ina papildu iespējas datu plÅ«smas grafika apstrādes optimizÄ“Å”anai. Kompilators ļauj izmantot dažādas aizmugursistēmas, kas atbalsta MLIR, lai Ä£enerētu maŔīnas kodu.

Izmantojot papildu aparatÅ«ras mehānismus, lai paātrinātu aprēķinus, intensÄ«vu aprēķinu laikā ir iespējams sasniegt veiktspēju, kas ir labāka par C/C++ lietojumprogrammām. Piemēram, testējot lietojumprogrammu Mandelbrota kopas Ä£enerÄ“Å”anai, kompilēta lietojumprogramma Mojo valodā, kad tā tika izpildÄ«ta AWS mākonÄ« (r7iz.metal-16xl), izrādÄ«jās 6 reizes ātrāka nekā C++ ievieÅ”ana (0.03 sek. pretstatā). . 0.20 sek.), kā arÄ« 35 3.10.9 reižu ātrāk nekā Python lietojumprogramma, izmantojot standarta CPython 0.03 (1027 sek. pret 1500 sek.) un 0.03 reižu ātrāk, ja tiek izmantota PYPY (46.1 sek. pret XNUMX sek.) .

Novērtējot veiktspēju maŔīnmācÄ«Å”anās problēmu risināŔanas jomā, AI steck Modular Inference Engine, kas rakstÄ«ts Mojo valodā, salÄ«dzinot ar risinājumu, kura pamatā ir TensorFlow bibliotēka, bija 3 reizes ātrāks, apstrādājot valodas modeli sistēmā ar Intel procesors, 6.4 reizes ātrāk, apstrādājot ieteikumu Ä£enerÄ“Å”anas modeļa izpildi, un 2.1 reizi ātrāk, strādājot ar modeļiem vizuālās informācijas apstrādei. Izmantojot AMD procesorus, ieguvumi, izmantojot Mojo, bija 3.2, 5 un 2.2 reizes, bet, izmantojot ARM procesorus - attiecÄ«gi 5.3, 7.5 un 1.7 reizes. Uz PyTorch balstÄ«tais risinājums atpalika no Mojo 1.4, 1.1 un 1.5 reizes Intel CPU, 2.1, 1.2 un 1.5 reizes AMD centrālajos procesoros un 4, 4.3 un 1.3 reizes ARM procesoros.

LLVM Creator izstrādā jaunu Mojo programmÄ“Å”anas valodu

Valoda atbalsta statisko rakstÄ«Å”anu un zema lÄ«meņa atmiņai droÅ”as funkcijas, kas atgādina Rust, piemēram, atsauces kalpoÅ”anas laika izsekoÅ”anu un aizņemÅ”anās pārbaudÄ«tāju. Papildus iespējām droÅ”am darbam ar rādÄ«tājiem, valoda nodroÅ”ina arÄ« funkcijas zema lÄ«meņa darbam, piemēram, tieÅ”a piekļuve atmiņai nedroŔā režīmā, izmantojot Pointer tipu, atseviŔķu SIMD instrukciju izsaukÅ”ana vai piekļuve aparatÅ«ras paplaÅ”inājumiem, piemēram, TensorCores un AMX. .

LLVM Creator izstrādā jaunu Mojo programmÄ“Å”anas valodu

Lai vienkārÅ”otu klasiskā un optimizētā Python koda atdalÄ«Å”anu funkcijām ar precÄ«zām tipu definÄ«cijām visiem mainÄ«gajiem, tiek ierosināts izmantot atseviŔķu atslēgvārdu ā€œfnā€, nevis ā€œdefā€. LÄ«dzÄ«gi klasēm, ja jums ir nepiecieÅ”ams statiski iesaiņot datus atmiņā kompilācijas laikā (kā C), varat izmantot veidu ā€œstructā€, nevis ā€œclassā€. Ir iespējams arÄ« vienkārÅ”i importēt moduļus C/C++ valodās, piemēram, lai importētu funkciju cos no matemātikas bibliotēkas, var norādÄ«t ā€œno ā€œmath.hā€ import cosā€.

Avots: opennet.ru

Pievieno komentāru