LLVM Musiki Inogadzira Mutauro Mutsva weMojo Programming

Chris Lattner, muvambi uye mugadziri mukuru weLLVM uye mugadziri weSwift programming mutauro, uye Tim Davis, aimbove mukuru weGoogle AI mapurojekiti akadai seTensorflow neJAX, akaunza mutauro mutsva wechirongwa, Mojo, unosanganisa nyore kushandisa mukusimudzira tsvakiridzo uye. kukurumidza prototyping ine mukana wekugadzira yepamusoro-inoshanda yekupedzisira zvigadzirwa. Yekutanga inowanikwa kuburikidza nekushandiswa kweiyo yakajairika syntax yemutauro wePython, uye yechipiri kuburikidza nekugona kuunganidza mumashini kodhi, ndangariro-yakachengeteka nzira, uye kushandiswa kwehardware yekumhanyisa maturusi.

Iyo purojekiti yakanangana nekushandiswa kwekusimudzira mumunda wekudzidza muchina, asi inoratidzwa semutauro-wechinangwa unotambanudza hunyanzvi hwePython nemasystem ekuronga maturusi uye inokodzera kuwanda kwemabasa. Semuenzaniso, mutauro unoshanda kunzvimbo dzakadai seyepamusoro-kushanda komputa, kugadzirisa data uye shanduko. Chinhu chinonakidza cheMojo kugona kududzira emoji hunhu "πŸ”₯" sewedzero yemafaira ekodhi (semuenzaniso, "helloworld.πŸ”₯"), kuwedzera kune yekuwedzera mavara ".mojo".

Parizvino, mutauro uri padanho rekukura kwakanyanya uye chete online interface inopihwa kuti iedzwe. Magungano akaparadzana ekushanda pamasisitimu enzvimbo anovimbiswa kuburitswa gare gare, mushure mekugamuchira mhinduro pamusoro pekushanda kwenzvimbo yewebhu inopindirana. Iyo kodhi kodhi yemugadziri, JIT uye zvimwe zviitiko zvine chekuita neprojekiti yakarongwa kuvhurwa mushure mekuvakwa kwemukati kwapera (modhi yekugadzira prototype inoshanda kuseri kwemasuo akavharwa inoyeuchidza nhanho yekutanga yekuvandudza LLVM, Clang uye. Swift). Sezvo Mojo syntax yakavakirwa pamutauro wePython, uye mhando system iri padyo neC/C ++, mune ramangwana vanoronga kugadzira maturusi ekurerutsa kududzirwa kwezvirongwa zviripo zvakanyorwa muC/C++ nePython kuMojo, pamwe chete kugadzira mapurojekiti akasanganiswa anosanganisa Python kodhi uye Mojo.

Iyo purojekiti yakagadzirirwa kusanganisa inowanikwa hardware zviwanikwa zve heterogeneous masisitimu mukuita macalculation. Semuyenzaniso, maGPU, nyanzvi yemuchina yekudzidza accelerators, uye processor yekuraira mavheti (SIMD) anogona kushandiswa kumhanya Mojo maapplication uye parallelize computations. Zvikonzero zvakapihwa zvekugadzira chikamu chakasiyana chemutauro wePython pane kujoinha basa riripo reCPython optimization zvinosanganisira kutarisisa kuunganidza, kubatanidzwa kwehurongwa hwehurongwa hwekugona, uye kushandiswa kweyakasiyana dhizaini yemukati inobvumira kodhi kumhanya paGPU uye dzakasiyana siyana. hardware accelerators. Nekudaro, ivo vanogadzira Mojo vanovavarira kuramba vachienderana neCPython zvakanyanya sezvinobvira.

Mojo inogona kushandiswa zvese mukududzira modhi uchishandisa JIT, uye yekubatanidza mumafaira anogona kuitiswa (AOT, kumberi-kwenguva). Iyo compiler ine yakavakirwa-mukati matekinoroji echizvino-otomatiki optimization, caching uye kugovera kuunganidzwa. Zvinyorwa zvinyorwa mumutauro weMojo zvinoshandurwa kuita yakaderera-level yepakati kodhi MLIR (Multi-Level Intermediate Representation), yakagadziridzwa nechirongwa cheLLVM uye ichipa humwe humwe hunyanzvi hwekugadzirisa magadzirirwo eiyo data flow graph. Iyo compiler inobvumidza iwe kushandisa akasiyana backends anotsigira MLIR kugadzira muchina kodhi.

Kushandisa mamwe mahardware masisitimu kumhanyisa kuverenga kunoita kuti zvikwanise kuita basa riri pamusoro peC/C ++ application panguva yekuverenga kwakanyanya. Semuyenzaniso, pakuyedza application yekugadzira seti yeMandelbrot, chishandiso chakaunganidzwa mumutauro weMojo pachakaiswa mugore reAWS (r7iz.metal-16xl) chave kukurumidza kakapetwa ka6 pane kuiswa muC++ (0.03 sec. vs. . .

Pakuwongorora mashandiro mumunda wekugadzirisa matambudziko ekudzidza muchina, iyo AI stack Modular Inference Engine, yakanyorwa mumutauro weMojo, ichienzaniswa nemhinduro yakavakirwa paraibhurari yeTensorFlow, yakakurumidza katatu pakugadzira modhi yemutauro pane system ine. Intel processor, 3 nguva nekukurumidza paunenge uchigadzira kuitiswa kweyekurudziro yechizvarwa modhi uye 6.4 nguva nekukurumidza kana uchishanda nemamodhi ekugadzirisa ruzivo rwekuona. Paunenge uchishandisa AMD processors, zvakawanikwa pakushandisa Mojo zvaive 2.1, 3.2 uye 5 nguva, uye kana uchishandisa ARM processors - 2.2, 5.3 uye 7.5 nguva, zvichiteerana. Iyo PyTorch-yakavakirwa mhinduro yakasarira kumashure kweMojo ne1.7, 1.4 uye 1.1 nguva paIntel CPUs, 1.5, 2.1 uye 1.2 nguva pa AMD CPU uye 1.5, 4 uye 4.3 nguva paARM CPU.

LLVM Musiki Inogadzira Mutauro Mutsva weMojo Programming

Mutauro unotsigira static typing uye yakaderera-level memory-yakachengeteka maficha anoyeuchidza Rust, akadai sereferensi yehupenyu hwekutevera uye yekukwereta cheki. Pamusoro pezvivakwa zvebasa rakachengeteka nemanongedzo, mutauro unopawo maficha ebasa rakaderera, semuenzaniso, kunanga kupinda mundangariro mune isina kuchengetedzeka modhi uchishandisa iyo Pointer mhando, kufonera yega SIMD mirairo, kana kuwana hardware ekuwedzera seTensorCores uye AMX. .

LLVM Musiki Inogadzira Mutauro Mutsva weMojo Programming

Kurerutsa kupatsanurwa kwekirasi uye yakagadziridzwa Python kodhi yemabasa ane akajeka mhando tsananguro kune ese akasiyana, zvinokurudzirwa kushandisa rakasiyana kiizwi "fn" pachinzvimbo che "def". Saizvozvo kumakirasi, kana iwe uchida kurongedza data mundangariro panguva yekubatanidza (semuC), unogona kushandisa iyo "struct" mhando panzvimbo ye "kirasi". Izvo zvakare zvinogoneka kungopinza mamodule mumitauro yeC / C ++, semuenzaniso, kupinza iyo cos basa kubva kuraibhurari yemasvomhu, unogona kutsanangura "kubva" math.h" import cos".

Source: opennet.ru

Voeg