LLVM Creator Ngembangkeun Basa Pemrograman Mojo Anyar

Chris Lattner, pangadeg sareng lulugu arsiték LLVM sareng panyipta basa pamrograman Swift, sareng Tim Davis, tilas kapala proyék Google AI sapertos Tensorflow sareng JAX, ngenalkeun basa pamrograman Mojo énggal anu ngagabungkeun betah dianggo pikeun R&D sareng prototyping gancang sareng cocog pikeun produk tungtung kinerja tinggi. Kahiji kahontal ngaliwatan pamakéan rumpaka akrab tina basa Python, sarta kadua alatan kamampuhan pikeun compile kode mesin, mékanisme pikeun manajemén memori aman, sarta pamakéan parabot pikeun akselerasi hardware itungan.

Proyék ieu fokus kana pamakéan pikeun ngembangkeun mesin learning, tapi dibere salaku basa tujuan umum nu manjangkeun kamampuhan basa Python jeung programming sistem na cocog pikeun rupa-rupa tugas. Contona, basa nu lumaku pikeun wewengkon kayaning komputasi kinerja luhur, ngolah data jeung transformasi. Fitur metot tina Mojo nyaéta kamampuhan pikeun nangtukeun simbol emoji "🔥" salaku extension pikeun file kode (contona, "helloworld.🔥"), sajaba extension téks ".mojo".

Ayeuna, basana nuju ngembangkeun intensif sareng ngan ukur antarbeungeut online anu ditawarkeun pikeun diuji. Majelis misah pikeun ngajalankeun dina sistem lokal dijangjikeun bakal diterbitkeun engké, sanggeus narima eupan balik dina karya lingkungan web interaktif. Kodeu sumber pikeun kompiler, JIT sareng pamekaran sanés anu aya hubunganana sareng proyék direncanakeun bakal dibuka saatos desain arsitéktur internal réngsé (model pamekaran prototipe kerja di tukangeun panto katutup nyarupaan tahap awal pangwangunan LLVM, Clang. sareng Swift). Kusabab sintaksis Mojo didasarkeun kana Python sareng sistem jinisna caket sareng C / C ++, aya rencana ka hareup pikeun ngembangkeun toolkit pikeun ngagampangkeun tarjamahan proyék anu aya anu ditulis dina C / C ++ sareng Python ka Mojo, ogé pikeun ngembangkeun. proyék hibrid nu ngagabungkeun kode Python jeung Mojo.

Proyék ieu dirancang pikeun ngalibetkeun sumberdaya hardware sistem hétérogén anu aya dina sistem dina itungan. Contona, GPUs, akselerator machine learning husus, sarta instruksi processing vektor (SIMDs) bisa dipaké pikeun ngajalankeun aplikasi Mojo jeung parallelize komputasi. Alesan pikeun ngembangkeun subset misah tina basa Python, tinimbang ngagabung kana karya optimasi CPython aya, dicutat salaku fokus kompilasi, integrasi kamampuhan programming sistem, sarta pamakéan arsitéktur internal fundamentally béda anu ngamungkinkeun kode jadi dieksekusi dina GPUs sarta sagala rupa akselerator hardware. Dina waktos anu sami, pamekar Mojo badé patuh kana kasaluyuan sareng CPython saloba mungkin.

Mojo tiasa dianggo dina mode interpretasi JIT sareng pikeun kompilasi kana file anu tiasa dieksekusi (AOT, sateuacanna). Compiler geus diwangun-di téknologi modern pikeun optimasi otomatis, cache sarta kompilasi disebarkeun. Téks sumber dina basa Mojo dirobih kana kode panengah tingkat rendah MLIR (Multi-Level Intermediate Representation), dikembangkeun ku proyék LLVM sareng nyayogikeun fitur tambahan pikeun ngaoptimalkeun ngolah grafik aliran data. Kompiler ngamungkinkeun anjeun ngagunakeun rupa-rupa backends anu ngadukung MLIR pikeun ngahasilkeun kode mesin.

Pamakéan mékanisme hardware tambahan pikeun nyepetkeun itungan ngamungkinkeun pikeun ngahontal prestasi anu, kalayan itungan intensif, ngaleuwihan aplikasi C / C ++. Contona, nalika nguji aplikasi pikeun ngahasilkeun susunan Mandelbrot, aplikasi Mojo disusun, nalika dieksekusi dina awan AWS (r7iz.metal-16xl), éta 6 kali leuwih gancang ti palaksanaan C ++ (0.03 detik vs 0.20 detik). .), kitu ogé 35 sarébu kali leuwih gancang ti aplikasi Python ngagunakeun stock CPython 3.10.9 (0.03 detik vs 1027 detik) jeung 1500 kali leuwih gancang maké PYPY (0.03 detik vs 46.1 detik).

Nalika ngevaluasi kinerja di daérah ngarengsekeun masalah pembelajaran mesin, tumpukan Modular Inference Engine AI ditulis dina basa Mojo, dibandingkeun sareng solusi dumasar kana perpustakaan TensorFlow, tétéla 3 kali langkung gancang dina sistem anu nganggo Intel. Prosesor nalika ngolah modél basa, 6.4 kali langkung gancang nalika ngalaksanakeun modél generasi rekomendasi sareng 2.1 kali langkung gancang nalika damel sareng modél pikeun ngolah inpormasi visual. Nalika nganggo prosesor AMD, kauntungan nalika nganggo Mojo nyaéta 3.2, 5 sareng 2.2 kali, sareng nalika nganggo prosesor ARM - masing-masing 5.3, 7.5 sareng 1.7 kali. Solusi basis PyTorch katinggaleun Mojo ku 1.4, 1.1 jeung 1.5 kali dina CPU Intel, 2.1, 1.2 jeung 1.5 kali dina AMD CPU jeung 4, 4.3 jeung 1.3 kali dina CPU ARM.

LLVM Creator Ngembangkeun Basa Pemrograman Mojo Anyar

Basa éta ngadukung ngetik statik sareng fitur anu aman-memori tingkat rendah anu ngingetkeun fitur Rust sapertos tracking umur rujukan sareng pamariksaan injeuman variabel (pemeriksa pinjaman). Salian sarana pikeun operasi aman jeung pointer, basa ogé nyadiakeun fitur pikeun karya-tingkat low, contona, anjeun tiasa langsung ngakses memori dina modeu teu aman ngagunakeun tipe Pointer, nelepon parentah SIMD individu, atawa aksés ekstensi hardware misalna. sakumaha TensorCores na AMX.

LLVM Creator Ngembangkeun Basa Pemrograman Mojo Anyar

Pikeun simplify separation tina kode Python Palasik jeung dioptimalkeun pikeun fungsi kalayan definisi tipe eksplisit pikeun sakabéh variabel, eta diusulkeun make a keyword misah "fn" tinimbang "def". Nya kitu pikeun kelas, lamun perlu statically pak data dina mémori dina waktos compile (sakumaha dina C), tinimbang "kelas" anjeun tiasa nganggo tipe "struct". Ieu oge mungkin mun saukur ngimpor modul dina basa C / C ++, Contona, pikeun ngimpor fungsi cos ti perpustakaan math, Anjeun bisa nangtukeun "tina "math.h" impor cos ".

sumber: opennet.ru

Tambahkeun komentar