Ka whakawhanakehia e te Kaihanga LLVM te reo hootaka hou Mojo

Ko Chris Lattner, te kaiwhakarewa me te tino hoahoa o LLVM me te kaihanga o te reo whakahōtaka Swift, me Tim Davis, te upoko o mua o nga kaupapa AI a Google penei i a Tensorflow me JAX, i whakauru mai he reo hootaka hou, Mojo, e whakakotahi ana i te ngawari o te whakamahi mo te whanaketanga rangahau me prototyping tere me te kaha ki te hanga hua mutunga mahi teitei. Ko te tuatahi ka tutuki ma te whakamahi i te wetereo taunga o te reo Python, ko te tuarua na te kaha ki te whakahiato ki roto i te waehere miihini, nga tikanga haumaru-mahara, me te whakamahi taputapu whakatere taputapu.

Ko te kaupapa e arotahi ana ki te whakamahi mo te whakawhanaketanga i roto i te waahanga ako miihini, engari ka whakaatuhia hei reo kaupapa whanui e whakawhānui ana i nga kaha o Python me nga taputapu rorohiko rorohiko, he pai hoki mo te maha o nga mahi. Hei tauira, ko te reo e pa ana ki nga waahi penei i te rorohiko mahi teitei, te tukatuka raraunga me te panoni. Ko tetahi ahuatanga whakamere o Mojo ko te kaha ki te tohu i te ahua emoji "🔥" hei toronga mo nga konae waehere (hei tauira, "helloworld.🔥"), hei taapiri atu ki te toronga kuputuhi ".mojo".

I tenei wa, ko te reo kei te waahi o te whakawhanaketanga kaha, ko te atanga ipurangi anake ka tukuna hei whakamatautau. Ko nga huihuinga motuhake mo te whakahaere i runga i nga punaha o te rohe ka oatihia ka whakaputahia i muri mai, i muri i te whiwhi urupare mo te whakahaeretanga o te taiao ipurangi tauwhitiwhiti. Ko te waehere puna mo te kaitoi, JIT me etahi atu whanaketanga e pa ana ki te kaupapa kua whakamaherehia kia whakatuwherahia i muri i te otinga o te hoahoanga o roto (ko te tauira mo te whakawhanake i tetahi tauira mahi i muri i nga tatau kati e maumahara ana ki te waahi tuatahi o te whanaketanga o LLVM, Clang me Tere). I te mea ko te Mojo syntax kei runga i te reo Python, a ko te punaha momo e tata ana ki te C/C++, i te wa kei te heke mai ka whakamahere ratou ki te whakawhanake taputapu hei whakangawari i te whakamaoritanga o nga kaupapa kua tuhia ki te C/C++ me te Python ki Mojo, me ki te whakawhanake kaupapa ranu te whakakotahi i te waehere Python me te Mojo.

I hangaia te kaupapa ki te whakauru i nga rauemi taputapu e waatea ana o nga punaha rereke ki te mahi tatau. Hei tauira, ka taea te whakamahi i nga GPU, nga kaiwhakatere ako miihini motuhake, me nga vector tohutohu tukatuka (SIMD) hei whakahaere i nga tono Mojo me te whakarara i nga tatauranga. Ko nga take mo te whakawhanake i tetahi waahanga motuhake o te reo Python kaua ki te uru atu ki nga mahi arotautanga CPython o naianei, ko te aro ki te whakahiato, te whakaurunga o nga kaha whakahoahoa punaha, me te whakamahi i tetahi hoahoanga tino rerekee o roto e taea ai e te waehere te whakahaere i runga i nga GPU me nga momo rereke. whakatere taputapu. Heoi, ko nga kaiwhakawhanake Mojo e hiahia ana kia noho hototahi ki te CPython ka taea.

Ka taea te whakamahi a Mojo i roto i te aratau whakamaori ma te whakamahi JIT, me te whakahiato ki nga konae ka taea te whakahaere (AOT, i mua i te waa). Kua hanga-i roto i te kaikohikohi nga hangarau hou mo te arotautanga aunoa, te keteroki me te whakahiato tohatoha. Ko nga tuhinga puna i roto i te reo Mojo ka huri ki te waehere takawaenga taumata-iti MLIR (Multi-Level Intermediate Representation), i whakawhanakehia e te kaupapa LLVM me te whakarato i etahi atu kaha mo te arotau i te tukatuka o te kauwhata rerenga raraunga. Ka taea e te kaitoi ki te whakamahi i nga momo tuara e tautoko ana i te MLIR ki te whakaputa waehere miihini.

Ma te whakamahi i etahi atu taputapu taputapu hei tere ake i nga tatauranga ka taea te whakatutuki i nga mahi pai ake i nga tono C/C++ i te wa o nga tatauranga kaha. Hei tauira, i te whakamatautau i tetahi tono mo te whakaputa i te huinga Mandelbrot, he tono whakahiato i roto i te reo Mojo ka mahia i roto i te kapua AWS (r7iz.metal-16xl) ka 6 nga wa tere atu i te whakatinanatanga i C++ (0.03 sec. vs. . 0.20 hēkona), me te 35 mano nga wa tere ake i te tono Python i te wa e whakamahi ana i te CPython 3.10.9 (0.03 hekona me te 1027 hekona) me te 1500 nga wa tere ake i te whakamahi PYPY (0.03 hekona me te 46.1 hekona) .

I te aromatawai i nga mahi i te waahi o te whakaoti rapanga ako miihini, ko te AI ​​stack Modular Inference Engine, i tuhia ki te reo Mojo, i whakaritea ki te otinga i runga i te whare pukapuka TensorFlow, he 3 nga wa tere ake i te wa e tukatuka ana i tetahi tauira reo i runga i te punaha me he pūtukatuka Intel, 6.4 nga wa tere ake i te wa e tukatuka ana i te whakatinanatanga o te tauira whakaputa taunakitanga me te 2.1 nga wa tere ake i te wa e mahi ana me nga tauira mo te tukatuka i nga korero ataata. I te wa e whakamahi ana i nga tukatuka AMD, ko nga hua i te wa e whakamahi ana i a Mojo he 3.2, 5 me te 2.2 nga wa, me te whakamahi i nga tukatuka ARM - 5.3, 7.5 me te 1.7 nga wa. Ko te otinga-a-PyTorch i muri i a Mojo e 1.4, 1.1 me te 1.5 nga wa i runga i nga Intel CPUs, 2.1, 1.2 me te 1.5 nga wa i runga i nga AMD CPUs me nga wa 4, 4.3 me 1.3 i runga i nga ARM ARM.

Ka whakawhanakehia e te Kaihanga LLVM te reo hootaka hou Mojo

Ka tautokohia e te reo te patopato pateko me nga ahuatanga haumaru-mahara taumata-iti e maumahara ana ki a Rust, penei i te tohutoro mo te wa e ora ana me te kaitaki nama. I tua atu i nga whakaurunga mo te mahi haumaru me nga tohu tohu, ka whakaratohia ano e te reo nga ahuatanga mo te mahi taumata iti, hei tauira, te uru tika ki te mahara i roto i te aratau haumaru ma te whakamahi i te momo Tohu, te waea ki nga tohutohu SIMD takitahi, te uru atu ranei ki nga taapiri taputapu penei i te TensorCores me te AMX .

Ka whakawhanakehia e te Kaihanga LLVM te reo hootaka hou Mojo

Hei whakangawari ake i te wehenga o te waehere Python matarohia me te arotau mo nga mahi me nga momo whakamaramatanga mo nga taurangi katoa, ka whakaarohia kia whakamahia he kupu matua motuhake "fn" hei utu mo te "def". He rite ano mo nga karaehe, mena ka hiahia koe ki te kohi raraunga i roto i te mahara i te wa e whakahiato ana (penei i te C), ka taea e koe te whakamahi i te momo "struct" hei utu mo te "akomanga". Ka taea hoki te kawemai noa i nga waahanga i roto i nga reo C/C++, hei tauira, ki te kawemai i te mahi cos mai i te whare pukapuka pangarau, ka taea e koe te tohu "mai i "math.h" kawemai cos".

Source: opennet.ru

Tāpiri i te kōrero