Ang Magbubuhat sa LLVM Nagpalambo sa Bag-ong Pinulongan sa Pagprograma sa Mojo

Si Chris Lattner, ang nagtukod ug punong arkitekto sa LLVM ug tiglalang sa Swift programming language, ug si Tim Davis, kanhi pangulo sa mga proyekto sa AI sa Google sama sa Tensorflow ug JAX, nagpagawas sa usa ka bag-ong programming language, ang Mojo, nga naghiusa sa kadali sa paggamit alang sa panukiduki ug paspas nga prototyping uban ang kaangayan alang sa paghimo og mga high-performance nga produkto. Kini makab-ot pinaagi sa pamilyar nga syntax sa Python, samtang ang ulahi makab-ot pinaagi sa native compilation, memory-safety mechanisms, ug hardware acceleration.

Ang proyekto nagpunting sa pagpalambo sa machine learning, apan gipresentar usab isip usa ka general-purpose nga pinulongan nga nagpalapad sa Python nga adunay mga kapabilidad sa systems programming ug angay alang sa lain-laing mga buluhaton. Pananglitan, ang pinulongan magamit sa mga lugar sama sa high-performance computing ug data processing ug transformation. Usa ka makapaikag nga bahin sa Mojo mao ang abilidad sa pagtino sa simbolo sa emoji nga "🔥" isip extension para sa mga code file (pananglitan, "helloworld.🔥"), dugang pa sa text extension nga ".mojo."

Ang pinulongan karon gipailalom sa intensive development, ug usa na lang ka online interface ang magamit para sa pagsulay. Ang mga standalone builds para sa pagpadagan sa mga lokal nga sistema gisaad nga ipatik sa ulahi, human makadawat og feedback sa interactive web environment. Ang source code para sa compiler, JIT, ug uban pang may kalabutan nga mga development giplano nga mahimong open sourced human makompleto ang internal architecture (ang closed-door development model para sa usa ka working prototype nahisama sa inisyal nga development phase sa LLVM, Clang, ug Swift). Tungod kay ang syntax sa Mojo gibase sa Python, ug ang type system niini susama sa C/C++, ang mga plano sa umaabot naglakip sa pagpalambo sa tooling aron mapasayon ​​ang pagbalhin sa kasamtangang C/C++ ug Python nga mga proyekto ngadto sa Mojo, ingon man aron mapadali ang pagpalambo sa mga hybrid nga proyekto nga naghiusa sa Python ug Mojo code.

Ang proyekto gidisenyo aron magamit ang kasamtangang mga kahinguhaan sa hardware sa mga heterogeneous nga sistema alang sa pagkwenta. Pananglitan, ang mga GPU, espesyalisadong machine learning accelerator, ug single-instruction vector processors (SIMD) mahimong magamit sa pagpadagan sa mga aplikasyon sa Mojo ug pag-parallelize sa mga kalkulasyon. Ang gihisgutan nga mga hinungdan sa pagpalambo sa usa ka lahi nga Python subset, imbes nga magsalig sa kasamtangang CPython alang sa pag-optimize, naglakip sa pagtutok sa compilation, ang paghiusa sa mga kapabilidad sa systems programming, ug ang paggamit sa usa ka sukaranan nga lahi nga internal nga arkitektura nga nagtugot sa pagpatuman sa code sa mga GPU ug lainlaing mga hardware accelerator. Sa samang higayon, ang mga developer sa Mojo nagtinguha nga ipadayon ang pagkaangay sa CPython kutob sa mahimo.

Ang Mojo magamit sa JIT (just-in-time) ug ahead-of-time (AOT) mode. Ang compiler naglakip sa mga modernong teknolohiya para sa automatic optimization, caching, ug distributed compilation. Ang Mojo source code gi-convert ngadto sa low-level intermediate code (MLIR), nga gihimo sa LLVM project ug nagtanyag og dugang nga mga kapabilidad para sa optimize sa dataflow graph processing. Gisuportahan sa compiler ang lain-laing MLIR-enabled backends para sa machine code generation.

Ang paggamit sa dugang nga hardware acceleration makapahimo sa pag-uswag sa performance para sa intensive computations nga molabaw sa mga aplikasyon sa C/C++. Pananglitan, sa pagsulay sa usa ka Mandelbrot set generation application, ang compiled Mojo application (r7iz.metal-16xl) 6 ka pilo nga mas paspas kay sa C++ implementation kon modagan sa AWS cloud (0.03 seg. batok sa 0.20 seg.), 35 ka pilo nga mas paspas kay sa Python application kon mogamit sa standard CPython 3.10.9 (0.03 seg. batok sa 1027 seg.), ug 1500 ka pilo nga mas paspas kon mogamit sa PYPY (0.03 seg. batok sa 46.1 seg.).

Sa pag-evaluate sa performance sa machine learning, ang Modular Inference Engine AI stack, nga gisulat sa Mojo, 3x nga mas paspas sa usa ka Intel processor sa pagproseso sa usa ka language model, 6.4x nga mas paspas sa pagpadagan sa usa ka recommendation model, ug 2.1x nga mas paspas sa pagpadagan sa visual information processing models kon itandi sa usa ka TensorFlow-based solution. Sa mga AMD processors, ang Mojo nakab-ot ang 3.2x, 5x, ug 2.2x nga performance gains, samtang sa mga ARM processors, nakab-ot niini ang 5.3x, 7.5x, ug 1.7x nga performance gains. Ang PyTorch-based solution naulahi sa Mojo og 1.4x, 1.1x, ug 1.5x sa mga Intel CPU, 2.1x, 1.2x, ug 1.5x sa mga AMD CPU, ug 4x, 4.3x, ug 1.3x sa mga ARM CPU.

Ang Magbubuhat sa LLVM Nagpalambo sa Bag-ong Pinulongan sa Pagprograma sa Mojo

Ang pinulongan nagsuporta sa static typing ug mga low-level memory safety features nga susama sa Rust, sama sa reference lifetime tracking ug borrow checker. Gawas pa sa mga pointer safety features, ang pinulongan nagtanyag usab og low-level nga mga kapabilidad, sama sa direktang memory access sa unsafe mode gamit ang Pointer type, paggamit sa indibidwal nga mga instruksyon sa SIMD, ug pag-access sa mga hardware extension sama sa TensorCores ug AMX.

Ang Magbubuhat sa LLVM Nagpalambo sa Bag-ong Pinulongan sa Pagprograma sa Mojo

Aron mapasayon ​​ang pagbulag sa klasiko ug gi-optimize nga Python code para sa mga function nga adunay klaro nga gihubit nga mga tipo para sa tanang variable, gisugyot nga mogamit og lahi nga "fn" keyword imbes nga "def." Susama, para sa mga klase, kon gikinahanglan ang static data packing sa memory sa oras sa pag-compile (sama sa C), ang "struct" type mahimong gamiton imbes nga "class." Posible usab ang simpleng pag-import sa C/C++ modules. Pananglitan, aron ma-import ang cos function gikan sa math library, mahimo nimong i-specify ang "from "math.h" import cos."

Source: opennet.ru

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster