Chris Lattner, tus tsim thiab tus thawj coj ntawm LLVM thiab tus tsim ntawm Swift programming language, thiab Tim Davis, yav dhau los yog tus thawj coj ntawm Google cov haujlwm AI xws li Tensorflow thiab JAX, tau tshaj tawm ib hom lus programming tshiab, Mojo, uas sib xyaw ua ke yooj yim siv rau kev tshawb fawb thiab kev tsim qauv sai nrog rau kev tsim cov khoom lag luam kawg ua tau zoo. Qhov no ua tiav los ntawm cov syntax paub zoo ntawm Python, thaum qhov kawg ua tiav los ntawm kev sau ua ke, cov txheej txheem kev nyab xeeb ntawm lub cim xeeb, thiab kev ua kom nrawm dua.
Qhov project no tsom mus rau kev tsim cov tshuab kawm, tab sis kuj tau nthuav tawm ua ib hom lus dav dav uas nthuav Python nrog cov peev xwm programming systems thiab haum rau ntau yam haujlwm. Piv txwv li, hom lus no siv tau rau thaj chaw xws li kev suav lej siab thiab kev ua cov ntaub ntawv thiab kev hloov pauv. Ib qho tshwj xeeb ntawm Mojo yog lub peev xwm los teev lub cim emoji "🔥" ua qhov txuas ntxiv rau cov ntaub ntawv code (piv txwv li, "helloworld.🔥"), ntxiv rau qhov txuas ntxiv ntawv ".mojo."
Cov lus no tam sim no tab tom tsim kho hnyav, thiab tsuas yog muaj kev sib txuas hauv online rau kev sim. Cov qauv tsim tshwj xeeb rau kev khiav ntawm cov kab ke hauv zos tau cog lus tias yuav tshaj tawm tom qab, tom qab tau txais cov lus taw qhia ntawm qhov chaw sib tham hauv web. Cov lej qhov chaw rau lub compiler, JIT, thiab lwm yam kev txhim kho cuam tshuam tau npaj yuav qhib qhov chaw tom qab ua tiav cov qauv sab hauv (tus qauv tsim kho kaw rau tus qauv ua haujlwm yog qhov nco txog theem pib tsim kho ntawm LLVM, Clang, thiab Swift). Txij li thaum Mojo's syntax yog raws li Python, thiab nws lub kaw lus hom zoo ib yam li C / C ++, cov phiaj xwm yav tom ntej suav nrog kev tsim cov cuab yeej los ua kom yooj yim rau kev tsiv teb tsaws chaw ntawm C / C ++ thiab Python projects rau Mojo, nrog rau kev pab txhawb kev tsim kho ntawm cov haujlwm sib xyaw ua ke Python thiab Mojo code.
Qhov project no yog tsim los siv cov khoom siv kho vajtse uas twb muaj lawm ntawm cov kab ke sib txawv rau kev suav lej. Piv txwv li, GPUs, cov tshuab kawm tshuab tshwj xeeb, thiab cov txheej txheem vector ib leeg (SIMD) tuaj yeem siv los khiav Mojo daim ntawv thov thiab sib npaug cov kev suav lej. Cov laj thawj uas tau hais txog kev tsim ib pawg Python sib cais, es tsis txhob cia siab rau CPython uas twb muaj lawm rau kev ua kom zoo dua, suav nrog kev tsom mus rau kev sib sau ua ke, kev koom ua ke ntawm cov peev xwm programming systems, thiab kev siv cov qauv sab hauv sib txawv uas ua rau muaj kev ua tiav code ntawm GPUs thiab ntau yam khoom siv kho vajtse. Tib lub sijhawm, cov neeg tsim khoom Mojo npaj siab yuav tswj hwm kev sib raug zoo nrog CPython ntau li ntau tau.
Mojo siv tau ob qho tib si hauv JIT (just-in-time) thiab ahead-of-time (AOT). Lub compiler siv cov thev naus laus zis niaj hnub rau kev ua kom zoo dua qub, caching, thiab distributed compilation. Mojo source code raug hloov mus rau low-level intermediate code (MLIR), tsim los ntawm LLVM project thiab muab cov peev xwm ntxiv rau kev ua kom zoo dua ntawm cov ntaub ntawv ntws. Lub compiler txhawb nqa ntau yam MLIR-enabled backends rau kev tsim tshuab code.
Kev siv cov khoom siv kho vajtse ntxiv ua rau muaj kev ua tau zoo dua rau kev suav lej ntau dua li cov ntawv thov C/C++. Piv txwv li, thaum sim daim ntawv thov tsim Mandelbrot, daim ntawv thov Mojo uas tau muab tso ua ke (r7iz.metal-16xl) tau nrawm dua 6 npaug ntawm kev siv C++ thaum khiav hauv huab AWS (0.03 vib nas this piv rau 0.20 vib nas this), nrawm dua 35 npaug ntawm daim ntawv thov Python thaum siv tus qauv CPython 3.10.9 (0.03 vib nas this piv rau 1027 vib nas this), thiab nrawm dua 1500 npaug thaum siv PYPY (0.03 vib nas this piv rau 46.1 vib nas this).
Thaum ntsuam xyuas kev ua tau zoo ntawm kev kawm tshuab, Modular Inference Engine AI stack, sau ua lus Mojo, yog 3x sai dua ntawm Intel processor thaum ua cov qauv lus, 6.4x sai dua thaum khiav cov qauv pom zoo, thiab 2.1x sai dua thaum khiav cov qauv ua cov ntaub ntawv pom piv rau TensorFlow-based solution. Ntawm AMD processors, Mojo tau txais 3.2x, 5x, thiab 2.2x kev ua tau zoo, thaum ntawm ARM processors, nws tau txais 5.3x, 7.5x, thiab 1.7x kev ua tau zoo. PyTorch-based solution poob qis dua Mojo los ntawm 1.4x, 1.1x, thiab 1.5x ntawm Intel CPUs, 2.1x, 1.2x, thiab 1.5x ntawm AMD CPUs, thiab 4x, 4.3x, thiab 1.3x ntawm ARM CPUs.

Cov lus txhawb nqa static typing thiab low-level memory safety features reminiscent of Rust, xws li reference lifetime tracking thiab borrow checker. Ntxiv rau cov pointer safety features, cov lus kuj muaj cov low-level capabilities, xws li direct memory access in safe mode using the Pointer type, invoking individual SIMD instructions, thiab accessing hardware extensions xws li TensorCores thiab AMX.

Yuav kom yooj yim rau kev sib cais ntawm cov classic thiab optimized Python code rau cov functions nrog cov hom txhais meej rau txhua qhov hloov pauv, nws tau hais kom siv cov lus tseem ceeb "fn" sib cais es tsis txhob "def." Ib yam li ntawd, rau cov chav kawm, yog tias xav tau cov ntaub ntawv static packing hauv lub cim xeeb thaum lub sijhawm compile (zoo li hauv C), hom "struct" tuaj yeem siv hloov "class." Kev import yooj yim ntawm C/C++ modules kuj ua tau. Piv txwv li, kom import cov cos function los ntawm lub tsev qiv ntawv lej, koj tuaj yeem teev "los ntawm" math.h" import cos."
Tau qhov twg los: opennet.ru
