Mahaliccin LLVM Yana Haɓaka Sabon Harshen Shirye-shiryen Mojo

Chris Lattner, wanda ya kafa kuma babban mashahurin LLVM da mahaliccin Swift shirye-shiryen harshe, da Tim Davis, tsohon shugaban ayyukan Google AI irin su Tensorflow da JAX, sun gabatar da sabon yaren shirye-shiryen Mojo wanda ya haɗu da sauƙin amfani don R&D da saurin samfuri tare da. dace da high yi karshen kayayyakin. Na farko ana samunsa ne ta hanyar amfani da sananniya na harshen Python, na biyu kuma shi ne saboda ikon tattara lambar injina, hanyoyin sarrafa ƙwaƙwalwar ajiyar lafiya, da kuma amfani da kayan aiki don haɓaka ƙididdiga na hardware.

An mayar da aikin ne a kan amfani da na'ura don haɓaka ilmantarwa, amma an gabatar da shi a matsayin harshe na gaba ɗaya wanda ke fadada damar harshen Python tare da shirye-shiryen tsarin kuma ya dace da ayyuka masu yawa. Misali, yaren yana aiki ga yankuna kamar babban aikin kwamfuta, sarrafa bayanai da canji. Wani fasali mai ban sha'awa na Mojo shine ikon tantance alamar emoji "🔥" azaman tsawaita fayilolin lambar (misali, "helloworld.🔥"), ban da tsawaita rubutu ".mojo".

A halin yanzu, harshen yana ƙarƙashin ci gaba mai zurfi kuma kawai ana ba da haɗin kan layi don gwaji. An yi alƙawarin buga majalisu daban-daban don gudanar da tsarin gida daga baya, bayan samun ra'ayi game da aikin mahallin yanar gizo mai mu'amala. Lambar tushe don mai tarawa, JIT da sauran abubuwan da suka shafi aikin ana shirin buɗewa bayan an kammala ƙirar gine-ginen cikin gida (samfurin ci gaba na samfurin aiki a bayan ƙofofin da aka rufe yayi kama da matakin farko na ci gaban LLVM, Clang). da Swift). Tun da tsarin tsarin Mojo ya dogara ne akan Python kuma tsarin nau'in yana kusa da C/C++, akwai shirye-shirye a nan gaba don samar da kayan aiki don sauƙaƙe fassarar ayyukan da aka rubuta a cikin C/C++ da Python zuwa Mojo, da kuma haɓakawa. matasan ayyukan da suka haɗa lambar Python. da Mojo.

An tsara aikin don haɗa kayan aikin kayan aiki na tsarin daban-daban da ke cikin tsarin a cikin lissafin. Misali, ana iya amfani da GPUs, ƙwararrun injin koyan injuna, da umarnin sarrafa vector (SIMDs) don gudanar da aikace-aikacen Mojo da daidaita ƙididdiga. Dalilin haɓaka wani yanki daban na yaren Python, maimakon shiga aikin ingantawa na CPython na yanzu, an kawo shi azaman mai da hankali kan tattarawa, haɗakar damar shirye-shiryen tsarin, da kuma amfani da tsarin gine-gine na ciki daban-daban wanda ke ba da damar lamba ta kasance. wanda aka kashe akan GPUs da masu haɓaka kayan aiki daban-daban. A lokaci guda, masu haɓaka Mojo sun yi niyya don ma'amala da CPython gwargwadon yiwuwa.

Ana iya amfani da Mojo duka a cikin yanayin fassarar JIT kuma don haɗawa cikin fayilolin aiwatarwa (AOT, gaba-da-lokaci). Mai tarawa ya gina fasahar zamani don ingantawa ta atomatik, caching da rarrabawa. Rubutun tushe a cikin yaren Mojo suna jujjuya su zuwa ƙaramin matsakaiciyar lamba MLIR (Wakilin Matsakaicin Matsayi Mai-Multi-Multi-Level), wanda aikin LLVM ya haɓaka tare da samar da ƙarin fasaloli don inganta sarrafa jadawalin jigilar bayanai. Mai tarawa yana ba ku damar amfani da maɓalli daban-daban waɗanda ke goyan bayan MLIR don samar da lambar injin.

Amfani da ƙarin hanyoyin kayan masarufi don haɓaka ƙididdigewa yana ba da damar yin aiki wanda, tare da ƙididdige ƙididdiga, ya wuce aikace-aikacen C / C ++. Misali, lokacin gwada aikace-aikacen don samar da saitin Mandelbrot, aikace-aikacen Mojo da aka haɗa, lokacin da aka aiwatar da shi a cikin girgijen AWS (r7iz.metal-16xl), ya kasance sau 6 cikin sauri fiye da aiwatar da C ++ (0.03 sec. vs. 0.20 sec). .), haka kuma sau dubu 35 cikin sauri fiye da aikace-aikacen Python ta amfani da stock CPython 3.10.9 (0.03 sec vs 1027 sec) da sauri sau 1500 ta amfani da PYPY (0.03 sec vs 46.1 sec).

Lokacin da ake kimanta aikin a fannin warware matsalolin koyon injin, Modular Inference Engine AI tari da aka rubuta a cikin yaren Mojo, idan aka kwatanta da mafita dangane da ɗakin karatu na TensorFlow, ya zama sau 3 cikin sauri akan tsarin tare da Intel. processor lokacin sarrafa samfurin harshe, sau 6.4 cikin sauri lokacin aiwatar da ƙirar ƙirar shawarwarin da sau 2.1 cikin sauri lokacin aiki tare da samfura don sarrafa bayanan gani. Lokacin amfani da na'urori masu sarrafawa na AMD, riba lokacin amfani da Mojo shine sau 3.2, 5 da 2.2, kuma lokacin amfani da na'urori masu sarrafa ARM - 5.3, 7.5 da 1.7, bi da bi. Maganin tushen PyTorch baya bayan Mojo ta 1.4, 1.1 da 1.5 akan Intel CPU, 2.1, 1.2 da 1.5 akan AMD CPU da 4, 4.3 da 1.3 akan CPU ARM.

Mahaliccin LLVM Yana Haɓaka Sabon Harshen Shirye-shiryen Mojo

Harshen yana goyan bayan bugu a tsaye da ƙananan ƙaƙƙarfan fasalulluka-amintaccen ƙwaƙƙwalwa masu tunawa da fasalulluka na tsatsa kamar bin diddigin rayuwa da madaidaicin abin duba rance (mai duba aro). Baya ga hanyoyin yin aiki mai aminci tare da masu nuni, harshen kuma yana ba da fasali don ƙaramin aiki, alal misali, yana yiwuwa a sami dama ga ƙwaƙwalwar ajiya kai tsaye a yanayin da ba shi da aminci ta amfani da nau'in Pointer, kiran kowane umarnin SIMD, ko samun damar haɓaka kayan aikin kamar haka. kamar yadda TensorCores da AMX.

Mahaliccin LLVM Yana Haɓaka Sabon Harshen Shirye-shiryen Mojo

Don sauƙaƙe rabuwa da gargajiya da ingantaccen Python don ayyuka tare da ma'anar masu canji na bayyane, ana ba da shawarar yin amfani da kalmar sirri ta daban "maimakon" def ". Hakazalika ga azuzuwan, idan kuna buƙatar tattara bayanai a ƙididdiga a ƙwaƙwalwar ajiya a lokacin tattarawa (kamar yadda yake a cikin C), maimakon “class” zaku iya amfani da nau'in "struct". Hakanan yana yiwuwa a shigo da kayayyaki kawai a cikin yarukan C / C ++, alal misali, don shigo da aikin cos daga ɗakin karatu na lissafi, zaku iya tantance "daga math.h" shigo da cos.

source: budenet.ru

Add a comment