Chris Lattner, o le na faavaeina ma le tusiata sili o le LLVM ma le na faia le Swift programming language, ma Tim Davis, sa avea muamua ma ulu o Google AI poloketi e pei o Tensorflow ma JAX, na faʻalauiloaina se gagana polokalame fou, Mojo, e tuʻufaʻatasia le faigofie o le faʻaogaina mo le atinaʻeina o suʻesuʻega ma fa'ata'ita'iga fa'avavevave ma le gafatia e fa'atupu ai oloa fa'ai'uga maualuga. O le mea muamua e maua e ala i le faʻaogaina o le faʻaoga masani o le gagana Python, ma le lona lua e ala i le mafai ona faʻapipiʻi i totonu o le masini faʻailoga, masini e teu ai manatua, ma le faʻaogaina o meafaigaluega faʻavavevave.
O loŹ»o taulaŹ»i le poloketi i le faŹ»aogaina mo le atinaŹ»e i le matata o le aŹ»oaŹ»oina o masini, ae o loŹ»o tuŹ»uina atu o se gagana faŹ»apitoa e faŹ»alauteleina ai le gafatia o le Python faŹ»atasi ai ma meafaigaluega faŹ»apipiŹ»i polokalame ma e talafeagai mo le tele o galuega. Mo se faŹ»ataŹ»itaŹ»iga, o le gagana e faŹ»aoga i vaega e pei o le komipiuta maualuga, faŹ»asologa o faŹ»amaumauga ma suiga. O se mea manaia o Mojo o le mafai lea ona faŹ»amaonia le uiga emoji "š„" e fai ma faŹ»aopoopoga mo faila faila (mo se faŹ»ataŹ»itaŹ»iga, "helloworld.š„"), faŹ»aopoopo i le faŹ»aopoopoga o tusitusiga ".mojo".
I le taimi nei, o le gagana o loʻo i ai i le tulaga o le atinaʻe malosi ma naʻo le faʻaogaina i luga ole laiga e ofoina atu mo suʻega. O fonotaga eseese mo le faʻaogaina i luga o faiga faʻapitonuʻu ua folafola e faʻasalalau mulimuli ane, pe a maeʻa ona maua faʻamatalaga i luga o le faʻaogaina o le upega tafaʻilagi fesoʻotaʻiga. O le code source mo le tuʻufaʻatasia, JIT ma isi atinaʻe e fesoʻotaʻi ma le poloketi ua fuafua e tatalaina pe a maeʻa le fausaga o totonu (o le faʻataʻitaʻiga mo le atinaʻeina o se faʻataʻitaʻiga galue i tua atu o faitotoʻa tapuni e faamanatu mai ai le amataga o le atinaʻeina o le LLVM, Clang ma vave). Talu ai o le Mojo syntax e faʻavae i luga o le gagana Python, ma o le ituaiga faiga e latalata ile C / C ++, i le lumanaʻi latou te fuafua e atiaʻe meafaigaluega e faʻafaigofie ai le faʻaliliuga o galuega faatino o loʻo tusia i le C / C ++ ma le Python i Mojo, faʻapea foʻi ma e atiaʻe galuega faʻapipiʻi tuʻufaʻatasia le Python code ma le Mojo.
O le poloketi ua mamanuina e aofia ai punaoa meafaigaluega o loʻo avanoa o faiga eseese i le faʻatinoina o faʻatusatusaga. Mo se faʻataʻitaʻiga, GPU, masini faʻapitoa aʻoaʻoga faʻavavevave, ma faʻatonuga faʻatonuga (SIMD) e mafai ona faʻaogaina e faʻatautaia ai talosaga Mojo ma faʻatusatusa faʻatusatusaga. O mafuaʻaga ua tuʻuina atu mo le atinaʻeina o se vaega eseʻese o le gagana Python nai lo le auai i le CPython optimization galuega o loʻo i ai nei e aofia ai le taulaʻi atu i le tuʻufaʻatasia, tuʻufaʻatasia o le faʻaogaina o polokalama faʻaogaina, ma le faʻaogaina o se fausaga faʻapitoa i totonu e mafai ai ona faʻaogaina le code i GPU ma eseese. masini fa'avavevave. Ae ui i lea, o loʻo faʻamoemoe le au atinaʻe Mojo e tumau le fetaui ma CPython i le tele e mafai ai.
Mojo e mafai ona faʻaoga uma i le faʻamatalaga faʻaoga e faʻaaoga ai le JIT, ma mo le tuʻufaʻatasia i faila faʻatinoina (AOT, i luma o le taimi). O lo'o iai i totonu o le tu'ufa'atasia tekinolosi fa'aonaponei mo le fa'avasegaina otometi, fa'asao ma tufatufa fa'atasi. O tusitusiga fa'apogai i le gagana Mojo ua fa'aliliuina i lalo ole la'asaga tu'ufa'atasi code MLIR (Multi-Level Intermediate Representation), fa'atupuina e le poloketi LLVM ma tu'uina atu avanoa fa'aopoopo mo le fa'amalieina o le fa'agaioiina o le fa'asologa o fa'amaumauga o fa'amaumauga. E fa'atagaina oe e le tu'ufa'atasia e fa'aogaina pito i tua e lagolagoina le MLIR e fa'atupu ai le fa'ailoga masini.
O le fa'aogaina o masini fa'aopoopo e fa'avavevave ai fa'atusatusaga e mafai ai ona ausia fa'atinoga e sili atu nai lo C/C++ talosaga i taimi o fa'atatauga. Mo se faʻataʻitaʻiga, pe a suʻeina se talosaga mo le fausiaina o le Mandelbrot seti, o se talosaga tuʻufaʻatasia i le gagana Mojo pe a faʻatinoina i le AWS cloud (r7iz.metal-16xl) na faʻaalia e 6 taimi sili atu nai lo le faʻatinoga i le C++ (0.03 sec. vs. . 0.20 sec.), ma le 35 afe taimi sili atu nai lo le Python application pe a faʻaaogaina le CPython 3.10.9 (0.03 sec. vs. 1027 sec.) ma le 1500 taimi sili atu pe a faʻaaoga PYPY (0.03 sec. vs. 46.1 sec.) .
Pe a suŹ»esuŹ»eina le faŹ»atinoga i le tulaga o le foia o faŹ»afitauli o le aŹ»oaŹ»oina o masini, o le AI āāstack Modular Inference Engine, na tusia i le gagana Mojo, faŹ»atusatusa i se fofo e faŹ»avae i luga o le TensorFlow faletusi, e 3 taimi vave pe a faŹ»aogaina se gagana faŹ»ataŹ»itaŹ»iga i luga o se faiga ma se Intel processor, 6.4 taimi sili atu pe a faŹ»atinoina le faŹ»atinoina o le faŹ»ataŹ»itaŹ»iga o le faŹ»atulagaina o fautuaga ma le 2.1 taimi vave pe a galue ma faŹ»ataŹ»itaŹ»iga mo le faŹ»atinoina o faŹ»amatalaga vaaia. Pe a faŹ»aogaina le AMD processors, o tupe maua pe a faŹ»aaogaina Mojo e 3.2, 5 ma 2.2 taimi, ma pe a faŹ»aaogaina ARM processors - 5.3, 7.5 ma 1.7 taimi, faasologa. O le PyTorch-faŹ»avae fofo na tuŹ»u i tua Mojo e 1.4, 1.1 ma 1.5 taimi i luga ole PPU Intel, 2.1, 1.2 ma 1.5 taimi ile AMD PPU ma 4, 4.3 ma 1.3 taimi ile PPU ARM.

E lagolagoina e le gagana le ta'i fa'ata'oto ma le maualalo o le manatua-saogalemu foliga e manatua ai le Rust, e pei o le su'esu'eina o le olaga atoa ma le siaki nono. I le faʻaopoopoga i nofoaga mo galuega saogalemu ma faʻailoga, e maua ai foi e le gagana foliga mo galuega maualalo, mo se faʻataʻitaʻiga, avanoa tuusaʻo i le manatua i le tulaga le saogalemu e faʻaaoga ai le Pointer type, valaʻau taʻitoʻatasi SIMD faatonuga, poʻo le mauaina o faʻaopoopoga meafaigaluega e pei o TensorCores ma AMX .

Ina ia faafaigofieina le tuueseeseina o le Python code masani ma sili ona lelei mo galuega ma faʻamatalaga manino ituaiga mo fesuiaiga uma, ua fautuaina e faʻaoga se isi upu "fn" nai lo le "def". E faʻapea foʻi mo vasega, afai e te manaʻomia le faʻapipiʻiina o faʻamaumauga i le mafaufau i le taimi o le tuʻufaʻatasia (pei o le C), e mafai ona e faʻaogaina le ituaiga "struct" nai lo le "vasega". E mafai foi ona na'o le fa'aulufaleina mai o modules i gagana C/C++, mo se fa'ata'ita'iga, e fa'aulufale mai le galuega cos mai le faletusi numera, e mafai ona e fa'amaonia "mai le "math.h" import cos".
puna: opennet.ru
