LLVM Creator жаңа Mojo бағдарламалау тілін әзірлейді

Крис Латтнер, LLVM негізін қалаушы және бас сәулетшісі және Swift бағдарламалау тілін жасаушы және Tensorflow және JAX сияқты Google AI жобаларының бұрынғы басшысы Тим Дэвис зерттеуді әзірлеу және қолданудың қарапайымдылығын біріктіретін Mojo жаңа бағдарламалау тілін ұсынды. өнімділігі жоғары түпкілікті өнімдерді құрастыру мүмкіндігі бар жылдам прототиптеу. Біріншісі Python тілінің таныс синтаксисін қолдану арқылы, ал екіншісі машиналық кодқа компиляциялау мүмкіндігі, жадты сақтау механизмдері және аппараттық жеделдету құралдарын пайдалану арқылы қол жеткізіледі.

Жоба машиналық оқыту саласында дамыту үшін пайдалануға бағытталған, бірақ Python мүмкіндіктерін жүйелік бағдарламалау құралдарымен кеңейтетін және кең ауқымды тапсырмалар үшін қолайлы жалпы мақсаттағы тіл ретінде ұсынылған. Мысалы, бұл тіл өнімділігі жоғары есептеулер, деректерді өңдеу және түрлендіру сияқты салаларға қолданылады. Mojo-ның қызықты ерекшелігі - ".mojo" мәтіндік кеңейтімінен басқа, кодтық файлдарға арналған кеңейтім (мысалы, "helloworld.🔥") ретінде "🔥" эмодзи таңбасын көрсету мүмкіндігі.

Қазіргі уақытта тіл қарқынды даму сатысында және тестілеуге тек онлайн интерфейс ұсынылады. Жергілікті жүйелерде жұмыс істеуге арналған бөлек жинақтар интерактивті веб-ортаның жұмысы туралы кері байланыс алғаннан кейін кейінірек жарияланады деп уәде етілген. Компилятордың, JIT және жобаға қатысты басқа әзірлемелердің бастапқы кодын ішкі архитектура аяқталғаннан кейін ашу жоспарлануда (жабық есіктер артында жұмыс прототипін әзірлеу моделі LLVM, Clang және Жылдам). Mojo синтаксисі Python тіліне негізделгендіктен және типтік жүйе C/C++ тіліне жақын болғандықтан, олар болашақта C/C++ және Python тілінде жазылған бар жобаларды Mojo тіліне аударуды жеңілдету құралдарын әзірлеуді жоспарлап отыр. Python коды мен Mojo біріктіретін гибридті жобаларды әзірлеу.

Жоба гетерогенді жүйелердің қолжетімді аппараттық ресурстарын есептеулерді орындауға тартуға арналған. Мысалы, GPU, арнайы машиналық оқыту үдеткіштері және процессор нұсқау векторлары (SIMD) Mojo қолданбаларын іске қосу және есептеулерді параллельдеу үшін пайдаланылуы мүмкін. Қолданыстағы CPython оңтайландыру жұмысына қосылудың орнына Python тілінің жеке ішкі жиынын әзірлеуге берілген себептерге компиляцияға назар аудару, жүйелік бағдарламалау мүмкіндіктерін біріктіру және графикалық процессорларда және әртүрлі кодтарда жұмыс істеуге мүмкіндік беретін түбегейлі басқа ішкі архитектураны пайдалану кіреді. аппараттық үдеткіштер. Дегенмен, Mojo әзірлеушілері мүмкіндігінше CPython-мен үйлесімді болып қалуға ниетті.

Mojo JIT көмегімен интерпретация режимінде де, орындалатын файлдарға (AOT, мерзімінен бұрын) құрастыру үшін де пайдаланылуы мүмкін. Компиляторда автоматты оңтайландыру, кэштеу және таратылған компиляция үшін кіріктірілген заманауи технологиялар бар. Mojo тіліндегі бастапқы мәтіндер LLVM жобасы әзірлеген және деректер ағынының графигін өңдеуді оңтайландыру үшін қосымша мүмкіндіктерді қамтамасыз ететін төмен деңгейлі аралық код MLIR (Мульти-деңгейлі аралық өкілдік) түрлендіріледі. Компилятор машина кодын жасау үшін MLIR қолдайтын әртүрлі серверлерді пайдалануға мүмкіндік береді.

Есептеулерді жылдамдату үшін қосымша аппараттық механизмдерді пайдалану қарқынды есептеулер кезінде C/C++ қолданбаларынан жоғары өнімділікке қол жеткізуге мүмкіндік береді. Мысалы, Mandelbrot жинағын құруға арналған қосымшаны тестілеу кезінде, AWS бұлтында орындалған кезде Mojo тіліндегі құрастырылған қолданба (r7iz.metal-16xl) C++ тіліндегі іске асыруға қарағанда 6 есе жылдамырақ болды (0.03 сек. қарсы). . 0.20 сек.), сонымен қатар стандартты CPython 35 (3.10.9 сек. қарсы 0.03 сек.) пайдаланған кезде Python қолданбасынан 1027 мың есе жылдам және PYPY (1500 сек. қарсы 0.03 сек.) пайдаланғанда 46.1 есе жылдамырақ. .

Машинамен оқыту мәселелерін шешу саласындағы өнімділікті бағалау кезінде Mojo тілінде жазылған AI стек модульдік қорытынды қозғалтқышы TensorFlow кітапханасына негізделген шешіммен салыстырғанда жүйеде тіл үлгісін өңдеу кезінде 3 есе жылдамырақ болды. Intel процессоры, ұсынымдарды қалыптастыру үлгісінің орындалуын өңдеу кезінде 6.4 есе жылдам және көрнекі ақпаратты өңдеуге арналған үлгілермен жұмыс істегенде 2.1 есе жылдам. AMD процессорларын пайдаланған кезде, Mojo пайдалану кезіндегі өсім 3.2, 5 және 2.2 есе, ал ARM процессорларын пайдалану кезінде тиісінше 5.3, 7.5 және 1.7 есе болды. PyTorch негізіндегі шешім Intel процессорларында Mojo-дан 1.4, 1.1 және 1.5 есе, AMD процессорларында 2.1, 1.2 және 1.5 есе және ARM процессорларында 4, 4.3 және 1.3 есе артта қалды.

LLVM Creator жаңа Mojo бағдарламалау тілін әзірлейді

Бұл тіл статикалық теруді және Rust-ты еске түсіретін төмен деңгейлі жадты қауіпсіз пайдалану мүмкіндіктерін қолдайды, мысалы, анықтамалық қызмет мерзімін бақылау және қарызды тексеру құралы. Көрсеткіштермен қауіпсіз жұмыс істеуге арналған құралдармен қатар, тіл төменгі деңгейлі жұмыс мүмкіндіктерін де қамтамасыз етеді, мысалы, Меңзер түрін пайдаланып қауіпті режимде жадқа тікелей қол жеткізу, жеке SIMD нұсқауларын шақыру немесе TensorCores және AMX сияқты аппараттық кеңейтімдерге қол жеткізу. .

LLVM Creator жаңа Mojo бағдарламалау тілін әзірлейді

Барлық айнымалылар үшін анық типті анықтамалары бар функциялар үшін классикалық және оңтайландырылған Python кодын бөлуді жеңілдету үшін «def» орнына жеке «fn» кілт сөзін пайдалану ұсынылады. Сыныптар үшін де, компиляция кезінде деректерді жадқа статикалық түрде бумалау қажет болса (С тіліндегідей), «сынып» орнына «құрылым» түрін пайдалануға болады. Сондай-ақ C/C++ тілдеріндегі модульдерді жай ғана импорттауға болады, мысалы, cos функциясын математикалық кітапханадан импорттау үшін «math.h» импорттау cos» параметрін көрсетуге болады.

Ақпарат көзі: opennet.ru

пікір қалдыру