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

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster