LLVM Creator yangi Mojo dasturlash tilini ishlab chiqdi

LLVM asoschisi va bosh arxitektori, Swift dasturlash tilini yaratuvchisi Kris Lattner hamda Tensorflow va JAX kabi Google AI loyihalarining sobiq rahbari Tim Devis yangi dasturlash tili Mojo ni taqdim etishdi. yuqori samarali yakuniy mahsulotlarni shakllantirish potentsialiga ega tezkor prototiplash. Birinchisiga Python tilining tanish sintaksisidan foydalanish, ikkinchisiga esa mashina kodiga kompilyatsiya qilish, xotirani xavfsiz saqlash mexanizmlari va apparat tezlashtirish vositalaridan foydalanish orqali erishiladi.

Loyiha mashinani o'rganish sohasida rivojlanish uchun foydalanishga qaratilgan, ammo Python imkoniyatlarini tizimli dasturlash vositalari bilan kengaytiruvchi va keng ko'lamli vazifalar uchun mos bo'lgan umumiy maqsadli til sifatida taqdim etilgan. Misol uchun, bu til yuqori unumdorlikdagi hisoblash, ma'lumotlarni qayta ishlash va transformatsiya kabi sohalarda qo'llaniladi. Mojo-ning qiziqarli xususiyati - ".mojo" matn kengaytmasidan tashqari, kod fayllari (masalan, "helloworld.🔥") uchun kengaytma sifatida "🔥" emoji belgisini belgilash qobiliyatidir.

Hozirda til intensiv rivojlanish bosqichida va sinov uchun faqat onlayn interfeys taklif etiladi. Mahalliy tizimlarda ishlash uchun alohida yig'ilishlar interaktiv veb-muhitning ishlashi bo'yicha fikr-mulohazalarni olgandan keyin keyinroq nashr etilishi va'da qilinadi. Kompilyator, JIT va loyiha bilan bog'liq boshqa ishlanmalar uchun manba kodi ichki arxitektura tugallangandan so'ng ochilishi rejalashtirilgan (yopiq eshiklar ortida ishlaydigan prototipni ishlab chiqish modeli LLVM, Clang va boshqalarning rivojlanishining dastlabki bosqichini eslatadi. Swift). Mojo sintaksisi Python tiliga asoslanganligi va tip tizimi C/C++ ga yaqin boʻlgani uchun kelajakda ular C/C++ va Pythonda yozilgan mavjud loyihalarni Mojoga tarjima qilishni soddalashtirish vositalarini ishlab chiqishni rejalashtirmoqdalar. Python kodi va Mojo-ni birlashtirgan gibrid loyihalarni ishlab chiqish.

Loyiha heterojen tizimlarning mavjud apparat resurslarini hisob-kitoblarni amalga oshirishda jalb qilish uchun mo'ljallangan. Masalan, GPU, maxsus mashinani o'rganish tezlatgichlari va protsessor ko'rsatmalar vektorlari (SIMD) Mojo ilovalarini ishga tushirish va hisoblarni parallellashtirish uchun ishlatilishi mumkin. Mavjud CPython optimallashtirish ishiga qo'shilish o'rniga Python tilining alohida kichik to'plamini ishlab chiqish uchun keltirilgan sabablar kompilyatsiya, tizim dasturlash imkoniyatlarini birlashtirish va GPU va turli xil kodlarda ishlashga imkon beruvchi tubdan farqli ichki arxitekturadan foydalanishga e'tiborni o'z ichiga oladi. apparat tezlatgichlari. Biroq, Mojo ishlab chiquvchilari iloji boricha CPython bilan moslikni saqlab qolish niyatida.

Mojo JIT yordamida talqin qilish rejimida ham, bajariladigan fayllarga kompilyatsiya qilish uchun ham ishlatilishi mumkin (AOT, muddatidan oldin). Kompilyatorda avtomatik optimallashtirish, keshlash va taqsimlangan kompilyatsiya uchun o'rnatilgan zamonaviy texnologiyalar mavjud. Mojo tilidagi manba matnlari LLVM loyihasi tomonidan ishlab chiqilgan va ma'lumotlar oqimi grafigini qayta ishlashni optimallashtirish uchun qo'shimcha imkoniyatlarni ta'minlovchi MLIR (Ko'p darajali Intermediate Representation) past darajadagi oraliq kodiga aylantiriladi. Kompilyator sizga mashina kodini yaratish uchun MLIR-ni qo'llab-quvvatlaydigan turli xil backendlardan foydalanish imkonini beradi.

Hisob-kitoblarni tezlashtirish uchun qo'shimcha apparat mexanizmlaridan foydalanish intensiv hisob-kitoblar paytida C/C++ ilovalaridan ustun bo'lgan ishlashga erishish imkonini beradi. Misol uchun, Mandelbrot to'plamini yaratish uchun dasturni sinovdan o'tkazishda, AWS bulutida (r7iz.metal-16xl) bajarilganda Mojo tilida tuzilgan dastur C++ dasturidan (6 sek.ga nisbatan) 0.03 baravar tezroq bo'lib chiqdi. 0.20 soniya), shuningdek, standart CPython 35 (3.10.9 sek. 0.03 sek.) dan foydalanilganda Python ilovasidan 1027 ming marta va PYPY dan foydalanganda 1500 marta tezroq (0.03 sek. 46.1 sek.) .

Mashinalarni o'rganish muammolarini hal qilish sohasidagi ish faoliyatini baholashda, Mojo tilida yozilgan AI stekli Modular Inference Engine, TensorFlow kutubxonasiga asoslangan yechim bilan solishtirganda, til modelini tizimda qayta ishlashda 3 baravar tezroq edi. Intel protsessori, tavsiyalarni ishlab chiqarish modelining bajarilishini qayta ishlashda 6.4 marta va vizual ma'lumotlarni qayta ishlash uchun modellar bilan ishlashda 2.1 baravar tezroq. AMD protsessorlaridan foydalanganda, Mojo-dan foydalanganda o'sish mos ravishda 3.2, 5 va 2.2 marta, ARM protsessorlaridan foydalanganda esa mos ravishda 5.3, 7.5 va 1.7 baravar ko'p bo'lgan. PyTorch asosidagi yechim Mojo’dan Intel protsessorlarida 1.4, 1.1 va 1.5 marta, AMD protsessorlarida 2.1, 1.2 va 1.5 marta, ARM protsessorlarida esa 4, 4.3 va 1.3 marta ortda qoldi.

LLVM Creator yangi Mojo dasturlash tilini ishlab chiqdi

Til statik yozishni va Rust-ni eslatuvchi past darajadagi xotira xavfsizligini qo'llab-quvvatlaydi, masalan, havolalar muddatini kuzatish va qarzni tekshirish. Ko'rsatkichlar bilan xavfsiz ishlash uchun imkoniyatlardan tashqari, til past darajadagi ish uchun xususiyatlarni ham taqdim etadi, masalan, Pointer turidan foydalangan holda xavfsiz rejimda xotiraga to'g'ridan-to'g'ri kirish, individual SIMD ko'rsatmalariga qo'ng'iroq qilish yoki TensorCores va AMX kabi apparat kengaytmalariga kirish. .

LLVM Creator yangi Mojo dasturlash tilini ishlab chiqdi

Klassik va optimallashtirilgan Python kodini barcha o'zgaruvchilar uchun aniq turdagi ta'riflarga ega funktsiyalar uchun ajratishni soddalashtirish uchun "def" o'rniga alohida "fn" kalit so'zidan foydalanish taklif etiladi. Xuddi shunday, sinflar uchun, agar siz kompilyatsiya paytida ma'lumotlarni xotiraga statik ravishda to'plashingiz kerak bo'lsa (C da bo'lgani kabi), siz "sinf" o'rniga "struct" turidan foydalanishingiz mumkin. C/C++ tillarida modullarni oddiygina import qilish ham mumkin, masalan, matematik kutubxonadan cos funksiyasini import qilish uchun siz “math.h dan import cos” ni belgilashingiz mumkin.

Manba: opennet.ru

a Izoh qo'shish