LLVM Mlengi Amapanga Chinenero Chatsopano cha Mojo Programming

Chris Lattner, woyambitsa ndi mmisiri wamkulu wa LLVM komanso wopanga chilankhulo cha Swift, ndi Tim Davis, yemwe kale anali mkulu wa mapulojekiti a Google AI monga Tensorflow ndi JAX, adayambitsa chilankhulo chatsopano cha pulogalamu, Mojo, chomwe chimaphatikiza kugwiritsa ntchito mosavuta chitukuko ndi chitukuko. prototyping mwachangu ndi kuthekera kopanga zinthu zomaliza zogwira ntchito kwambiri. Yoyamba imatheka pogwiritsa ntchito syntax yodziwika bwino ya chilankhulo cha Python, ndipo yachiwiri kudzera pakutha kuphatikizira pamakina amakina, njira zoteteza kukumbukira, komanso kugwiritsa ntchito zida zothamangitsira zida.

Pulojekitiyi ikuyang'ana pa ntchito yopititsa patsogolo maphunziro a makina, koma imaperekedwa ngati chinenero chodziwika bwino chomwe chimawonjezera mphamvu za Python ndi zida zopangira mapulogalamu ndipo ndizoyenera ntchito zosiyanasiyana. Mwachitsanzo, chinenerochi chimagwira ntchito kumadera monga makompyuta ochita bwino kwambiri, kukonza deta ndi kusintha. Chosangalatsa cha Mojo ndikutha kutchula zilembo za emoji "πŸ”₯" ngati chowonjezera cha mafayilo amakhodi (mwachitsanzo, "helloworld.πŸ”₯"), kuwonjezera pa mawu owonjezera ".mojo".

Pakalipano, chinenerocho chiri pa siteji ya chitukuko chakuya ndipo mawonekedwe a intaneti okha ndi omwe amaperekedwa kuti ayesedwe. Misonkhano yosiyana yoyendetsera machitidwe am'deralo akulonjezedwa kuti idzasindikizidwa pambuyo pake, atalandira ndemanga pa kayendetsedwe ka malo ochezera a pa intaneti. Khodi yochokera kwa wolemba, JIT ndi zochitika zina zokhudzana ndi polojekitiyi ikukonzekera kutsegulidwa pambuyo pomaliza zomangamanga zamkati (chitsanzo chopanga chithunzi chogwira ntchito kumbuyo kwa zitseko zotsekedwa chimakumbutsa gawo loyamba la chitukuko cha LLVM, Clang ndi Mwachangu). Popeza kuti mawu a Mojo amachokera ku chinenero cha Python, ndipo mtundu wamtunduwu uli pafupi ndi C / C ++, m'tsogolomu akukonzekera kupanga zida zochepetsera kumasulira kwa ntchito zomwe zilipo kale zolembedwa mu C / C ++ ndi Python ku Mojo, komanso kupanga ma projekiti osakanizidwa kuphatikiza Python code ndi Mojo.

Pulojekitiyi idapangidwa kuti iziphatikiza zida za Hardware zomwe zilipo zamakina osiyanasiyana powerengera. Mwachitsanzo, ma GPU, ma accelerator apadera ophunzirira makina, ndi ma processor instruction vectors (SIMD) atha kugwiritsidwa ntchito kuyendetsa mapulogalamu a Mojo ndikufananiza mawerengedwe. Zifukwa zomwe zaperekedwa zopangira kagawo kakang'ono ka chilankhulo cha Python m'malo molowa nawo ntchito yokhathamiritsa ya CPython ikuphatikiza kuyang'ana kwambiri pakuphatikiza, kuphatikiza luso ladongosolo ladongosolo, komanso kugwiritsa ntchito kamangidwe kosiyana kosiyana komwe kamalola kuti code igwire ntchito pa GPU ndi zosiyanasiyana. hardware accelerators. Komabe, opanga Mojo akufuna kukhalabe ogwirizana ndi CPython momwe angathere.

Mojo itha kugwiritsidwa ntchito pomasulira pogwiritsa ntchito JIT, komanso kuphatikiza mafayilo omwe angathe kukwaniritsidwa (AOT, pasadakhale). Wopangayo wapanga matekinoloje amakono kuti azitha kukhathamiritsa, kusungitsa ndi kugawa. Zolemba zochokera m'chinenero cha Mojo zimasinthidwa kukhala kachidindo kakang'ono kakang'ono ka MLIR (Multi-Level Intermediate Representation), yopangidwa ndi pulojekiti ya LLVM ndikupereka zina zowonjezera kuti ziwongolere kukonzedwa kwa graph flow flow data. Wopangayo amakulolani kugwiritsa ntchito ma backends osiyanasiyana omwe amathandizira MLIR kupanga makina amakina.

Kugwiritsa ntchito makina owonjezera a hardware kuti mufulumizitse kuwerengera kumapangitsa kuti zitheke kukwaniritsa ntchito zomwe zili zapamwamba kuposa C/C ++ ntchito pakuwerengera mozama. Mwachitsanzo, poyesa pulogalamu yopangira seti ya Mandelbrot, pulogalamu yopangidwa m'chinenero cha Mojo itagwiritsidwa ntchito mumtambo wa AWS (r7iz.metal-16xl) inapezeka kuti inali yachangu ka 6 kuposa kukhazikitsidwa mu C++ (masekondi 0.03 vs. . .

Powunika momwe magwiridwe antchito amagwirira ntchito pakuthana ndi zovuta zophunzirira makina, AI stack Modular Inference Engine, yolembedwa m'chinenero cha Mojo, poyerekeza ndi yankho lochokera ku laibulale ya TensorFlow, inali yothamanga maulendo 3 pokonza chitsanzo cha chinenero pamakina omwe ali ndi makina osindikizira. purosesa ya Intel, nthawi 6.4 mwachangu pokonza njira yopangira malingaliro komanso nthawi 2.1 mwachangu pogwira ntchito ndi mitundu yosinthira zidziwitso zowoneka. Mukamagwiritsa ntchito mapurosesa a AMD, zopindulitsa mukamagwiritsa ntchito Mojo zinali 3.2, 5 ndi 2.2 nthawi, komanso pogwiritsira ntchito mapurosesa a ARM - 5.3, 7.5 ndi 1.7 nthawi, motsatana. Yankho lochokera ku PyTorch lidatsalira kumbuyo kwa Mojo ndi 1.4, 1.1 ndi 1.5 pa Intel CPUs, 2.1, 1.2 ndi 1.5 nthawi pa AMD CPU ndi 4, 4.3 ndi 1.3 pa ma ARM CPU.

LLVM Mlengi Amapanga Chinenero Chatsopano cha Mojo Programming

Chilankhulochi chimathandizira kulemba mosasunthika komanso zinthu zotetezedwa pamakumbukidwe otsika zomwe zimakumbukira Dzimbiri, monga kutsata kwa moyo wonse komanso kubwereketsa. Kuphatikiza pa malo ogwirira ntchito otetezeka okhala ndi zolozera, chilankhulochi chimaperekanso mawonekedwe a ntchito yotsika, mwachitsanzo, mwayi wofikira kukumbukira mosatetezeka pogwiritsa ntchito mtundu wa Pointer, kuyimbira malangizo a SIMD, kapena kupeza zowonjezera zama Hardware monga TensorCores ndi AMX. .

LLVM Mlengi Amapanga Chinenero Chatsopano cha Mojo Programming

Kuti muchepetse kulekanitsa kwa code ya Python yachikale komanso yokhathamiritsa ya magwiridwe antchito okhala ndi matanthauzidwe omveka amitundu yonse, akuyenera kugwiritsa ntchito mawu ofunikira "fn" m'malo mwa "def". Momwemonso m'makalasi, ngati mukufuna kulongedza deta pokumbukira (monga C), mutha kugwiritsa ntchito mtundu wa "struct" m'malo mwa "kalasi". N'zothekanso kungolowetsa ma modules m'zinenero za C / C ++, mwachitsanzo, kuitanitsa ntchito ya cos kuchokera ku laibulale ya masamu, mukhoza kufotokoza "kuchokera ku "math.h" import cos".

Source: opennet.ru

Kuwonjezera ndemanga