LLVM tus tsim tsim cov lus programming tshiab Mojo

Chris Lattner, tus tsim thiab tus thawj coj ntawm LLVM thiab tus tsim ntawm Swift programming lus, thiab Tim Davis, yav tas los tus thawj coj ntawm Google AI tej yaam num xws li Tensorflow thiab JAX, qhia ib tug tshiab programming lus, Mojo, uas combines yooj yim ntawm kev siv rau kev tshawb fawb kev loj hlob thiab ceev prototyping nrog lub peev xwm los tsim cov khoom lag luam zoo kawg. Qhov thib ib yog ua tiav los ntawm kev siv cov syntax paub txog cov lus Python, thiab qhov thib ob los ntawm kev muaj peev xwm muab tso ua ke rau hauv tshuab code, lub cim xeeb-kev nyab xeeb mechanisms, thiab kev siv cov cuab yeej kho vajtse acceleration.

Qhov project yog tsom rau kev siv rau kev txhim kho hauv kev kawm tshuab, tab sis tau nthuav tawm raws li hom lus dav dav uas nthuav dav lub peev xwm ntawm Python nrog cov cuab yeej programming thiab tsim nyog rau ntau yam haujlwm. Piv txwv li, cov lus siv tau rau thaj chaw xws li kev ua haujlwm siab, kev ua cov ntaub ntawv thiab kev hloov pauv. Ib qho nthuav feature ntawm Mojo yog lub peev xwm los qhia cov cim emoji "πŸ”₯" ua qhov txuas ntxiv rau cov ntaub ntawv code (piv txwv li, "helloworld.πŸ”₯"), ntxiv rau cov ntawv txuas ntxiv ".mojo".

Tam sim no, cov lus yog nyob rau theem ntawm kev txhim kho hnyav thiab tsuas yog qhov kev sib tham hauv online tau muab rau kev sim. Kev sib cais sib cais rau kev khiav ntawm cov kab ke hauv zos tau cog lus tias yuav tsum luam tawm tom qab, tom qab tau txais kev tawm tswv yim txog kev ua haujlwm ntawm kev sib tham hauv web ib puag ncig. Lub hauv paus code rau lub compiler, JIT thiab lwm yam kev txhim kho uas muaj feem xyuam rau qhov project yog npaj yuav qhib tom qab lub internal architecture ua tiav (tus qauv rau kev tsim ib tug ua hauj lwm qauv tom qab kaw qhov rooj yog reminiscent ntawm thawj theem ntawm kev loj hlob ntawm LLVM, Clang thiab Swift). Txij li thaum Mojo syntax yog raws li Python lus, thiab hom kab ke ze rau C / C ++, yav tom ntej lawv npaj yuav tsim cov cuab yeej los ua kom yooj yim rau kev txhais cov haujlwm uas twb muaj lawm sau hauv C / C ++ thiab Python rau Mojo, nrog rau. los tsim cov haujlwm hybrid sib txuas nrog Python code thiab Mojo.

Qhov project yog tsim los koom nrog cov khoom siv kho vajtse uas muaj ntawm cov tshuab heterogeneous hauv kev ua lej. Piv txwv li, GPUs, tshwj xeeb tshuab kev kawm accelerators, thiab processor qhia vectors (SIMD) tuaj yeem siv los khiav Mojo daim ntawv thov thiab sib piv kev suav. Cov laj thawj uas tau muab los tsim ib qho kev sib cais ntawm cov lus Python es tsis yog koom nrog CPython optimization ua hauj lwm uas twb muaj lawm muaj xws li kev tsom mus rau muab tso ua ke, kev sib koom ua ke ntawm cov txheej txheem kev muaj peev xwm, thiab kev siv cov txheej txheem sib txawv ntawm sab hauv uas tso cai rau cov cai khiav ntawm GPUs thiab ntau yam. kho vajtse accelerators. Txawm li cas los xij, Mojo cov neeg tsim khoom npaj siab yuav nyob nrog CPython ntau li ntau tau.

Mojo tuaj yeem siv ob qho tib si hauv kev txhais lus siv JIT, thiab muab tso ua ke rau hauv cov ntaub ntawv ua tiav (AOT, ua ntej-ntawm-lub sijhawm). Lub compiler muaj built-in niaj hnub technologies rau tsis siv neeg optimization, caching thiab faib muab tso ua ke. Cov ntawv nyeem hauv Mojo lus tau hloov mus rau qib qis nruab nrab ntawm MLIR (Multi-Level Intermediate Representation), tsim los ntawm LLVM qhov project thiab muab peev xwm ntxiv rau kev ua kom zoo ntawm cov ntaub ntawv ntws graph. Lub compiler tso cai rau koj siv ntau yam backends uas txhawb MLIR los tsim cov tshuab code.

Siv cov cuab yeej kho vajtse ntxiv txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm Piv txwv li, thaum kuaj ib daim ntawv thov rau tsim Mandelbrot teeb, ib daim ntawv thov muab tso ua ke hauv Mojo lus thaum ua tiav hauv AWS huab (r7iz.metal-16xl) tau ua 6 zaug sai dua qhov kev siv hauv C ++ (0.03 sec. vs. . 0.20 sec.), thiab tseem 35 txhiab zaus sai dua li daim ntawv thov Python thaum siv tus qauv CPython 3.10.9 (0.03 sec. vs. 1027 sec.) thiab 1500 zaus sai dua thaum siv PYPY (0.03 sec. vs. 46.1 sec.) .

Thaum ntsuam xyuas kev ua tau zoo hauv kev daws teeb meem kev kawm tshuab, AI pawg Modular Inference Engine, sau ua lus Mojo, piv rau kev daws teeb meem raws li TensorFlow lub tsev qiv ntawv, yog 3 zaug sai dua thaum ua cov qauv lus ntawm lub kaw lus nrog Intel processor, 6.4 npaug sai dua thaum ua tiav cov qauv kev pom zoo thiab 2.1 npaug sai dua thaum ua haujlwm nrog cov qauv rau kev ua cov ntaub ntawv pom. Thaum siv AMD processors, qhov nce thaum siv Mojo yog 3.2, 5 thiab 2.2 npaug, thiab thaum siv ARM processors - 5.3, 7.5 thiab 1.7 zaug, raws li. PyTorch-raws li kev daws teeb meem lagged qab Mojo los ntawm 1.4, 1.1 thiab 1.5 npaug ntawm Intel CPUs, 2.1, 1.2 thiab 1.5 npaug ntawm AMD CPUs thiab 4, 4.3 thiab 1.3 npaug ntawm ARM CPUs.

LLVM tus tsim tsim cov lus programming tshiab Mojo

Cov lus txhawb kev ntaus ntawv zoo li qub thiab tsis tshua muaj kev nco-kev nyab xeeb nta nco txog Rust, xws li kev siv lub neej taug qab thiab qiv nyiaj. Ntxiv nrog rau cov chaw rau kev nyab xeeb ua haujlwm nrog cov taw qhia, cov lus tseem muab cov yam ntxwv rau kev ua haujlwm qis, piv txwv li, nkag mus rau lub cim xeeb ncaj qha hauv hom tsis muaj kev nyab xeeb siv hom Pointer, hu rau tus kheej SIMD cov lus qhia, lossis nkag mus rau cov khoom siv txuas ntxiv xws li TensorCores thiab AMX .

LLVM tus tsim tsim cov lus programming tshiab Mojo

Txhawm rau ua kom yooj yim rau kev sib cais ntawm classic thiab optimized Python code rau kev ua haujlwm nrog cov ntsiab lus meej meej rau txhua qhov sib txawv, nws tau thov kom siv lo lus tseem ceeb "fn" es tsis txhob "def". Ib yam li rau cov chav kawm, yog tias koj xav tau statically ntim cov ntaub ntawv hauv lub cim xeeb thaum muab tso ua ke (raws li hauv C), koj tuaj yeem siv hom "struct" es tsis yog "chav kawm". Nws tseem tuaj yeem yooj yim ntshuam modules hauv C / C ++ hom lus, piv txwv li, kom xa cov cos muaj nuj nqi los ntawm lub tsev qiv ntawv lej, koj tuaj yeem teev "los ntawm "math.h" import cos".

Tau qhov twg los: opennet.ru

Ntxiv ib saib