Umyili weLLVM uphuhlisa ulwimi olutsha lwenkqubo Mojo

UChris Lattner, umseki kunye nomyili oyintloko we-LLVM kunye nomdali wolwimi lweprogram ye-Swift, kunye noTim Davis, owayesakuba yintloko yeeprojekthi ze-Google ze-AI ezifana ne-Tensorflow kunye ne-JAX, wazisa ulwimi olutsha lweprogram, i-Mojo, edibanisa ukusebenziseka lula kuphuhliso lophando kunye iprototyping ekhawulezayo enokubanakho ukuyila iimveliso eziphezulu zokusebenza. Eyokuqala iphunyezwa ngokusetyenziswa kwe-syntax eqhelekileyo yolwimi lwePython, kwaye okwesibini ngenxa yokukwazi ukuqokelela kwikhowudi yomatshini, iindlela zokusebenza ngokukhuselekileyo kwememori, kunye nokusetyenziswa kwezixhobo zokukhawulezisa i-hardware yokubala.

Le projekthi igxininise ekusetyenzisweni kophuhliso kwinkalo yokufunda koomatshini, kodwa inikezelwa njengolwimi olujoliswe ngokubanzi olwandisa izakhono zePython kunye nezixhobo zokucwangcisa iinkqubo kwaye zilungele uluhlu olubanzi lwemisebenzi. Umzekelo, ulwimi lusebenza kwimimandla efana nekhompyutha esebenza kakhulu, ukusetyenzwa kwedatha kunye nokuguqulwa. Inqaku elinomdla leMojo kukukwazi ukucacisa umlinganiswa we-emoji "🔥" njengokwandiswa kweefayile zekhowudi (umzekelo, "helloworld.🔥"), ukongeza kwisandiso sombhalo ".mojo".

Okwangoku, ulwimi lukwinqanaba lophuhliso olunzulu kwaye kuphela i-interface ye-intanethi enikezelwayo yokuvavanya. Iindibano ezihlukeneyo zokuqhuba kwiinkqubo zendawo zithenjiswa ukuba ziya kupapashwa kamva, emva kokufumana ingxelo malunga nokusebenza kwendawo yewebhu edibeneyo. Ikhowudi yomthombo we-compiler, i-JIT kunye nolunye uphuhliso olunxulumene neprojekthi lucetywa ukuba luvulwe emva kokuba i-architecture yangaphakathi igqityiwe (umzekelo wokuphuhlisa iprototype esebenzayo emva kweengcango ezivaliweyo zikhumbuza inqanaba lokuqala lophuhliso lwe-LLVM, Clang kunye Swift). Ekubeni i-syntax ye-Mojo isekelwe kulwimi lwePython, kwaye inkqubo yohlobo isondele kwiC / C ++, kwixesha elizayo baceba ukuphuhlisa izixhobo ukwenza lula ukuguqulelwa kweeprojekthi ezikhoyo ezibhalwe kwiC / C ++ kunye nePython kwiMojo, kunye ukuphuhlisa iiprojekthi ezixubileyo ezidibanisa ikhowudi yePython kunye neMojo.

Iprojekthi yenzelwe ukubandakanya izibonelelo ze-hardware ezikhoyo kwiisistim ezingafaniyo ekwenzeni izibalo. Umzekelo, ii-GPUs, ii-accelerators zokufunda koomatshini abakhethekileyo, kunye nee-prosesa zomyalelo we-prosesa (i-SIMD) zingasetyenziselwa ukuqhuba usetyenziso lwe-Mojo kunye nokulinganisa ukubala. Izizathu ezinikezelweyo zokuphuhlisa iseti eyahlukileyo yolwimi lwePython endaweni yokujoyina umsebenzi okhoyo wokuphucula iCPython kubandakanya ugxininiso ekuhlanganiseni, ukudityaniswa kwezakhono zenkqubo yenkqubo, kunye nokusetyenziswa kolwakhiwo lwangaphakathi olwahlukileyo oluvumela ikhowudi ukuba iqhube kwiiGPUs kunye neentlobo ezahlukeneyo. ii-accelerator zehardware. Nangona kunjalo, abaphuhlisi beMojo bajonge ukuhlala behambelana neCPython kangangoko kunokwenzeka.

I-Mojo ingasetyenziselwa zombini kwimodi yokutolika usebenzisa i-JIT, kunye nokuhlanganiswa kwiifayile eziphunyeziweyo (AOT, kwangaphambili-ixesha). Umqambi uye wakha-ubuchwephesha banamhlanje bokuzenzela ngokuzenzekelayo, ukugcinwa kwe-caching kunye nokusabalalisa ukuhlanganiswa. Imibhalo yentsusa yolwimi lwesiMojo iguqulelwa kwikhowudi ephakathi ekwinqanaba elisezantsi i-MLIR (uBumelelo obuPhakathi beNqanaba eliMulti), ephuhliswe yiprojekthi ye-LLVM kunye nokubonelela ngezakhono ezongezelelweyo zokuphucula ukusetyenzwa kwegrafu yokuhamba kwedatha. Umqambi ikuvumela ukuba usebenzise ii-backends ezahlukeneyo ezixhasa i-MLIR ukuvelisa ikhowudi yomatshini.

Ukusebenzisa iindlela ezongezelelweyo ze-hardware ukukhawulezisa izibalo kwenza kube lula ukufezekisa ukusebenza okungaphezulu kwe-C / C ++ izicelo ngexesha lokubala olunzulu. Umzekelo, xa uvavanya isicelo sokwenza iseti yeMandelbrot, isicelo esihlanganisiweyo kulwimi lwe-Mojo xa sisenziwa kwilifu le-AWS (r7iz.metal-16xl) sajika sakhawuleza ka-6 kunokuphunyezwa kwi-C++ (0.03 sec. vs. . . 0.20 sec.), kwaye kwakhona 35 amawaka amaxesha ngokukhawuleza kunesicelo sePython xa usebenzisa i-CPython eqhelekileyo 3.10.9 (0.03 sec. vs. 1027 sec.) kunye namaxesha angama-1500 ngokukhawuleza xa usebenzisa i-PYPY (i-0.03 imizuzwana vs. .

Xa kuvavanywa ukusebenza kwibala lokusombulula iingxaki zokufunda koomatshini, i-AI yestack yeModular Inference Engine, ebhalwe ngolwimi lwaseMojo, xa kuthelekiswa nesisombululo esisekwe kwithala leencwadi leTensorFlow, yayingamaxesha e-3 ngokukhawuleza xa kusetyenzwa imodeli yolwimi kwinkqubo ene. iprosesa ye-Intel, amaxesha angama-6.4 ngokukhawuleza xa kusetyenzwa ukuphunyezwa kwemodeli yokuvelisa izindululo kunye namaxesha angama-2.1 ngokukhawuleza xa usebenza kunye neemodeli zokucubungula ulwazi olubonakalayo. Xa usebenzisa iiprosesa ze-AMD, inzuzo xa usebenzisa i-Mojo yayiyi-3.2, i-5 kunye ne-2.2 amaxesha, kwaye xa usebenzisa iiprosesa ze-ARM - 5.3, 7.5 kunye ne-1.7 amaxesha, ngokulandelanayo. Isisombululo esisekelwe kwi-PyTorch sishiywe emva kwe-Mojo ngo-1.4, 1.1 kunye namaxesha e-1.5 kwi-Intel CPUs, i-2.1, i-1.2 kunye ne-1.5 amaxesha kwi-AMD CPU kunye ne-4, 4.3 kunye ne-1.3 amaxesha kwi-ARM CPUs.

Umyili weLLVM uphuhlisa ulwimi olutsha lwenkqubo Mojo

Ulwimi luxhasa ukuchwetheza okumileyo kunye nenqanaba eliphantsi lememori-ekhuselekileyo iimpawu ezikhumbuza i-Rust, ezifana nokulandela umkhondo wobomi kunye nomkhangeli wokuboleka. Ukongeza kwizibonelelo zomsebenzi okhuselekileyo kunye nezikhombisi, ulwimi lukwabonelela ngeempawu zomsebenzi ophantsi, umzekelo, ukufikelela ngokuthe ngqo kwimemori kwimodi engakhuselekanga usebenzisa uhlobo lwe-Pointer, ukubiza imiyalelo ye-SIMD yomntu, okanye ukufikelela kwizandiso ze-hardware ezifana neTensorCores kunye ne-AMX. .

Umyili weLLVM uphuhlisa ulwimi olutsha lwenkqubo Mojo

Ukwenza lula ulwahlulo lwekhowudi yePython yakudala kunye nokulungiswa kwemisebenzi eneenkcukacha ezicacileyo zohlobo lwazo zonke izinto eziguquguqukayo, kucetywayo ukuba kusetyenziswe igama elingundoqo elahlukileyo elithi "fn" endaweni ye "def". Ngokufanayo kwiiklasi, ukuba ufuna ukupakisha idatha kwimemori ngexesha lokuhlanganiswa (njengakwi-C), ungasebenzisa uhlobo lwe "struct" endaweni ye "class". Kwakhona kunokwenzeka ukungenisa nje iimodyuli kwiilwimi zeC / C ++, umzekelo, ukungenisa umsebenzi we-cos kwilayibrari yezibalo, ungacacisa "ukusuka kwi "math.h" yokungenisa i-cos".

umthombo: opennet.ru

Thenga ukusingathwa okuthembekileyo kwiindawo ezinokhuseleko lweDDoS, iiseva zeVPS VDS 🔥 Thenga ukusingathwa kwewebhusayithi okuthembekileyo ngokhuseleko lwe-DDoS, iiseva zeVPS VDS | ProHoster