LLVM Kreinto Disvolvas Novan Mojo-Programlingvon

Chris Lattner, fondinto kaj ĉefarkitekto de LLVM kaj kreinto de la Swift programlingvo, kaj Tim Davis, iama estro de Google AI-projektoj kiel ekzemple Tensorflow kaj JAX, lanĉis novan Mojo programlingvon kiu kombinas facilecon de uzo por R&D kaj rapida prototipado kun taŭgeco por altkvalitaj finproduktoj. La unua estas atingita per la uzo de la konata sintakso de la lingvo Python, kaj la dua estas pro la kapablo kompili al maŝinkodo, mekanismoj por sekura memoradministrado, kaj la uzo de iloj por aparatara akcelo de kalkuloj.

La projekto estas fokusita al uzo por maŝinlernada evoluo, sed estas prezentita kiel ĝeneraluzebla lingvo kiu etendas la kapablojn de la Python-lingvo kun sistemaj programado kaj taŭgas por larĝa gamo de taskoj. Ekzemple, la lingvo estas aplikebla al areoj kiel alta rendimento komputiko, datumtraktado kaj transformo. Interesa trajto de Mojo estas la kapablo specifi la emoji-simbolon "🔥" kiel etendon por kodaj dosieroj (ekzemple "helloworld.🔥"), krom la teksta etendo ".mojo".

Nuntempe, la lingvo estas sub intensa evoluo kaj nur la interreta interfaco estas ofertita por testado. Apartaj asembleoj por funkcii per lokaj sistemoj estas promesitaj esti publikigitaj poste, post ricevado de sugestoj pri la laboro de la interaga retmedio. La fontkodo por la kompililo, JIT kaj aliaj evoluoj ligitaj al la projekto estas planitaj por esti malfermita post kiam la dezajno de la interna arkitekturo estas kompletigita (la evolumodelo de funkcia prototipo malantaŭ fermitaj pordoj similas la komencan etapon de evoluo de LLVM, Clang. kaj Swift). Ĉar la sintakso de Mojo estas bazita sur Python kaj la tipsistemo estas proksima al C/C++, estas planoj estonte evoluigi ilaron por faciligi la tradukon de ekzistantaj projektoj skribitaj en C/C++ kaj Python al Mojo, same kiel evoluigi hibridaj projektoj kiuj kombinas Python-kodon kaj Mojo.

La projekto estas desegnita por impliki la aparatajn rimedojn de heterogenaj sistemoj disponeblaj en la sistemo en la kalkuloj. Ekzemple, GPUoj, specialiĝintaj maŝinlernantaj akceliloj, kaj vektortraktadinstrukcioj (SIMDoj) povas esti uzitaj por ruli Mojo-aplikojn kaj paraleligi komputadojn. La kialo de evoluigado de aparta subaro de la Python-lingvo, prefere ol aliĝado al de la optimumiga laboro de la ekzistanta CPython, estas citita kiel kompilfokuso, integriĝo de sistemaj programadkapabloj, kaj la uzo de fundamente malsama interna arkitekturo kiu permesas al kodo esti. efektivigita sur GPUoj kaj diversaj hardvaraj akceliloj. Samtempe, la programistoj de Mojo intencas aliĝi al kongruo kun CPython kiel eble plej multe.

Mojo povas esti uzata kaj en JIT-interpreta reĝimo kaj por kompilo en ruleblajn dosierojn (AOT, antaŭtempe). La kompililo havas enkonstruitajn modernajn teknologiojn por aŭtomata optimumigo, kaŝmemoro kaj distribuita kompilo. Fonttekstoj en la Mojo-lingvo estas konvertitaj en malaltnivelan mezan kodon MLIR (Multi-Level Intermediate Representation), evoluigita per la LLVM-projekto kaj disponiganta kromajn ecojn por optimumigado de la pretigo de datumflua grafeo. La kompililo permesas al vi uzi diversajn backends kiuj subtenas MLIR por generi maŝinkodon.

La uzo de pliaj aparataj mekanismoj por akceli kalkulojn ebligas atingi rendimenton, kiu, per intensaj kalkuloj, superas C/C++-aplikojn. Ekzemple, dum testado de aplikaĵo por generi Mandelbrot-aron, la kompilita Mojo-aplikaĵo, kiam ekzekutita en la AWS-nubo (r7iz.metal-16xl), estis 6 fojojn pli rapida ol la C ++ efektivigo (0.03 sek. kontraŭ 0.20 sek. .), same kiel 35 mil fojojn pli rapide ol Python-aplikaĵo uzante stokon CPython 3.10.9 (0.03 sek vs 1027 sek) kaj 1500 fojojn pli rapide uzante PYPY (0.03 sek kontraŭ 46.1 sek).

Kiam oni taksis la agadon en la areo de solvado de problemoj pri maŝinlernado, la stako de Modular Inference Engine AI skribita en la lingvo Mojo, kompare kun solvo bazita sur la biblioteko TensorFlow, montriĝis 3 fojojn pli rapida en sistemo kun Intel. procesoro dum prilaborado de lingvomodelo, 6.4 fojojn pli rapide kiam ekzekuto de la rekomenda genera modelo kaj 2.1 fojojn pli rapide kiam laboras kun modeloj por prilaborado de vidaj informoj. Kiam oni uzas AMD-procesorojn, la gajno uzinte Mojo estis 3.2, 5 kaj 2.2 fojojn, kaj kiam oni uzas ARM-procesorojn - 5.3, 7.5 kaj 1.7 fojojn respektive. La solvo bazita en PyTorch postrestis malantaŭ Mojo je 1.4, 1.1 kaj 1.5 fojojn ĉe la Intel CPU, 2.1, 1.2 kaj 1.5 fojojn ĉe la AMD CPU kaj 4, 4.3 kaj 1.3 fojojn ĉe la ARM CPU.

LLVM Kreinto Disvolvas Novan Mojo-Programlingvon

La lingvo subtenas senmovan tajpadon kaj malaltnivelajn memor-sekurajn funkciojn rememorigajn pri Rust-ecoj kiel ekzemple referenca dumviva spurado kaj varia pruntkontrolilo (pruntkontrolilo). Krom la rimedoj por sekura funkciado per montriloj, la lingvo ankaŭ provizas funkciojn por malaltnivela laboro, ekzemple, eblas rekte aliri memoron en nesekura reĝimo uzante la Montri-specon, voki individuajn SIMD-instrukciojn aŭ aliri aparatarajn etendaĵojn tiajn. kiel TensorCores kaj AMX.

LLVM Kreinto Disvolvas Novan Mojo-Programlingvon

Por simpligi la apartigon de klasika kaj optimumigita Python-kodo por funkcioj kun eksplicitaj tipdifinoj por ĉiuj variabloj, estas proponite uzi apartan ŝlosilvorton "fn" anstataŭe de "def". Simile por klasoj, se vi bezonas statike paki datumojn en memoro je kompiltempo (kiel en C), anstataŭ "klaso" vi povas uzi la tipon "struct". Eblas ankaŭ simple importi modulojn en C / C ++ lingvoj, ekzemple, por importi la cos-funkcion el la matematika biblioteko, vi povas specifi "de "math.h" import cos".

fonto: opennet.ru

Aldoni komenton