Nā Chris Lattner, te kaiwhakaū me te kaihoahoa matua o LLVM me te kaihanga o te reo hōtaka Swift, me Tim Davis, te tumuaki o ngā kaupapa AI a Google i mua pērā i a Tensorflow me JAX, i hura tētahi reo hōtaka hou, ko Mojo, e whakakotahi ana i te ngāwari o te whakamahi mō te rangahau me te tauira tere me te pai mō te hanga hua mutunga mahi-teitei. Ka tutuki tēnei mā te wetereo mōhiotia o Python, ko te mea whakamutunga ka tutuki mā te whakahiato taketake, ngā tikanga haumaru-mahara, me te whakaterenga taputapu.
Ko te arotahi o te kaupapa nei ko te whanaketanga o te ako mīhini, engari e whakaatuhia ana hoki hei reo whānui e whakawhānui ana i te Python me ngā āheinga hōtaka pūnaha, ā, he pai hoki mō te whānuitanga o ngā mahi. Hei tauira, ka taea te whakamahi i te reo ki ngā wāhanga pēnei i te rorohiko mahi-teitei me te tukatuka raraunga me te whakawhiti. Ko tētahi āhuatanga whakamere o Mojo ko te kaha ki te tohu i te tohu emoji "🔥" hei toronga mō ngā kōnae waehere (hei tauira, "helloworld.🔥"), hei tāpiri atu ki te toronga tuhinga ".mojo."
Kei te whanakehia te reo i tēnei wā, ā, he atanga ipurangi anake e wātea ana hei whakamātautau. E oatitia ana ka whakaputaina ngā hanganga motuhake mō te whakahaere i runga i ngā pūnaha ā-rohe i muri mai, whai muri i te whiwhinga urupare mō te taiao tukutuku tauwhitiwhiti. Kua whakamaheretia kia tuwhera te pūtake o te waehere pūtake mō te kaiwhakaemi, JIT, me ētahi atu whanaketanga e pā ana i muri i te otinga o te hoahoanga ā-roto (he rite te tauira whanaketanga kua kati mō tētahi tauira mahi ki te wāhanga whanaketanga tuatahi o LLVM, Clang, me Swift). Nā te mea kei runga i te Python te wetereo a Mojo, ā, he rite tana pūnaha momo ki te C/C++, ko ngā mahere ā muri ake nei ko te whakawhanake i ngā taputapu hei whakahaere i te hekenga o ngā kaupapa C/C++ me Python o nāianei ki Mojo, me te whakahaere hoki i te whanaketanga o ngā kaupapa ranu e whakakotahi ana i te waehere Python me te Mojo.
Kua hangaia te kaupapa nei hei whakamahi i ngā rauemi taputapu o nāianei o ngā pūnaha kanorau mō te tatau. Hei tauira, ka taea te whakamahi i ngā GPU, ngā whakaterenga ako mīhini motuhake, me ngā tukatuka tohu kotahi-tohutohu (SIMD) hei whakahaere i ngā tono Mojo me te whakarara i ngā tatau. Ko ngā take i whakahuatia mō te whakawhanake i tētahi huinga Python motuhake, kaua ki te whakawhirinaki ki te CPython o nāianei mō te arotau, ko te arotahi ki te whakahiato, te whakaurunga o ngā āheinga hōtaka pūnaha, me te whakamahinga o tētahi hoahoa ā-roto tino rerekē e āhei ai te whakahaere waehere i runga i ngā GPU me ngā whakaterenga taputapu rerekē. I taua wā anō, e whai ana ngā kaiwhakawhanake Mojo ki te pupuri i te hototahi ki te CPython i te mea ka taea.
Ka taea te whakamahi i a Mojo i roto i te aratau JIT (just-in-time) me te aratau ahead-of-time (AOT). Kei roto i te kaiwhakaemi ngā hangarau hou mō te arotau aunoa, te pupuri raraunga, me te whakahiato tohatoha. Ka hurihia te waehere pūtake Mojo ki te waehere takawaenga taumata-iti (MLIR), i whakawhanakehia e te kaupapa LLVM, ā, e tuku ana i ngā āheinga tāpiri mō te arotau i te tukatuka kauwhata rere raraunga. Ka tautokohia e te kaiwhakaemi ngā pito whakamuri whakahohea-MLIR mō te whakaputa waehere mīhini.
Mā te whakamahi i te whakaterenga taputapu tāpiri ka taea te whakapiki i te mahi mō ngā tataunga kaha e hipa ake ana i ngā tono C/C++. Hei tauira, i te whakamātautau i tētahi tono whakaputa huinga Mandelbrot, ko te tono Mojo kua whakahiatohia (r7iz.metal-16xl) e 6 ngā wā tere atu i te whakatinanatanga C++ i te wā e whakahaerehia ana i roto i te kapua AWS (0.03 hēkona ki te 0.20 hēkona), 35 ngā wā tere atu i te tono Python i te wā e whakamahi ana i te CPython 3.10.9 paerewa (0.03 hēkona ki te 1027 hēkona), ā, 1500 ngā wā tere atu i te wā e whakamahi ana i te PYPY (0.03 hēkona ki te 46.1 hēkona).
I te aromatawai i te mahi ako mīhini, ko te puranga AI Modular Inference Engine, i tuhia ki Mojo, e 3 ngā wā i tere ake ai i runga i te tukatuka Intel i te tukatuka i tētahi tauira reo, 6.4 ngā wā i tere ake ai i te whakahaere i tētahi tauira taunakitanga, ā, 2.1 ngā wā i tere ake ai i te whakahaere i ngā tauira tukatuka mōhiohio tirohanga ki te whakataurite ki tētahi otinga e hangai ana ki TensorFlow. I runga i ngā tukatuka AMD, i eke a Mojo ki ngā pikinga mahi 3.2x, 5x, me te 2.2x, i runga i ngā tukatuka ARM, i eke ki ngā pikinga mahi 5.3x, 7.5x, me te 1.7x. I muri iho te otinga e hangai ana ki PyTorch i a Mojo mā te 1.4x, 1.1x, me te 1.5x i runga i ngā CPU Intel, 2.1x, 1.2x, me te 1.5x i runga i ngā CPU AMD, ā, 4x, 4.3x, me te 1.3x i runga i ngā CPU ARM.

Ka tautokohia e te reo ngā āhuatanga pato pūmau me ngā āhuatanga haumaru mahara taumata-iti e rite ana ki a Rust, pērā i te aroturuki i te oranga tohutoro me te tirotiro nama. Haunga ngā āhuatanga haumaru tohutoro, ka tukuna hoki e te reo ngā āheinga taumata-iti, pērā i te urunga tika ki te mahara i te aratau haumaru kore mā te whakamahi i te momo Tohutoro, te karanga i ngā tohutohu SIMD takitahi, me te uru atu ki ngā toronga taputapu pērā i a TensorCores me AMX.

Hei whakahaere i te wehenga o te waehere Python tawhito me te waehere Python kua arotauhia mō ngā mahi me ngā momo kua tautuhia mō ngā taurangi katoa, e whakaarohia ana kia whakamahia he kupumatua "fn" motuhake hei utu mō te "def". Waihoki, mō ngā akomanga, mēnā e hiahiatia ana te tākai raraunga pumau ki te mahara i te wā whakahiato (pērā i C), ka taea te whakamahi i te momo "struct" hei utu mō te "class." Ka taea hoki te kawemai ngāwari i ngā kōwae C/C++. Hei tauira, hei kawemai i te mahi cos mai i te whare pukapuka pāngarau, ka taea e koe te tohu "mai i te "math.h" kawemai cos."
Source: opennet.ru
