DeepMind သည် CPython အတွက် JIT compiler အကောင်အထည်ဖော်မှုပါရှိသော open sourced S6 စာကြည့်တိုက်

ဥာဏ်ရည်တုနယ်ပယ်တွင် ၎င်း၏တိုးတက်မှုများအတွက် လူသိများသော DeepMind သည် Python ဘာသာစကားအတွက် JIT compiler တစ်ခုကို ဖန်တီးထားသည့် S6 ပရောဂျက်၏ အရင်းအမြစ်ကုဒ်ကို ဖွင့်လှစ်ခဲ့သည်။ ပရောဂျက်သည် CPython နှင့် အပြည့်အဝလိုက်ဖက်မှုရှိစေရန်နှင့် စကားပြန်ကုဒ်ကို ပြုပြင်မွမ်းမံရန် မလိုအပ်ဘဲ စံ CPython နှင့် ပေါင်းစပ်ထားသည့် တိုးချဲ့စာကြည့်တိုက်အဖြစ် ဒီဇိုင်းထုတ်ထားသောကြောင့် စိတ်ဝင်စားစရာကောင်းပါသည်။ အဆိုပါပရောဂျက်ကို 2019 ခုနှစ်ကတည်းက ရေးဆွဲခဲ့သော်လည်း ကံမကောင်းစွာဖြင့် ၎င်းကို ရပ်ဆိုင်းခဲ့ပြီး မဖွံ့ဖြိုးတော့ပါ။ ဖန်တီးထားသော တိုးတက်မှုများသည် Python ကို ပိုမိုကောင်းမွန်စေရန်အတွက် အသုံးဝင်နိုင်သောကြောင့်၊ ၎င်းသည် ကုဒ်ကိုဖွင့်ရန် ဆုံးဖြတ်ခဲ့သည်။ JIT compiler ကုဒ်ကို C++ ဖြင့်ရေးသားထားပြီး CPython 3.7 ကိုအခြေခံထားသည်။ Apache 2.0 လိုင်စင်အောက်တွင် open source ရှိသည်။

၎င်းကိုဖြေရှင်းနိုင်သည့်အလုပ်များတွင် S6 အတွက် Python သည် JavaScript အတွက် V8 အင်ဂျင်နှင့်နှိုင်းယှဉ်သည်။ စာကြည့်တိုက်သည် အကောင်အထည်ဖော်မှုကို အရှိန်မြှင့်ရန် JIT compilation ကိုအသုံးပြုသည့် ၎င်း၏ကိုယ်ပိုင်အကောင်အထည်ဖော်မှုဖြင့် လက်ရှိ bytecode စကားပြန်ကိုင်တွယ်သူ ceval.c ကို အစားထိုးသည်။ S6 သည် လက်ရှိလုပ်ဆောင်ချက်ကို စုစည်းပြီးဖြစ်မဖြစ် စစ်ဆေးပြီး အကယ်၍ စုစည်းထားသောကုဒ်ကို လုပ်ဆောင်ပြီး မဟုတ်ပါက CPython စကားပြန်နှင့် ဆင်တူသော bytecode ဘာသာပြန်မုဒ်တွင် လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပါသည်။ အဓိပ္ပါယ်ပြန်ဆိုနေစဉ်တွင်၊ လုပ်ဆောင်နေသောလုပ်ဆောင်ချက်နှင့် ဆက်စပ်လျက်ရှိသော ခေါ်ဆိုမှုများ အရေအတွက်ကို ရေတွက်ပါသည်။ သတ်မှတ်ထားသော မှတ်တိုင်တစ်ခုသို့ရောက်ရှိပြီးနောက်၊ မကြာခဏလုပ်ဆောင်သောကုဒ်ကို အရှိန်မြှင့်ရန် စုစည်းမှုလုပ်ငန်းစဉ်ကို စတင်သည်။ စုစည်းမှုကို asmjit စာကြည့်တိုက်ကို အသုံးပြု၍ အကောင်းဆုံးဖြစ်အောင်ပြုလုပ်ပြီးနောက်၊ ပစ်မှတ်စနစ်၏ စက်ညွှန်ကြားချက်များအဖြစ်သို့ ပြောင်းလဲသွားသည့် အလယ်အလတ်ပြင်းထန်ဂျစ်ကိုယ်စားပြုမှုအဖြစ် လုပ်ဆောင်သည်။

အလုပ်ဝန်၏သဘောသဘာဝပေါ် မူတည်၍ အကောင်းဆုံးအခြေအနေများအောက်တွင် S6 သည် ပုံမှန် CPython ထက် 9.5 ဆအထိ စမ်းသပ်လုပ်ဆောင်မှုအမြန်နှုန်း တိုးလာမှုကို သရုပ်ပြသည်။ Richards test suite ၏ အကြိမ် 100 ထပ်ခါထပ်ခါ လုပ်ဆောင်သောအခါ၊ 7x speedup ကို တွေ့ရှိပြီး Raytrace test ကို သင်္ချာတွက်ချက်မှု အများအပြားပါဝင်သည့် အခါတွင် 3-4.5x speedup ကို တွေ့ရပါသည်။

S6 ကို အသုံးပြု၍ အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ရန် ခက်ခဲသော အလုပ်များထဲတွင် C API ဖြစ်သည့် NumPy ကို အသုံးပြုသည့် ပရောဂျက်များ နှင့် တန်ဖိုးများစွာ အမျိုးအစားများကို စစ်ဆေးရန် လိုအပ်သည့် လုပ်ငန်းများနှင့် ပတ်သက်သည့် လုပ်ဆောင်မှုများ ပါဝင်သည်။ S6 ၏ကိုယ်ပိုင်မွမ်းမံထားသော Python စကားပြန်ကိုအသုံးပြုခြင်းကြောင့် အရင်းအမြစ်-အလေးပေးလုပ်ဆောင်မှုများ၏ တစ်ခုတည်းသောခေါ်ဆိုမှုများအတွက်လည်း စွမ်းဆောင်ရည်နိမ့်ကျသည် (ဖွံ့ဖြိုးတိုးတက်မှုသည် အဓိပ္ပာယ်ပြန်ဆိုခြင်းမုဒ်၏ အကောင်းဆုံးအဆင့်သို့မရောက်သေးပါ)။ ဥပမာအားဖြင့်၊ ကြီးမားသော array/tuples အစုံအလင်ကို ထုပ်ပိုးထားသည့် Unpack Sequence test တွင် ခေါ်ဆိုမှုတစ်ခုတွင် 5 ကြိမ်အထိ နှေးကွေးသွားကာ စက်ဘီးစီးခေါ်ဆိုခြင်းဖြင့် စွမ်းဆောင်ရည်သည် CPython မှ 0.97 ဖြစ်သည်။

source: opennet.ru

မှတ်ချက် Add