Tvorca LLVM vyvíja nový programovací jazyk Mojo

Chris Lattner, zakladateľ a hlavný architekt LLVM a tvorca programovacieho jazyka Swift, a Tim Davis, bývalý vedúci projektov umelej inteligencie Google, ako sú Tensorflow a JAX, predstavili nový programovací jazyk Mojo, ktorý spája jednoduché použitie pre výskum a vývoj. rýchle prototypovanie s potenciálom formulovať vysokovýkonné konečné produkty. Prvý je dosiahnutý použitím známej syntaxe jazyka Python a druhý prostredníctvom schopnosti kompilovať do strojového kódu, pamäťovo bezpečných mechanizmov a použitia nástrojov na hardvérovú akceleráciu.

Projekt je zameraný na využitie pre vývoj v oblasti strojového učenia, ale je prezentovaný ako univerzálny jazyk, ktorý rozširuje možnosti Pythonu o systémové programovacie nástroje a je vhodný pre široké spektrum úloh. Jazyk je napríklad použiteľný v oblastiach, ako je vysokovýkonná výpočtová technika, spracovanie a transformácia údajov. Zaujímavou vlastnosťou Mojo je možnosť špecifikovať emoji znak „🔥“ ako príponu pre súbory kódu (napríklad „helloworld.🔥“), okrem textovej prípony „.mojo“.

V súčasnosti je jazyk v štádiu intenzívneho vývoja a na testovanie je ponúkané len online rozhranie. Samostatné zostavy pre beh na lokálnych systémoch sa sľubujú zverejniť neskôr, po získaní spätnej väzby na fungovanie interaktívneho webového prostredia. Zdrojový kód pre kompilátor, JIT a ďalší vývoj súvisiaci s projektom sa plánuje otvoriť po dokončení internej architektúry (model vývoja funkčného prototypu za zatvorenými dverami pripomína počiatočnú fázu vývoja LLVM, Clang a Swift). Keďže syntax Mojo je založená na jazyku Python a typový systém je blízky C/C++, v budúcnosti plánujú vyvinúť nástroje na zjednodušenie prekladu existujúcich projektov napísaných v C/C++ a Pythone do Mojo, ako aj na vývoj hybridných projektov kombinujúcich kód Python a Mojo.

Projekt je navrhnutý tak, aby zahŕňal dostupné hardvérové ​​zdroje heterogénnych systémov pri vykonávaní výpočtov. Napríklad GPU, špecializované urýchľovače strojového učenia a procesorové inštrukčné vektory (SIMD) možno použiť na spúšťanie aplikácií Mojo a paralelizáciu výpočtov. Dôvody pre vývoj samostatnej podmnožiny jazyka Python namiesto toho, aby sa pripojili k existujúcej optimalizačnej práci CPython, zahŕňajú zameranie sa na kompiláciu, integráciu možností systémového programovania a použitie zásadne odlišnej internej architektúry, ktorá umožňuje bežať kódu na GPU a rôznych hardvérové ​​akcelerátory. Vývojári Mojo však majú v úmysle zostať čo najviac kompatibilní s CPythonom.

Mojo je možné použiť ako v režime interpretácie pomocou JIT, tak aj na kompiláciu do spustiteľných súborov (AOT, predčasne). Kompilátor má zabudované moderné technológie pre automatickú optimalizáciu, ukladanie do vyrovnávacej pamäte a distribuovanú kompiláciu. Zdrojové texty v jazyku Mojo sú konvertované do nízkoúrovňového stredného kódu MLIR (Multi-Level Intermediate Representation), vyvinutý v rámci projektu LLVM a poskytujúci ďalšie možnosti pre optimalizáciu spracovania grafu toku dát. Kompilátor vám umožňuje použiť rôzne backendy, ktoré podporujú MLIR na generovanie strojového kódu.

Použitie dodatočných hardvérových mechanizmov na zrýchlenie výpočtov umožňuje dosiahnuť výkon, ktorý je lepší ako aplikácie v C/C++ počas intenzívnych výpočtov. Napríklad pri testovaní aplikácie na generovanie Mandelbrotovej množiny sa skompilovaná aplikácia v jazyku Mojo pri spustení v cloude AWS (r7iz.metal-16xl) ukázala ako 6-krát rýchlejšia ako implementácia v C++ (0.03 sek. vs. 0.20 s) a tiež 35 3.10.9-krát rýchlejšie ako aplikácia Python pri použití štandardného CPythonu 0.03 (1027 s oproti 1500 s) a 0.03-krát rýchlejšie pri použití PYPY (46.1 s oproti XNUMX s) .

Pri hodnotení výkonu v oblasti riešenia problémov strojového učenia bol modul AI ​​stack Modular Inference Engine napísaný v jazyku Mojo v porovnaní s riešením založeným na knižnici TensorFlow 3-krát rýchlejší pri spracovaní jazykového modelu na systéme s procesor Intel, 6.4-krát rýchlejší pri spracovaní vykonávania modelu generovania odporúčaní a 2.1-krát rýchlejší pri práci s modelmi na spracovanie vizuálnych informácií. Pri použití procesorov AMD boli zisky pri použití Mojo 3.2, 5 a 2.2 krát a pri použití procesorov ARM - 5.3, 7.5 a 1.7 krát. Riešenie založené na PyTorch zaostávalo za Mojo o 1.4, 1.1 a 1.5-krát na procesoroch Intel, 2.1-, 1.2- a 1.5-krát na CPU AMD a 4, 4.3 a 1.3-krát na CPU ARM.

Tvorca LLVM vyvíja nový programovací jazyk Mojo

Jazyk podporuje statické písanie a nízkoúrovňové funkcie pamäťovej bezpečnosti pripomínajúce Rust, ako je sledovanie životnosti odkazov a kontrola výpožičiek. Okrem možností pre bezpečnú prácu s ukazovateľmi poskytuje jazyk aj funkcie pre prácu na nízkej úrovni, napríklad priamy prístup do pamäte v nebezpečnom režime pomocou typu Pointer, volanie individuálnych inštrukcií SIMD alebo prístup k hardvérovým rozšíreniam, ako sú TensorCores a AMX. .

Tvorca LLVM vyvíja nový programovací jazyk Mojo

Na zjednodušenie oddelenia klasického a optimalizovaného kódu Pythonu pre funkcie s explicitnými definíciami typu pre všetky premenné sa navrhuje použiť samostatné kľúčové slovo „fn“ namiesto „def“. Podobne pre triedy, ak potrebujete počas kompilácie staticky zabaliť dáta do pamäte (ako v C), môžete použiť typ „struct“ namiesto „class“. Je tiež možné jednoducho importovať moduly v jazykoch C/C++, napríklad pre import funkcie cos z matematickej knižnice môžete zadať „from “math.h” import cos”.

Zdroj: opennet.ru

Pridať komentár