LLVM yaradıcısı yeni proqramlaşdırma dili Mojo hazırlayır

LLVM-in qurucusu və baş memarı və Swift proqramlaşdırma dilinin yaradıcısı Chris Lattner və Tensorflow və JAX kimi Google AI layihələrinin keçmiş rəhbəri Tim Davis tədqiqat işlərinin inkişafı üçün istifadə rahatlığını birləşdirən yeni Mojo proqramlaşdırma dilini təqdim etdilər. yüksək performanslı son məhsulların formalaşdırılması potensialı ilə sürətli prototipləşdirmə. Birincisi, Python dilinin tanış sintaksisinin istifadəsi, ikincisi isə maşın koduna kompilyasiya etmək bacarığı, yaddaşı qoruyan mexanizmlər və aparat sürətləndirici vasitələrdən istifadə etməklə əldə edilir.

Layihə maşın öyrənməsi sahəsində inkişaf üçün istifadəyə yönəlib, lakin Python-un imkanlarını sistem proqramlaşdırma alətləri ilə genişləndirən və geniş tapşırıqlar üçün uyğun olan ümumi təyinatlı dil kimi təqdim olunur. Məsələn, bu dil yüksək məhsuldar hesablama, məlumatların işlənməsi və transformasiya kimi sahələrə şamil edilir. Mojo-nun maraqlı xüsusiyyəti ".mojo" mətn genişlənməsinə əlavə olaraq, kod faylları üçün genişlənmə (məsələn, "helloworld.🔥") kimi "🔥" emoji simvolunu təyin etmək imkanıdır.

Hazırda dil intensiv inkişaf mərhələsindədir və sınaq üçün yalnız onlayn interfeys təklif olunur. Yerli sistemlərdə işləmək üçün ayrı-ayrı məclislərin interaktiv veb mühitinin fəaliyyəti ilə bağlı rəylər alındıqdan sonra daha sonra dərc ediləcəyi vəd edilir. Kompilyator, JIT və layihə ilə bağlı digər inkişaflar üçün mənbə kodunun daxili arxitektura tamamlandıqdan sonra açılması planlaşdırılır (qapalı qapılar arxasında işləyən prototipin hazırlanması modeli LLVM, Clang və Clang-ın inkişafının ilkin mərhələsini xatırladır. Cəld). Mojo sintaksisi Python dilinə əsaslandığından və tip sistemi C/C++-a yaxın olduğundan, gələcəkdə onlar C/C++ və Python-da yazılmış mövcud layihələrin Mojo-ya tərcüməsini asanlaşdırmaq üçün alətlər hazırlamağı, habelə Python kodu və Mojo-nu birləşdirən hibrid layihələr hazırlamaq.

Layihə heterojen sistemlərin mövcud aparat resurslarını hesablamaların aparılmasına cəlb etmək üçün nəzərdə tutulmuşdur. Məsələn, GPU-lar, xüsusi maşın öyrənmə sürətləndiriciləri və prosessor təlimat vektorları (SIMD) Mojo proqramlarını işə salmaq və hesablamaları paralelləşdirmək üçün istifadə edilə bilər. Mövcud CPython optimallaşdırma işinə qoşulmaq əvəzinə Python dilinin ayrıca alt dəstini inkişaf etdirmək üçün verilən səbəblər arasında kompilyasiyaya diqqət, sistem proqramlaşdırma imkanlarının inteqrasiyası və kodun GPU-larda və müxtəlif proqramlarda işləməsinə imkan verən əsaslı şəkildə fərqli daxili arxitekturadan istifadə daxildir. aparat sürətləndiriciləri. Bununla belə, Mojo tərtibatçıları CPython ilə mümkün qədər uyğun qalmaq niyyətindədirlər.

Mojo həm JIT istifadə edərək tərcümə rejimində, həm də icra edilə bilən fayllara (AOT, vaxtından əvvəl) tərtib etmək üçün istifadə edilə bilər. Kompilyator avtomatik optimallaşdırma, keşləmə və paylanmış kompilyasiya üçün daxili müasir texnologiyalara malikdir. Mojo dilindəki mənbə mətnləri LLVM layihəsi tərəfindən hazırlanmış və məlumat axını qrafikinin işlənməsini optimallaşdırmaq üçün əlavə imkanlar təmin edən aşağı səviyyəli ara kod MLIR (Çox Səviyyəli Ara Nümayəndəlik) çevrilir. Kompilyator, maşın kodunu yaratmaq üçün MLIR-i dəstəkləyən müxtəlif arxa hissələrdən istifadə etməyə imkan verir.

Hesablamaları sürətləndirmək üçün əlavə aparat mexanizmlərindən istifadə intensiv hesablamalar zamanı C/C++ proqramlarından üstün olan performansa nail olmağa imkan verir. Məsələn, Mandelbrot dəstini yaratmaq üçün tətbiqi sınaqdan keçirərkən, AWS buludunda (r7iz.metal-16xl) icra edildikdə, Mojo dilində tərtib edilmiş proqram C++ proqramında tətbiqetmədən (6 saniyəyə qarşı) 0.03 dəfə sürətli olduğu ortaya çıxdı. . 0.20 san.), həmçinin standart CPython 35 (3.10.9 san. qarşı 0.03 san.) istifadə edərkən Python tətbiqindən 1027 min dəfə və PYPY istifadə edərkən 1500 dəfə (0.03 san. qarşı 46.1 san.) .

Maşın öyrənmə problemlərinin həlli sahəsində performansı qiymətləndirərkən, TensorFlow kitabxanasına əsaslanan həll ilə müqayisədə Mojo dilində yazılmış AI yığını Modular İnferans Mühərriki, sistemdə dil modelini emal edərkən 3 dəfə daha sürətli idi. Intel prosessoru, tövsiyələrin yaradılması modelinin icrasını emal edərkən 6.4 dəfə və vizual məlumatın emalı üçün modellərlə işləyərkən 2.1 dəfə daha sürətli. AMD prosessorlarından istifadə edərkən, Mojo-dan istifadə zamanı qazanc müvafiq olaraq 3.2, 5 və 2.2 dəfə, ARM prosessorlarından istifadə edərkən isə müvafiq olaraq 5.3, 7.5 və 1.7 dəfə olub. PyTorch əsaslı həll Mojo-dan Intel CPU-larda 1.4, 1.1 və 1.5 dəfə, AMD CPU-larda 2.1, 1.2 və 1.5 dəfə, ARM CPU-larda isə 4, 4.3 və 1.3 dəfə geri qalıb.

LLVM yaradıcısı yeni proqramlaşdırma dili Mojo hazırlayır

Bu dil statik yazmağı və Rust-u xatırladan aşağı səviyyəli yaddaş təhlükəsizliyi xüsusiyyətlərini, məsələn, istinad ömür boyu izləmə və borc yoxlaması kimi funksiyaları dəstəkləyir. Göstəricilərlə təhlükəsiz iş imkanlarına əlavə olaraq, dil aşağı səviyyəli iş üçün funksiyaları da təmin edir, məsələn, Pointer tipindən istifadə edərək təhlükəli rejimdə yaddaşa birbaşa giriş, fərdi SIMD təlimatlarına zəng etmək və ya TensorCores və AMX kimi aparat genişləndirmələrinə daxil olmaq. .

LLVM yaradıcısı yeni proqramlaşdırma dili Mojo hazırlayır

Bütün dəyişənlər üçün açıq tip tərifləri olan funksiyalar üçün klassik və optimallaşdırılmış Python kodunun ayrılmasını sadələşdirmək üçün “def” əvəzinə ayrıca “fn” açar sözündən istifadə etmək təklif olunur. Eynilə, siniflər üçün, əgər siz kompilyasiya zamanı (C-də olduğu kimi) məlumatları statik olaraq yaddaşa yığmaq lazımdırsa, siz “class” əvəzinə “struct” tipindən istifadə edə bilərsiniz. C/C++ dillərində modulları sadəcə idxal etmək də mümkündür, məsələn, riyaziyyat kitabxanasından cos funksiyasını idxal etmək üçün “math.h” import cos” funksiyasını təyin edə bilərsiniz.

Mənbə: opennet.ru

Добавить комментарий