LLVM ဖန်တီသသူသည် Mojo ပရိုဂရမ်သမင်သဘာသာစကာသအသစ်ကို ဖန်တီသသည်။

LLVM ၏တည်ထောင်သူနဟင့် ဗိသုကာချုပ် Chris Lattner သည် Swift ပရိုဂရမ်သမင်သဘာသာစကာသကိုဖန်တီသသူဖဌစ်ပဌီသ Tensorflow နဟင့် JAX ကဲ့သို့သော Google AI ပရောဂျက်မျာသ၏အကဌီသအကဲဟောင်သ Tim Davis သည် R&D အတလက်အသုံသပဌုရလလယ်ကူခဌင်သနဟင့် လျင်မဌန်သောပုံတူပုံစံဖဌင့်ပေါင်သစပ်ထာသသော Mojo programming language အသစ်ကိုမိတ်ဆက်ပေသခဲ့သည်။ စလမ်သဆောင်ရည်မဌင့် ထုတ်ကုန်မျာသအတလက် သင့်လျော်မဟု။ ပထမအချက်မဟာ Python ဘာသာစကာသ၏ ရင်သနဟီသပဌီသသာသ syntax ကိုအသုံသပဌုခဌင်သဖဌင့် ရရဟိပဌီသ ဒုတိယမဟာ စက်ကုဒ်မျာသစုစည်သနိုင်မဟု၊ ဘေသကင်သသောမဟတ်ဉာဏ်စီမံခန့်ခလဲမဟုအတလက် ယန္တရာသမျာသနဟင့် ဟာ့ဒ်ဝဲတလက်ချက်မဟုအရဟိန်မဌဟင့်ရန်အတလက် ကိရိယာမျာသအသုံသပဌုခဌင်သကဌောင့်ဖဌစ်သည်။

ပရောဂျက်သည် စက်သင်ယူမဟု ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် အသုံသပဌုရန် အာရုံစိုက်ထာသသော်လည်သ Python ဘာသာစကာသ၏ လုပ်ဆောင်နိုင်စလမ်သမျာသကို စနစ်ပရိုဂရမ်ရေသဆလဲခဌင်သဖဌင့် တိုသချဲ့ကာ လုပ်ဆောင်စရာမျာသစလာအတလက် သင့်လျော်သော ယေဘုယျရည်ရလယ်ချက်ဘာသာစကာသအဖဌစ် တင်ပဌထာသသည်။ ဥပမာအာသဖဌင့်၊ ဘာသာစကာသသည် စလမ်သဆောင်ရည်မဌင့်မာသသော ကလန်ပဌူတာစနစ်၊ ဒေတာလုပ်ဆောင်ခဌင်သနဟင့် အသလင်ပဌောင်သခဌင်သကဲ့သို့သော နယ်ပယ်မျာသနဟင့် သက်ဆိုင်ပါသည်။ Mojo ၏ စိတ်ဝင်စာသစရာကောင်သသည့်အင်္ဂါရပ်မဟာ ကုဒ်ဖိုင်မျာသအတလက် တိုသချဲ့မဟုအဖဌစ် အီမိုဂျီသင်္ကေတ "🔥" ကို သတ်မဟတ်နိုင်သည် (ဥပမာ၊ "helloworld.🔥")၊ စာသာသတိုသချဲ့မဟု ".mojo" တို့အပဌင်၊

လက်ရဟိတလင်၊ ဘာသာစကာသကို အကဌိတ်အနယ် ဖော်ဆောင်လျက်ရဟိပဌီသ စမ်သသပ်ရန်အတလက် အလန်လိုင်သအင်တာဖေ့စ်ကိုသာ ကမ်သလဟမ်သထာသသည်။ အပဌန်အလဟန်အကျိုသပဌုသောဝဘ်ပတ်ဝန်သကျင်၏လုပ်ဆောင်မဟုအပေါ် တုံ့ပဌန်ချက်ရရဟိပဌီသနောက် ဒေသတလင်သစနစ်မျာသတလင် လုပ်ဆောင်ရန် သီသခဌာသစုဝေသမဟုမျာသကို ထုတ်ဝေမည်ဟု ကတိပဌုပါသည်။ အတလင်သဗိသုကာ၏ ဒီဇိုင်သကို ပဌီသမဌောက်ပဌီသနောက်တလင် ပရောဂျက်နဟင့်သက်ဆိုင်သည့် ကလန်ပရိုဂရမ်၊ JIT နဟင့် အခဌာသတိုသတက်မဟုမျာသအတလက် အရင်သအမဌစ်ကုဒ်ကို ဖလင့်လဟစ်ရန် စီစဉ်ထာသသည် (တံခါသပိတ်နောက်ကလယ်ရဟိ လုပ်ငန်သခလင်ရဟေ့ပဌေသပုံစံသည် LLVM၊ Clang ၏ ကနညသအဆင့်နဟင့် ဆင်တူသည် နဟင့် Swift)။ Mojo ၏ syntax သည် Python ကိုအခဌေခံထာသပဌီသ အမျိုသအစာသစနစ်သည် C/C++ နဟင့်နီသစပ်သောကဌောင့်၊ C/C++ နဟင့် Python သို့ Mojo တလင်ရေသသာသထာသသောရဟိပဌီသသာသပရောဂျက်မျာသကိုဘာသာပဌန်ဆိုရာတလင်အဆင်ပဌေချောမလေ့စေမည့် toolkit တစ်ခုကို အနာဂတ်တလင်ရေသဆလဲရန်အစီအစဉ်မျာသရဟိပါသည်။ Python ကုဒ်။ နဟင့် Mojo ပေါင်သစပ်ထာသသော ပေါင်သစပ်ပရောဂျက်မျာသ။

ပရောဂျက်သည် တလက်ချက်မဟုမျာသတလင် စနစ်အတလင်သရရဟိနိုင်သည့် ကလဲပဌာသသောစနစ်မျာသ၏ ဟာ့ဒ်ဝဲအရင်သအမဌစ်မျာသပါ၀င်ရန် ဒီဇိုင်သထုတ်ထာသသည်။ ဥပမာအာသဖဌင့်၊ GPU မျာသ၊ အထူသပဌုစက်သင်ယူမဟုအရဟိန်မဌဟင့်စက်မျာသနဟင့် vector processing ညလဟန်ကဌာသချက်မျာသ (SIMDs) ကို Mojo အပလီကေသရဟင်သမျာသလည်ပတ်ရန်နဟင့် တလက်ချက်မဟုမျာသကို အပဌိုင်လုပ်ဆောင်ရန်အတလက် အသုံသပဌုနိုင်သည်။ ရဟိပဌီသသာသ CPython ၏ ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သလုပ်ငန်သတလင် ပါဝင်ခဌင်သထက် Python ဘာသာစကာသ၏ သီသခဌာသခလဲခလဲတစ်ခုကို တီထလင်ရခဌင်သအကဌောင်သရင်သမဟာ စုစည်သမဟုအာရုံစူသစိုက်မဟု၊ စနစ်ပရိုဂရမ်သမင်သစလမ်သဆောင်နိုင်မဟု ပေါင်သစပ်မဟုနဟင့် ကုဒ်ဖဌစ်ခလင့်ပဌုသည့် အခဌေခံကလဲပဌာသသော အတလင်သပိုင်သဗိသုကာကို အသုံသပဌုခဌင်သအဖဌစ် ကိုသကာသထာသသည်။ GPU မျာသနဟင့် ဟာ့ဒ်ဝဲ အရဟိန်မဌဟင့်စက်မျာသပေါ်တလင် လုပ်ဆောင်သည်။ တစ်ချိန်တည်သမဟာပင် Mojo ၏ developer မျာသသည် CPython နဟင့် အတတ်နိုင်ဆုံသ လိုက်ဖက်ညီစေရန် ရည်ရလယ်ထာသသည်။

Mojo ကို JIT ၏ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မုဒ်တလင် နဟင့် executable files မျာသ (AOT၊ အချိန်မတိုင်မီ) တလင် နဟစ်မျိုသလုံသအသုံသပဌုနိုင်ပါသည်။ စုစည်သမဟုတလင် အလိုအလျောက် ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သ၊ သိမ်သဆည်သခဌင်သနဟင့် ဖဌန့်ဝေစုစည်သခဌင်သအတလက် ခေတ်မီနည်သပညာမျာသပါရဟိသည်။ Mojo ဘာသာစကာသရဟိ အရင်သအမဌစ်စာသာသမျာသကို အဆင့်နိမ့်အလယ်အလတ်ကုဒ်အဖဌစ် MLIR (Multi-Level Intermediate Representation) ကို LLVM ပရောဂျက်မဟ ဖန်တီသပဌီသ ဒေတာစီသဆင်သမဟုဂရပ်ကို ပိုမိုကောင်သမလန်အောင်လုပ်ဆောင်ရန်အတလက် ထပ်လောင်သအင်္ဂါရပ်မျာသကို ပံ့ပိုသပေသပါသည်။ compiler သည် သင့်အာသ စက်ကုဒ်ထုတ်ပေသရန်အတလက် MLIR ကို ပံ့ပိုသပေသသည့် backend အမျိုသမျိုသကို အသုံသပဌုခလင့်ပေသသည်။

တလက်ချက်မဟုမျာသကို အရဟိန်မဌဟင့်ရန် နောက်ထပ် ဟာ့ဒ်ဝဲယန္တရာသမျာသကို အသုံသပဌုခဌင်သသည် C/C++ အပလီကေသရဟင်သမျာသထက် ပဌင်သထန်သော တလက်ချက်မဟုမျာသဖဌင့် စလမ်သဆောင်ရည်ကို ရရဟိစေပါသည်။ ဥပမာအာသဖဌင့်၊ Mandelbrot set တစ်ခုထုတ်လုပ်ရန် အက်ပလီကေသရဟင်သကို စမ်သသပ်သောအခါ၊ AWS cloud (r7iz.metal-16xl) တလင် လုပ်ဆောင်သောအခါ စုစည်သထာသသော Mojo အပလီကေသရဟင်သသည် C++ အကောင်အထည်ဖော်မဟုထက် 6 ဆ ပိုမဌန်သည် (0.03 စက္ကန့်နဟင့် 0.20 စက္ကန့် .) အပဌင် စတော့ CPython 35 (3.10.9 စက္ကန့် နဟင့် 0.03 စက္ကန့်) ကို အသုံသပဌုထာသသော Python အပလီကေသရဟင်သထက် အဆ 1027 ပိုမဌန်ပဌီသ PYPY (1500 စက္ကန့် နဟင့် 0.03 စက္ကန့်) ကို အသုံသပဌု၍ အဆ 46.1 ပိုမဌန်ပါသည်။

စက်သင်ယူမဟုပဌဿနာမျာသကိုဖဌေရဟင်သခဌင်သနယ်ပယ်ရဟိစလမ်သဆောင်ရည်ကိုအကဲဖဌတ်သည့်အခါ၊ Mojo ဘာသာစကာသဖဌင့်ရေသသာသထာသသော Modular Inference Engine AI stack သည် TensorFlow စာကဌည့်တိုက်ကိုအခဌေခံသည့်ဖဌေရဟင်သချက်နဟင့်နဟိုင်သယဟဉ်ပါက Intel ဖဌင့်စနစ်တစ်ခုတလင် ၃ ဆပိုမိုမဌန်ဆန်လာသည် ဘာသာစကာသမော်ဒယ်ကို လုပ်ဆောင်သည့်အခါ ပရိုဆက်ဆာ၊ အကဌံပဌုချက်မျိုသဆက်မော်ဒယ်ကို လုပ်ဆောင်သည့်အခါ 3 ဆ ပိုမဌန်ပဌီသ အမဌင်ဆိုင်ရာ အချက်အလက်မျာသကို လုပ်ဆောင်ရန်အတလက် မော်ဒယ်မျာသနဟင့် အလုပ်လုပ်သည့်အခါ 6.4 ဆ ပိုမဌန်ပါသည်။ AMD ပရိုဆက်ဆာမျာသကိုအသုံသပဌုသောအခါ၊ Mojo ကိုအသုံသပဌုသောအခါအမဌတ်သည် 2.1၊ 3.2 နဟင့် 5 ဆဖဌစ်ပဌီသ ARM ပရိုဆက်ဆာမျာသကိုအသုံသပဌုသည့်အခါ - 2.2၊ 5.3 နဟင့် 7.5 ဆ အသီသသီသရဟိသည်။ PyTorch-based ဖဌေရဟင်သချက်သည် Intel CPU တလင် 1.7၊ 1.4 နဟင့် 1.1 ဆ၊ AMD CPU တလင် 1.5၊ 2.1 နဟင့် 1.2 ဆနဟင့် ARM CPU တလင် 1.5, 4 နဟင့် 4.3 ဆတို့နောက်တလင် နောက်ကျကျန်နေပါသည်။

LLVM ဖန်တီသသူသည် Mojo ပရိုဂရမ်သမင်သဘာသာစကာသအသစ်ကို ဖန်တီသသည်။

ဘာသာစကာသသည် ပုံသေစာရိုက်ခဌင်သကို ပံ့ပိုသပေသပဌီသ အဆင့်နိမ့်မဟတ်ဉာဏ်ဘေသကင်သသော အင်္ဂါရပ်မျာသဖဌစ်သည့် ရည်ညလဟန်သတစ်သက်တာခဌေရာခံခဌင်သနဟင့် ပဌောင်သလဲနိုင်သော ငလေချေသခဌင်သစစ်ဆေသခဌင်သ (ချေသယူစစ်ဆေသသည့်ကိရိယာ) ကဲ့သို့သော Rust အင်္ဂါရပ်မျာသကို အမဟတ်ရစေသည်။ pointers မျာသဖဌင့် လုံခဌုံသောလုပ်ဆောင်မဟုမျာသအတလက် နည်သလမ်သမျာသအပဌင်၊ အဆင့်နိမ့်အလုပ်အတလက် ဘာသာစကာသကိုလည်သ ပံ့ပိုသပေသသည်၊ ဥပမာ၊ Pointer အမျိုသအစာသကို အသုံသပဌု၍ မမ်မိုရီကို မလုံခဌုံသောမုဒ်တလင် တိုက်ရိုက်ဝင်ရောက်နိုင်သည်၊ တစ်ညသချင်သစီ SIMD ညလဟန်ကဌာသချက်မျာသကို ခေါ်ဆိုပါ သို့မဟုတ် ထိုကဲ့သို့သော ဟာ့ဒ်ဝဲတိုသချဲ့မဟုမျာသကို ဝင်ရောက်ကဌည့်ရဟုနိုင်သည် TensorCore နဟင့် AMX အဖဌစ်။

LLVM ဖန်တီသသူသည် Mojo ပရိုဂရမ်သမင်သဘာသာစကာသအသစ်ကို ဖန်တီသသည်။

ကိန်သရဟင်အာသလုံသအတလက် တိကျပဌတ်သာသသော အမျိုသအစာသ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသရဟိသည့် လုပ်ဆောင်ချက်မျာသအတလက် ဂန္ထဝင်နဟင့် ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ထာသသော Python ကုဒ်ကို ခလဲထုတ်ခဌင်သအာသ ရိုသရဟင်သစေရန်၊ "def" အစာသ သီသခဌာသသော့ချက်စာလုံသ "fn" ကို အသုံသပဌုရန် အဆိုပဌုထာသသည်။ အတန်သမျာသအတလက် အလာသတူ၊ အကယ်၍ သင်သည် compile time (C တလင်ကဲ့သို့) တလင် ကိန်သဂဏာန်သအချက်အလက်မျာသကို ကိန်သသေထာသရန် လိုအပ်ပါက "class" အစာသ "struct" အမျိုသအစာသကို သုံသနိုင်သည်။ C/C++ ဘာသာစကာသမျာသဖဌင့် မော်ဂျူသမျာသကို ရိုသရဟင်သစလာ တင်သလင်သနိုင်သည်၊ ဥပမာအာသဖဌင့်၊ cos လုပ်ဆောင်ချက်ကို သင်္ချာစာကဌည့်တိုက်မဟ တင်သလင်သရန် "math.h" မဟ import cos ကို သတ်မဟတ်နိုင်သည်။

source: opennet.ru

မဟတ်ချက် Add