LLVM Creator vyvíjí nový programovací jazyk Mojo

Chris Lattner, zakladatel a hlavní architekt LLVM a tvůrce programovacího jazyka Swift, a Tim Davis, bývalý vedoucí projektů Google AI, jako jsou Tensorflow a JAX, představili nový programovací jazyk Mojo, který kombinuje snadnost použití pro výzkum a vývoj. rychlé prototypování s potenciálem formulovat vysoce výkonné koncové produkty. Prvního je dosaženo použitím známé syntaxe jazyka Python a druhého díky schopnosti kompilace do strojového kódu, paměťově bezpečných mechanismů a použití nástrojů hardwarové akcelerace.

Projekt je zaměřen na využití pro vývoj v oblasti strojového učení, ale je prezentován jako univerzální jazyk, který rozšiřuje možnosti Pythonu o systémové programovací nástroje a je vhodný pro širokou škálu úloh. Jazyk je například použitelný v oblastech, jako jsou vysoce výkonné výpočty, zpracování a transformace dat. Zajímavou funkcí Mojo je možnost specifikovat znak emoji „🔥“ jako příponu pro soubory kódu (například „helloworld.🔥“), kromě textové přípony „.mojo“.

V současné době je jazyk ve fázi intenzivního vývoje a k testování je nabízeno pouze online rozhraní. Samostatné sestavy pro běh na lokálních systémech mají být zveřejněny později, po obdržení zpětné vazby na fungování interaktivního webového prostředí. Zdrojový kód pro kompilátor, JIT a další vývoj související s projektem se plánuje otevřít po dokončení vnitřní architektury (model pro vývoj funkčního prototypu za zavřenými dveřmi připomíná počáteční fázi vývoje LLVM, Clang a Rychlý). Vzhledem k tomu, že syntaxe Mojo je založena na jazyce Python a typový systém se blíží C/C++, plánují v budoucnu vyvinout nástroje pro zjednodušení překladu stávajících projektů napsaných v C/C++ a Pythonu do Mojo, stejně jako vyvíjet hybridní projekty kombinující kód Python a Mojo.

Projekt je navržen tak, aby do provádění výpočtů zapojil dostupné hardwarové zdroje heterogenních systémů. Například GPU, specializované akcelerátory strojového učení a procesorové instrukční vektory (SIMD) lze použít ke spouštění aplikací Mojo a paralelizaci výpočtů. Důvody pro vývoj samostatné podmnožiny jazyka Python spíše než připojení se ke stávající optimalizační práci CPythonu zahrnují zaměření na kompilaci, integraci schopností systémového programování a použití zásadně odlišné vnitřní architektury, která umožňuje běh kódu na GPU a různých hardwarové akcelerátory. Vývojáři Mojo však hodlají zůstat co nejvíce kompatibilní s CPythonem.

Mojo lze použít jak v režimu interpretace pomocí JIT, tak pro kompilaci do spustitelných souborů (AOT, předběžně). Kompilátor má zabudované moderní technologie pro automatickou optimalizaci, ukládání do mezipaměti a distribuovanou kompilaci. Zdrojové texty v jazyce Mojo jsou převedeny do nízkoúrovňového středního kódu MLIR (Multi-Level Intermediate Representation), vyvinutého v rámci projektu LLVM a poskytujícího další možnosti pro optimalizaci zpracování grafu toku dat. Kompilátor umožňuje používat různé backendy, které podporují MLIR pro generování strojového kódu.

Použití dalších hardwarových mechanismů pro urychlení výpočtů umožňuje dosáhnout výkonu, který je lepší než aplikace C/C++ při intenzivních výpočtech. Například při testování aplikace pro generování sady Mandelbrot se zkompilovaná aplikace v jazyce Mojo při spuštění v cloudu AWS (r7iz.metal-16xl) ukázala jako 6krát rychlejší než implementace v C++ (0.03 s vs. . 0.20 s) a také 35 tisíckrát rychlejší než aplikace Python při použití standardního CPythonu 3.10.9 (0.03 s vs. 1027 s) a 1500krát rychlejší při použití PYPY (0.03 s vs. 46.1 s) .

Při hodnocení výkonu v oblasti řešení problémů strojového učení byl modul AI ​​stack Modular Inference Engine napsaný v jazyce Mojo ve srovnání s řešením založeným na knihovně TensorFlow 3krát rychlejší při zpracování jazykového modelu na systému s procesor Intel, 6.4krát rychlejší při zpracování provedení modelu generování doporučení a 2.1krát rychlejší při práci s modely pro zpracování vizuálních informací. Při použití procesorů AMD byly zisky při použití Mojo 3.2krát, 5krát a 2.2krát a při použití procesorů ARM - 5.3krát, 7.5krát a 1.7krát. Řešení založené na PyTorch zaostávalo za Mojo o 1.4, 1.1 a 1.5krát na CPU Intel, 2.1, 1.2 a 1.5krát na CPU AMD a 4, 4.3 a 1.3krát na CPU ARM.

LLVM Creator vyvíjí nový programovací jazyk Mojo

Jazyk podporuje statické psaní a nízkoúrovňové paměťově bezpečné funkce připomínající Rust, jako je sledování životnosti referencí a kontrola výpůjček. Kromě zařízení pro bezpečnou práci s ukazateli poskytuje jazyk také funkce pro práci na nízké úrovni, například přímý přístup do paměti v nebezpečném režimu pomocí typu Pointer, volání jednotlivých instrukcí SIMD nebo přístup k hardwarovým rozšířením, jako jsou TensorCores a AMX. .

LLVM Creator vyvíjí nový programovací jazyk Mojo

Pro zjednodušení oddělení klasického a optimalizovaného kódu Pythonu pro funkce s explicitními definicemi typů pro všechny proměnné se navrhuje použít samostatné klíčové slovo „fn“ místo „def“. Podobně pro třídy, pokud potřebujete staticky zabalit data do paměti během kompilace (jako v C), můžete použít typ „struct“ místo „class“. Je také možné jednoduše importovat moduly v jazycích C/C++, například pro import funkce cos z matematické knihovny můžete zadat „from “math.h” import cos”.

Zdroj: opennet.ru

Přidat komentář