Създавачът на LLVM разработва нов програмен език Mojo

Крис Латнер, основател и главен архитект на LLVM, а също и създател на програмен език Swift, и Тим Дейвис, бивш ръководител на AI проекти в Google, представиха новия програмен език Mojo, който съчетава лесното използване за изследователски разработки и бързото създаване на прототипи с пригодност за формиране на високопроизводителни краен продукти. Първото се постига благодарение на използването на познатия синтаксис на езика Python, а второто чрез възможността за компилиране в машинен код, механизми за безопасна работа с паметта и използването на средства за хардуерно ускорение на изчисленията.

Проектът е фокусиран върху използването за разработки в областта на машинното обучение, но в същото време се представя като език с общо предназначение, разширяващ възможностите на езика Python със средства за системно програмиране и подходящ за широк спектър от задачи. Например, езикът е приложим за области като високопроизводителни изчисления, обработка и преобразуване на данни. Интересна особеност на Mojo е възможността за указване на emoji символа "🔥" като разширение за файлове с код (например, "helloworld.🔥"), в допълнение към текстовото разширение ".mojo".

В момента езикът е в активен стадий на развитие и за тестване е предложен само онлайн интерфейс. Отделни сборки за стартиране на локални системи обещават да публикуват по-късно, след получаване на отзиви за работата на интерактивната уеб среда. Изходните текстове на компилатора, JIT и други свързани с проекта разработки планират да бъдат отворени след завършване на проектирането на вътрешната архитектура (моделът на развитие на работния прототип зад затворени врати напомня на началния етап на разработката на LLVM, Clang и Swift). Тъй като синтаксисът на Mojo е базиран на езика Python, а системата от типове е близка до C/C++, в бъдеще планират да разработят инструменти за опростяване на прехвърлянето на съществуващи проекти, написани на C/C++ и Python, както и за разработване на хибридни проекти, съчетаващи код на Python и Mojo.

Проектът е насочен към ангажиране на наличните в системата хардуерни ресурси на хетерогенни системи за извършване на изчисления. Например, за изпълнение на приложения на езика Mojo и разпаралеляване на изчисления могат да бъдат ангажирани GPU, специализирани ускорители за машинно обучение и инстукции за векторно обработване (SIMD). Като причина за развитието на отделно подмножество на езика Python вместо да се оптимизира съществуващия CPython се посочва ориентацията към компилация, интеграцията на възможностите за системно програмиране и прилагането на основно различна вътрешна архитектура, която позволява изпълнението на код на GPU и различни хардуерни ускорители. В същото време разработчиците на Mojo имат намерение да се придържат към съвместимостта с CPython, доколкото е възможно.

Mojo може да се използва както в режим на интерпретация с JIT, така и за компилиране в изпълними файлове (AOT, ahead-of-time). В компилатора са интегрирани съвременни технологии за автоматична оптимизация, кеширане и разпределена компилация. Исходният код на езика Mojo се преобразува в нискоуровневен междинен код MLIR (Многостепенна междинна репрезентация), развиван от проекта LLVM и предоставящ допълнителни възможности за оптимизация на обработката на графа на потока от данни. Компилаторът позволява използването на различни бекенди, поддържащи MLIR, за генериране на машинен код.

Ангажирането на допълнителни хардуерни механизми за ускорение на изчисленията дава възможност за постигане на производителност, в интензивни изчисления, надхвърляща приложенията на C/C++. Например, при тестване на приложение за генериране на множество от Манделброт, компилираното приложение на езика Mojo, изпълнявано в облака AWS (r7iz.metal-16xl), се оказа 6 пъти по-бързо от реализацията на C++ (0.03 сек. срещу 0.20 сек.), а също така 35 хиляди пъти по-бързо от приложението на Python, използващо стандартния CPython 3.10.9 (0.03 сек. срещу 1027 сек.) и 1500 пъти по-бързо при използване на PYPY (0.03 сек. срещу 46.1 сек.).

При оценяване на производителността в областта на решаването на задачи с машинно обучение, AI-стек Modular Inference Engine, написан на езика Mojo, в сравнение с решението на база библиотеката TensorFlow, се оказа 3 пъти по-бърз на система с процесор Intel при обработка на езикови модели, 6.4 пъти по-бърз при изпълнение на модел за формираност на препоръки и 2.1 пъти по-бърз при работа с модели за обработка на визуална информация. При използване на процесори AMD, предимството при използване на Mojo беше 3.2, 5 и 2.2 пъти, а при процесори ARM — 5.3, 7.5 и 1.7 пъти, съответно. Решението на база PyTorch изостава от Mojo с 1.4, 1.1 и 1.5 пъти на CPU Intel, с 2.1, 1.2 и 1.5 пъти на CPU AMD и с 4, 4.3 и 1.3 пъти на CPU ARM.

Създавачът на LLVM разработва нов програмен език Mojo

Езикът поддържа статична типизация и средства за безопасна нискоскоростна работа с паметта, наподобяващи възможностите на езика Rust, като проследяване на времето за живот на референции и проверка на заемането на променливи (borrow checker). Освен средствата за безопасна работа с указатели, в езика са налични и възможности за нискоскоростна работа, например, е възможно директно обращение към паметта в режим unsafe с използване на типа Pointer, извикване на отделни SIMD-инструкции или достъп до хардуерни разширения като TensorCores и AMX.

Създавачът на LLVM разработва нов програмен език Mojo

За опростяване на разделението между класически и оптимизиран Python-код за функции с явни определения на типовете за всички променливи, предложено е да се използва отделно ключово слово „fn“ вместо „def“. По подобен начин за класовете, когато е необходимо статично опаковане на данни в паметта по време на компилация (както в C), вместо „class“ може да се използва тип „struct“. Също така е възможно лесно внасяне на модули на C/C++ езици, например, за внос на функция cos от библиотеката math, може да се укаже „from „math.h“ import cos“.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster