Abuuraha LLVM Wuxuu Soosaaraa Luuqad Cusub oo Barnaamijka Mojo

Chris Lattner, aasaasaha iyo madaxa naqshadeeyaha LLVM iyo abuuraha luqadda barnaamijka Swift, iyo Tim Davis, madaxii hore ee mashaariicda Google AI sida Tensorflow iyo JAX, ayaa soo bandhigay luqad cusub oo barnaamijka Mojo ah oo isku daraysa fududeynta adeegsiga R&D iyo soo saarista degdega ah ku habboonaanta alaabta dhamaadka waxqabadka sare. Midda koowaad waxaa lagu gaaraa iyadoo la adeegsanayo ereyga la yaqaan ee luqadda Python, tan labaadna waxaa sabab u ah awoodda lagu ururiyo koodhka mashiinka, hababka maaraynta xusuusta badbaadada leh, iyo adeegsiga aaladaha dardargelinta xisaabinta hardware.

Mashruucu wuxuu diiradda saarayaa isticmaalka horumarinta barashada mashiinka, laakiin waxaa loo soo bandhigay sida luqad guud oo ujeedo leh oo ballaarinaysa awoodda luqadda Python ee barnaamijyada nidaamyada waxayna ku habboon tahay hawlo badan oo kala duwan. Tusaale ahaan, luqadda ayaa lagu dabaqi karaa meelaha sida xisaabinta waxqabadka sare, habaynta xogta iyo isbeddelka. Muuqaalka xiisaha leh ee Mojo waa awoodda lagu qeexo calaamadda emoji "πŸ”₯" sidii kordhinta faylasha koodka (tusaale, "helloworld.πŸ”₯"), marka lagu daro kordhinta qoraalka ".mojo".

Hadda, luqaddu waxay ku socotaa horumar xooggan oo kaliya interface interneedka ayaa la bixiyaa si loo tijaabiyo. Kulamo gaar ah oo loogu talagalay nidaamyada maxalliga ah ayaa loo ballan qaaday in la daabici doono mar dambe, ka dib markii la helo jawaab-celin ku saabsan shaqada jawiga shabakada is-dhexgalka. Koodhka isha ee isku-duwaha, JIT iyo horumarinta kale ee la xidhiidha mashruuca ayaa la qorsheeyay in la furo ka dib marka la dhammeeyo naqshadaynta qaab dhismeedka gudaha (qaabka horumarinta ee tusaalaha shaqada ee ka dambeeya albaabbada xiran wuxuu u eg yahay marxaladda hore ee horumarinta LLVM, Clang iyo Swift). Maadaama Mojo's syntax uu ku saleysan yahay Python iyo nidaamka nooca uu ku dhow yahay C/C++, waxaa jira qorshayaal mustaqbalka lagu horumarinayo qalab si loo fududeeyo tarjumaada mashaariicda hadda jirta ee ku qoran C/C++ iyo Python ilaa Mojo, iyo sidoo kale horumarinta mashaariicda isku-dhafka ah ee isku-dhafan Python code. iyo Mojo.

Mashruuca waxaa loogu talagalay in lagu lug yeesho agabka qalabka ee nidaamyada kala duwan ee laga heli karo nidaamka xisaabinta. Tusaale ahaan, GPU-yada, dardar-geliyayaasha barashada mashiinka khaaska ah, iyo tilmaamaha farsamaynta vector-ka (SIMDs) ayaa loo isticmaali karaa in lagu socodsiiyo codsiyada Mojo iyo barbar-dhigid xisaabinta. Sababta loo horumariyo qayb gaar ah oo luqadda Python ah, halkii lagu biirin lahaa shaqada hagaajinta ee CPython ee jira, ayaa lagu tilmaamay inay tahay diiradda la isku duba ridey, isku dhafka awoodaha barnaamijka nidaamka, iyo adeegsiga qaab-dhismeedka gudaha oo asal ahaan ka duwan kaas oo u oggolaanaya koodhka inuu noqdo lagu fuliyay GPU-yada iyo dardar-geliyayaasha qalabka kala duwan. Isla mar ahaantaana, horumarinta Mojo waxay ku tala jiraan inay u hoggaansamaan ku habboonaanta CPython intii suurtagal ah.

Mojo waxaa loo isticmaali karaa labadaba qaabka tarjumaada JIT iyo isku dhafka faylasha la fulin karo (AOT, wakhti ka hor). Isku-dubariduhu waxa uu leeyahay teknoolojiyad casri ah oo ku dhex dhisan oo si toos ah u wanaajinaya, kaydinta iyo isu-ururinta qaybsan. Qoraallada isha ee luqadda Mojo waxaa loo rogaa kood dhexdhexaad ah oo heer hoose ah MLIR (Matalaad Dhexdhexaadin Heer-Multi-Level), oo uu sameeyay mashruuca LLVM oo bixiya sifooyin dheeri ah oo lagu wanaajinayo habaynta garaafka socodka xogta. Isku-dubariduhu wuxuu kuu oggolaanayaa inaad isticmaasho gadaalyo kala duwan oo taageeraya MLIR si loo soo saaro koodka mashiinka.

Isticmaalka habab qalabaysan oo dheeri ah si loo dardargeliyo xisaabinta ayaa suurtogal ka dhigaysa in la gaaro waxqabadka, iyadoo xisaabinta degdega ah, ay dhaafto codsiyada C / C ++. Tusaale ahaan, marka la tijaabinayo arjiga soo saarista Mandelbrot, codsiga Mojo ee la soo ururiyey, markii lagu fuliyay daruuraha AWS (r7iz.metal-16xl), wuxuu ahaa 6 jeer ka dhaqso badan hirgelinta C ++ (0.03 sec. vs. 0.20 sec). .), iyo sidoo kale 35 kun jeer ka dhakhso badan codsiga Python iyadoo la adeegsanayo kaydka CPython 3.10.9 (0.03 sec vs 1027 sec) iyo 1500 jeer ka dhakhso badan iyadoo la isticmaalayo PYPY (0.03 sec vs 46.1 sec).

Marka la qiimeeyo waxqabadka aagga xallinta mashaakilaadka barashada mashiinka, Modular Inference Engine AI oo ku qoran luqadda Mojo, marka la barbar dhigo xalka ku saleysan maktabadda TensorFlow, waxay u rogtay 3 jeer ka dhakhso badan nidaamka Intel leh. processor marka la farsameynayo qaabka luqadda, 6.4 jeer ka dhaqso badan marka la fulinayo qaabka jiilka talada iyo 2.1 jeer ka dhaqso badan marka la shaqeynayo moodooyinka habaynta macluumaadka muuqaalka. Markaad isticmaalayso processor-yada AMD, faa'iidada marka la isticmaalayo Mojo waxay ahayd 3.2, 5 iyo 2.2 jeer, iyo marka la isticmaalayo processor-yada ARM - 5.3, 7.5 iyo 1.7, siday u kala horreeyaan. Xalka PyTorch-ku-salaysan ayaa ka dambeeyay Mojo 1.4, 1.1 iyo 1.5 jeer Intel CPU, 2.1, 1.2 iyo 1.5 jeer AMD CPU iyo 4, 4.3 iyo 1.3 jeer ARM CPU.

Abuuraha LLVM Wuxuu Soosaaraa Luuqad Cusub oo Barnaamijka Mojo

Luqadu waxay taageertaa teebaynta joogtada ah iyo astaamaha badbaadsan ee heerka hoose ee xusuusta sifada Rust sida tixraaca nolosha oo dhan iyo jeegaga amaahaha doorsooma (amaaha hubinta). Marka lagu daro habka badbaadada leh ee tilmaamayaasha, luqaddu waxay sidoo kale bixisaa sifooyin loogu talagalay shaqada heerka hoose, tusaale ahaan, waxaa suurtogal ah in si toos ah loo galo xusuusta qaab aan badbaado lahayn iyadoo la adeegsanayo nooca Tilmaamaha, wac tilmaamaha SIMD ee shakhsi ahaaneed, ama helitaanka qalabka kordhinta sida Sida TensorCores iyo AMX.

Abuuraha LLVM Wuxuu Soosaaraa Luuqad Cusub oo Barnaamijka Mojo

Si loo fududeeyo kala-soocidda Python code-ka caadiga ah iyo kuwa la hagaajiyay ee loogu talagalay shaqooyinka leh qeexitaanno nooca cad ee dhammaan doorsoomayaasha, waxaa la soo jeediyay in la isticmaalo erey muhiim ah oo gaar ah "fn" beddelka "def". Si la mid ah fasallada, haddii aad u baahan tahay inaad si joogto ah ugu xidho xogta xusuusta wakhtiga la ururinayo (sida C), beddelka "class" waxaad isticmaali kartaa nooca "qaab-dhismeedka". Waxa kale oo suurtagal ah in si fudud loo soo dejiyo modules luqadaha C / C ++, tusaale ahaan, si aad u soo dejiso shaqada cos maktabadda xisaabta, waxaad cayimi kartaa "laga bilaabo" xisaabta.h" soo dejinta cos.

Source: opennet.ru

Add a comment