Pencipta LLVM ngembangake basa pemrograman Mojo anyar

Chris Lattner, pangadeg lan pangareping arsitek LLVM lan pangripta basa pamrograman Swift, lan Tim Davis, mantan kepala proyek Google AI kayata Tensorflow lan JAX, ngenalake basa pamrograman anyar, Mojo, sing nggabungake gampang digunakake kanggo pangembangan riset lan prototyping cepet kanthi potensial kanggo ngramu produk pungkasan kinerja dhuwur. Kapisan digayuh liwat nggunakake sintaks menowo saka basa Python, lan liya liwat kemampuan kanggo ngumpulake menyang kode mesin, mekanisme memori-aman, lan nggunakake piranti akselerasi hardware.

ProyΓ¨k iki fokus ing nggunakake kanggo pembangunan ing lapangan machine learning, nanging presented minangka basa umum-tujuan sing ngluwihi Kapabilitas Python karo alat program sistem lan cocok kanggo sawetara saka sudhut tugas. Contone, basa kasebut ditrapake kanggo wilayah kayata komputasi kinerja dhuwur, pangolahan data lan transformasi. Fitur menarik saka Mojo yaiku kemampuan kanggo nemtokake karakter emoji "πŸ”₯" minangka ekstensi file kode (contone, "helloworld.πŸ”₯"), saliyane ekstensi teks ".mojo".

Saiki, basa kasebut ana ing tahap pangembangan intensif lan mung antarmuka online sing ditawakake kanggo tes. Majelis kapisah kanggo mlaku ing sistem lokal dijanjekake bakal diterbitake mengko, sawise nampa umpan balik babagan operasi lingkungan web interaktif. Kode sumber kanggo kompiler, JIT lan pangembangan liyane sing ana gandhengane karo proyek kasebut direncanakake bakal dibukak sawise arsitektur internal rampung (model kanggo ngembangake prototipe kerja ing mburi lawang sing ditutup kaya ing tahap wiwitan pangembangan LLVM, Clang lan Swift). Wiwit sintaksis Mojo adhedhasar basa Python, lan sistem jinis cedhak karo C / C ++, ing mangsa ngarep padha ngrancang kanggo ngembangake alat kanggo nyederhanakake terjemahan proyek sing wis ana sing ditulis ing C / C ++ lan Python menyang Mojo, uga kanggo ngembangake proyek hibrida nggabungake kode Python lan Mojo.

Proyèk iki dirancang kanggo ndherek sumber daya hardware sing kasedhiya saka sistem heterogen ing nindakake petungan. Contone, GPU, akselerator machine learning khusus, lan vektor instruksi prosesor (SIMD) bisa digunakake kanggo mbukak aplikasi Mojo lan parallelize komputasi. Alasan sing diwenehake kanggo ngembangake subset sing kapisah saka basa Python tinimbang gabung karo karya optimasi CPython sing wis ana kalebu fokus ing kompilasi, integrasi kemampuan pemrograman sistem, lan nggunakake arsitektur internal sing beda-beda dhasar sing ngidini kode mbukak ing GPU lan macem-macem. akselerator hardware. Nanging, pangembang Mojo pengin tetep kompatibel karo CPython sabisa-bisa.

Mojo bisa digunakake ing mode interpretasi nggunakake JIT, lan kanggo kompilasi menyang file eksekusi (AOT, ahead-of-time). Compiler nduweni teknologi modern sing dibangun kanggo optimasi otomatis, caching lan kompilasi sing disebarake. Teks sumber ing basa Mojo diowahi dadi kode menengah tingkat rendah MLIR (Multi-Level Intermediate Representation), sing dikembangake dening proyek LLVM lan nyedhiyakake kemampuan tambahan kanggo ngoptimalake pangolahan grafik aliran data. Compiler ngidini sampeyan nggunakake macem-macem backend sing ndhukung MLIR kanggo ngasilake kode mesin.

Nggunakake mekanisme hardware tambahan kanggo nyepetake petungan ndadekake iku bisa kanggo entuk kinerja sing unggul kanggo C / C ++ aplikasi sak petungan intensif. Contone, nalika nyoba aplikasi kanggo ngasilake set Mandelbrot, aplikasi kompilasi ing basa Mojo nalika dieksekusi ing awan AWS (r7iz.metal-16xl) dadi 6 kaping luwih cepet tinimbang implementasine ing C ++ (0.03 detik vs. . 0.20 sec.), Lan uga 35 ewu kaping luwih cepet saka aplikasi Python nalika nggunakake standar CPython 3.10.9 (0.03 sec. vs. 1027 sec.) Lan 1500 kaping luwih cepet nalika nggunakake PYPY (0.03 sec. vs. 46.1 sec.) .

Nalika ngevaluasi kinerja ing bidang ngrampungake masalah pembelajaran mesin, Mesin Inferensi Modular tumpukan AI, ditulis ing basa Mojo, dibandhingake karo solusi adhedhasar perpustakaan TensorFlow, 3 kaping luwih cepet nalika ngolah model basa ing sistem kanthi prosesor Intel, 6.4 kaping luwih cepet nalika ngolah eksekusi model generasi rekomendasi lan 2.1 kaping luwih cepet nalika nggarap model kanggo ngolah informasi visual. Nalika nggunakake prosesor AMD, hasil nalika nggunakake Mojo 3.2, 5 lan 2.2 kaping, lan nalika nggunakake prosesor ARM - mungguh 5.3, 7.5 lan 1.7 kaping. Solusi basis PyTorch ketinggalan Mojo 1.4, 1.1 lan 1.5 kaping ing CPU Intel, 2.1, 1.2 lan 1.5 kaping ing CPU AMD lan 4, 4.3 lan 1.3 ing CPU ARM.

Pencipta LLVM ngembangake basa pemrograman Mojo anyar

Basa kasebut ndhukung ngetik statis lan fitur aman memori tingkat rendah kaya Rust, kayata referensi tracking umur lan pemeriksa utang. Saliyane fasilitas kanggo kerja sing aman karo penunjuk, basa kasebut uga menehi fitur kanggo karya tingkat rendah, contone, akses langsung menyang memori ing mode ora aman nggunakake jinis Pointer, nelpon instruksi SIMD individu, utawa ngakses ekstensi hardware kayata TensorCores lan AMX. .

Pencipta LLVM ngembangake basa pemrograman Mojo anyar

Kanggo menakake misahake kode Python klasik lan optimized kanggo fungsi karo definisi jinis eksplisit kanggo kabeh variabel, disaranake nggunakake tembung kunci kapisah "fn" tinimbang "def". Kajaba kanggo kelas, yen sampeyan kudu ngemas data statis ing memori sajrone kompilasi (kaya ing C), sampeyan bisa nggunakake jinis "struct" tinimbang "kelas". Sampeyan uga bisa kanggo mung ngimpor modul ing C / C ++ basa, Contone, kanggo ngimpor fungsi cos saka perpustakaan math, sampeyan bisa nemtokake "saka "math.h" impor cos ".

Source: opennet.ru

Add a comment