Chris Lattner, mpanorina sy lehiben'ny architect an'ny LLVM ary mpamorona ny fiteny fandaharana Swift, ary Tim Davis, lehiben'ny tetikasa Google AI taloha toa an'i Tensorflow sy JAX, dia nampiditra fiteny fandaharana vaovao, Mojo, izay manambatra ny fanamorana ny fampiasana amin'ny fampandrosoana fikarohana sy prototyping haingana miaraka amin'ny mety hamolavola vokatra farany mahomby. Ny voalohany dia azo amin'ny alàlan'ny fampiasana ny fehezanteny mahazatra amin'ny fiteny Python, ary ny faharoa amin'ny alàlan'ny fahaizana manangona ho kaody milina, mekanisma azo antoka, ary ny fampiasana fitaovana fanamafisam-peo.
Ny tetikasa dia mifantoka amin'ny fampiasana ho an'ny fampandrosoana eo amin'ny sehatry ny fianarana milina, saingy aseho ho fiteny amin'ny tanjona ankapobeny izay manitatra ny fahaizan'ny Python miaraka amin'ny fitaovana fandrindrana rafitra ary mety amin'ny asa maro. Ohatra, ny fiteny dia azo ampiharina amin'ny sehatra toy ny informatika avo lenta, fanodinana angona ary fanovana. Ny endri-javatra mahaliana an'i Mojo dia ny fahafahana mamaritra ny endri-tsoratra emoji "🔥" ho fanitarana ny rakitra kaody (ohatra, "helloworld.🔥"), ankoatra ny fanitarana lahatsoratra ".mojo".
Amin'izao fotoana izao, eo amin'ny dingan'ny fivoarana mafonja ny fiteny ary ny interface an-tserasera ihany no atolotra hanaovana fitiliana. Fivoriambe mitokana ho an'ny rafitra eo an-toerana no nampanantenaina fa havoaka any aoriana, rehefa nahazo valiny momba ny fampandehanana ny tontolon'ny tranonkala interactive. Ny kaody loharano ho an'ny compiler, JIT ary ny fivoarana hafa mifandraika amin'ny tetikasa dia nokasaina hosokafana rehefa vita ny maritrano anatiny (ny modely amin'ny famolavolana prototype miasa ao ambadiky ny varavarana mihidy dia mampahatsiahy ny dingana voalohany amin'ny fampandrosoana ny LLVM, Clang ary Swift). Koa satria ny syntax Mojo dia mifototra amin'ny fiteny Python, ary ny rafitra karazana dia manakaiky ny C/C++, amin'ny hoavy dia mikasa ny hamolavola fitaovana hanatsorana ny fandikana ireo tetikasa efa misy voasoratra ao amin'ny C/C++ sy Python amin'ny Mojo izy ireo, ary koa mba hamolavola tetikasa hybrid manambatra ny code Python sy Mojo.
Ny tetikasa dia natao hampidirana ireo loharanon-karena misy amin'ny rafitra heterogène amin'ny fanaovana kajy. Ohatra, ny GPU, ny acceleratore fianarana milina manokana, ary ny vector instruction processeur (SIMD) dia azo ampiasaina hampandehanana ny rindranasa Mojo sy hampitoviana ny kajy. Ny antony voatonona amin'ny famolavolana ampahany amin'ny Python fa tsy miditra amin'ny asa fanatsarana CPython efa misy dia ny fifantohana amin'ny fanangonana, ny fampidirana ny fahaiza-manao fandaharana amin'ny rafitra, ary ny fampiasana maritrano anatiny tsy mitovy amin'ny fototra izay ahafahan'ny kaody mandeha amin'ny GPU sy isan-karazany. fitaovana accelerators. Na izany aza, ny mpamorona Mojo dia mikasa ny hijanona hifanaraka amin'ny CPython araka izay azo atao.
Mojo dia azo ampiasaina amin'ny fomba fandikana mampiasa JIT, ary amin'ny fanangonana ho rakitra azo tanterahana (AOT, mialoha ny fotoana). Ny compiler dia manana teknolojia maoderina namboarina ho an'ny fanatsarana mandeha ho azy, caching ary fanangonana fizarana. Ny lahatsoratra loharano amin'ny fiteny Mojo dia avadika ho kaody antonontonony ambany MLIR (Fanehoan-kevitra eo anelanelan'ny ambaratonga maro), novolavolain'ny tetikasa LLVM ary manome fahafaha-manao fanampiny amin'ny fanatsarana ny fanodinana ny grafika fikorianan'ny angona. Ny compiler dia ahafahanao mampiasa backends isan-karazany izay manohana ny MLIR mba hamoronana kaody milina.
Ny fampiasana mekanika fitaovana fanampiny hanafainganana ny kajy dia ahafahana manatratra fahombiazana ambony noho ny fampiharana C/C++ mandritra ny kajikajy mafonja. Ohatra, rehefa nanandrana ny rindranasa iray hamoronana ny seta Mandelbrot, ny fampiharana natambatra amin'ny fiteny Mojo rehefa novonoina tao amin'ny rahona AWS (r7iz.metal-16xl) dia nivadika ho in-6 haingana kokoa noho ny fampiharana amin'ny C++ (0.03 sec. vs. . 0.20 seg.), ary koa 35 arivo heny noho ny fampiharana Python rehefa mampiasa CPython 3.10.9 mahazatra (0.03 sec. vs. 1027 seg.) ary 1500 heny kokoa rehefa mampiasa PYPY (0.03 sec. vs. 46.1 sec.) .
Rehefa manombantombana ny fahombiazany eo amin'ny sehatry ny famahana ny olan'ny fianarana milina, ny AI Stack Modular Inference Engine, nosoratana tamin'ny fiteny Mojo, raha oharina amin'ny vahaolana mifototra amin'ny tranomboky TensorFlow, dia in-3 haingana kokoa tamin'ny fanodinana modely fiteny amin'ny rafitra misy. processeur Intel, 6.4 heny haingana kokoa rehefa mikarakara ny fanatanterahana ny modely famokarana tolo-kevitra ary 2.1 heny haingana kokoa rehefa miasa miaraka amin'ny maodely fanodinana fampahalalana hita maso. Rehefa mampiasa processeur AMD, ny tombony amin'ny fampiasana Mojo dia in-3.2, 5 ary 2.2, ary rehefa mampiasa processeur ARM - in-5.3, 7.5 ary in-1.7. Ny vahaolana mifototra amin'ny PyTorch dia nihemotra tao ambadiky ny Mojo tamin'ny in-1.4, 1.1 ary 1.5 tamin'ny Intel CPU, 2.1, 1.2 ary 1.5 tamin'ny AMD CPU ary in-4, 4.3 ary 1.3 tamin'ny CPU ARM.

Ny fiteny dia manohana ny fanoratana static sy ny endri-javatra azo antoka amin'ny fitadidiana ambany indrindra mampahatsiahy ny Rust, toy ny fanaraha-maso mandritra ny androm-piainany sy ny mpindram-bola. Ho fanampin'ny fitaovana ho an'ny asa azo antoka miaraka amin'ny tondro, ny fiteny dia manome endri-javatra ho an'ny asa ambany, ohatra, ny fidirana mivantana amin'ny fitadidiana amin'ny fomba tsy azo antoka amin'ny fampiasana ny karazana Pointer, fiantsoana toromarika SIMD tsirairay, na fidirana amin'ny fanitarana fitaovana toy ny TensorCores sy AMX .

Mba hanatsorana ny fisarahana ny kaody Python mahazatra sy optimized ho an'ny fiasa miaraka amin'ny famaritana karazana mazava ho an'ny fari-piainana rehetra, dia soso-kevitra ny hampiasa teny fanalahidy manokana "fn" fa tsy "def". Toy izany koa ho an'ny kilasy, raha mila manangona angona amin'ny fitadidiana ianao mandritra ny fanangonana (toy ny ao amin'ny C), azonao ampiasaina ny karazana "struct" fa tsy "class". Azo atao ihany koa ny manafatra modules amin'ny fiteny C/C++, ohatra, manafatra ny asa cos avy amin'ny tranomboky matematika, azonao atao ny mamaritra hoe "avy amin'ny "math.h" import cos".
Source: opennet.ru
