Onye Okike LLVM na-etolite Asụsụ Mmemme Mojo ọhụrụ

Chris Lattner, onye nchoputa na onye isi ụkpụrụ nke LLVM na onye okike nke asụsụ mmemme Swift, yana Tim Davis, onye bụbu onye isi nke ọrụ Google AI dị ka Tensorflow na JAX, webatara asụsụ mmemme Mojo ọhụrụ nke na-ejikọta ịdị mfe nke iji R&D na prototyping ngwa ngwa. adabara elu arụmọrụ ọgwụgwụ ngwaahịa. A na-enweta nke mbụ site na iji syntax maara nke ọma nke asụsụ Python, nke abụọ bụ n'ihi ikike ịchịkọta koodu igwe, usoro maka njikwa ebe nchekwa nchekwa, na iji ngwá ọrụ maka ngwa ngwa ngwa ngwa nke mgbako.

Ihe oru ngo a lekwasịrị anya na iji maka mmepe mmụta igwe, mana egosipụtara ya dị ka asụsụ ebumnuche n'ozuzu nke na-agbatị ike nke asụsụ Python na mmemme sistemu ma dabara adaba maka ọtụtụ ọrụ. Dịka ọmụmaatụ, asụsụ a na-adaba na mpaghara ndị dị ka mgbako arụmọrụ dị elu, nhazi data na mgbanwe. Akụkụ na-adọrọ mmasị nke Mojo bụ ike ịkọwa akara emoji "🔥" dị ka ndọtị maka faịlụ koodu (dịka ọmụmaatụ, "helloworld.🔥"), na mgbakwunye na ndọtị ederede ".mojo".

Ka ọ dị ugbu a, asụsụ a na-enwe ọganihu siri ike yana naanị ihe ntanetị ka a na-enye maka nnwale. A na-ekwe nkwa na a ga-ebipụta mgbakọ dị iche iche iji na-agba ọsọ na usoro mpaghara, mgbe ị nwetasịrị nzaghachi na ọrụ nke ebe nrụọrụ weebụ na-emekọrịta ihe. A na-eme atụmatụ imeghe koodu isi maka onye nchịkọta, JIT na mmepe ndị ọzọ metụtara ọrụ ahụ mgbe emechara imepụta ihe n'ime ụlọ (ụdị mmepe nke ụdị ọrụ n'azụ ụzọ mechiri emechi yiri mmalite nke mmepe nke LLVM, Clang. na Swift). Ebe ọ bụ na Mojo's syntax dabeere na Python na ụdị usoro dị nso na C / C ++, e nwere atụmatụ n'ọdịnihu ịmepụta ngwá ọrụ iji kwado nsụgharị nke ọrụ ndị dị ugbu a edere na C / C++ na Python na Mojo, yana ịzụlite. ngwakọ ọrụ na-ejikọta Python code na Mojo.

Emebere oru ngo a iji tinye akụrụngwa akụrụngwa nke sistemu dị iche iche dị na sistemụ na mgbako. Dịka ọmụmaatụ, enwere ike iji GPUs, ndị ọkachamara mmụta mmụta igwe pụrụ iche, na ntuziaka nhazi vector (SIMDs) iji mee ngwa Mojo na mkpirisi mkpirisi. A na-akpọ ihe kpatara ịmepụta akụkụ dị iche iche nke asụsụ Python, kama ịbanye na ọrụ njikarịcha nke CPython dị ugbu a, dị ka nchịkọta nchịkọta, ntinye nke ike mmemme usoro, na iji ihe dị iche iche dị n'ime ime ụlọ na-enye ohere ka koodu dị. Egburu na GPU na ngwaike ngwaike dị iche iche. N'otu oge ahụ, ndị mmepe nke Mojo bu n'obi ịrapara na ndakọrịta na CPython dị ka o kwere mee.

Enwere ike iji Mojo ma na ọnọdụ nkọwa JIT yana maka mkpokọta n'ime faịlụ ndị enwere ike ime ya (AOT, tupu oge eruo). Onye nchịkọta ihe ejirila teknụzụ ọgbara ọhụrụ arụnyere maka njikarịcha akpaaka, caching na mkpokọta kesaa. A na-atụgharị ederede isi mmalite n'asụsụ Mojo ka ọ bụrụ koodu etiti etiti dị ala MLIR (Nnọchiteanya etiti etiti ọtụtụ ọkwa), nke LLVM mepụtara yana inye atụmatụ ndị ọzọ maka ịkwalite nhazi nke eserese data. Ndị nchịkọta na-enye gị ohere iji azụ azụ dị iche iche na-akwado MLIR iji mepụta koodu igwe.

Iji usoro ngwaike ndị ọzọ na-eme ka mgbako dị ngwa na-eme ka o kwe omume ịrụ ọrụ nke, na ngụkọ siri ike, gafere ngwa C / C ++. Dịka ọmụmaatụ, mgbe ị na-anwale ngwa iji mepụta usoro Mandelbrot, ngwa Mojo a chịkọtara, mgbe e gburu ya na igwe ojii AWS (r7iz.metal-16xl), bụ ugboro 6 ngwa ngwa karịa mmejuputa C ++ (0.03 sec. vs. 0.20 sec. .), yana 35 puku ugboro ngwa ngwa karịa ngwa Python na-eji ngwaahịa CPython 3.10.9 (0.03 sec vs 1027 sec) na ugboro 1500 ngwa ngwa site na iji PYPY (0.03 sec vs 46.1 sec).

Mgbe ị na-enyocha arụmọrụ na mpaghara idozi nsogbu mmụta igwe, Modular Inference Engine AI stack edere n'asụsụ Mojo, ma e jiri ya tụnyere azịza dabere na ọbá akwụkwọ TensorFlow, tụgharịrị bụrụ ugboro 3 ngwa ngwa na sistemụ nwere Intel. processor mgbe ị na-ahazi ụdị asụsụ, 6.4 ugboro ngwa ngwa mgbe ogbugbu nke usoro ọgbọ na 2.1 ngwa ngwa mgbe na-arụ ọrụ na ụdị maka nhazi ozi visual. Mgbe ị na-eji AMD processors, uru mgbe ị na-eji Mojo bụ 3.2, 5 na 2.2 ugboro, na mgbe ị na-eji ARM processors - 5.3, 7.5 na 1.7 ugboro, n'otu n'otu. Ihe ngwọta dabere na PyTorch kwụsịrị Mojo site na 1.4, 1.1 na 1.5 ugboro na Intel CPU, 2.1, 1.2 na 1.5 ugboro na AMD CPU na 4, 4.3 na 1.3 ugboro na ARM CPU.

Onye Okike LLVM na-etolite Asụsụ Mmemme Mojo ọhụrụ

Asụsụ a na-akwado mpịpị kwụ ọtọ na njiri nchekwa nchekwa dị ala na-echetara atụmatụ nchara dị ka ntule oge ndụ yana nlele nbinye mgbanwe (onye na-agbazinye ego). Na mgbakwunye na ụzọ maka ịrụ ọrụ nchekwa na pointers, asụsụ a na-enyekwa atụmatụ maka ọrụ dị ala, dịka ọmụmaatụ, ọ ga-ekwe omume ịnweta ebe nchekwa ozugbo na ọnọdụ adịghị mma site na iji ụdị Pointer, kpọọ ntụziaka SIMD n'otu n'otu, ma ọ bụ nweta nkwalite ngwaike dị otú ahụ. dị ka TensorCores na AMX.

Onye Okike LLVM na-etolite Asụsụ Mmemme Mojo ọhụrụ

Iji mee ka nkewa nke koodu Python dị mfe na nke kachasị maka ọrụ nwere nkọwa ụdị nkọwa maka mgbanwe niile, a na-atụ aro ka iji mkpụrụokwu dị iche "fn" kama ịbụ "def". N'otu aka ahụ maka klaasị, ọ bụrụ na ịchọrọ ịkwakọ data na ebe nchekwa n'oge a na-achịkọta (dị ka ọ dị na C), kama "klas" ị nwere ike iji ụdị "struct". Ọ ga-ekwe omume nanị ibubata modul na asụsụ C / C ++, dịka ọmụmaatụ, ibubata ọrụ cos site na ụlọ akwụkwọ mgbakọ na mwepụ, ị nwere ike dee "site na "math.h" import cos.

isi: opennet.ru

Tinye a comment