LLVM ပရောဂျက်သည် CPU၊ GPU၊ FPGA နှင့် accelerators အတွက် compiler တစ်ခုဖြစ်သော HPVM 1.0 ကို မိတ်ဆက်ပေးခဲ့သည်။

LLVM ပရောဂျက်၏ developer များသည် HPVM 1.0 (Heterogeneous Parallel Virtual Machine) compiler ကို ထုတ်ဝေခဲ့ပြီး၊ ကွဲပြားသောစနစ်များအတွက် ပရိုဂရမ်များကို ရိုးရှင်းလွယ်ကူစေရန်နှင့် CPUs၊ GPUs၊ FPGAs နှင့် domain-specific hardware accelerators (ပံ့ပိုးမှုများအတွက် FGPAs နှင့် accelerators 1.0 ထုတ်ဝေမှုတွင် မပါဝင်ပါ။ ပရောဂျက်ကုဒ်ကို Apache 2.0 လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

HPVM ၏ အဓိက အယူအဆမှာ GPU များ၊ vector ညွှန်ကြားချက်များ၊ multi-core ပရိုဆက်ဆာများ၊ FPGAs နှင့် အပြိုင်ကွန်ပြူတာများကို ပံ့ပိုးပေးသည့် ဟာ့ဒ်ဝဲလ် အမျိုးအစား အမျိုးမျိုးကို အသုံးပြု၍ ပေါင်းစပ်လုပ်ဆောင်ရာတွင် အသုံးပြုနိုင်သည့် အပြိုင်လုပ်ဆောင်နိုင်သော ပရိုဂရမ်များကို စုစည်းဖော်ပြရန်ဖြစ်သည်။ အမျိုးမျိုးသော အထူးပြု အရှိန်မြှင့် ချစ်ပ်များ။ အခြားစနစ်များနှင့်မတူဘဲ၊ HPVM သည် ကွဲပြားသော ကွန်ပြူတာများကို စုစည်းရန်အတွက် စွမ်းရည်သုံးရပ်- ဘာသာစကား- နှင့် ဟာ့ဒ်ဝဲ-လွတ်လပ်သော အလယ်အလတ်ကိုယ်စားပြုမှု၊ virtual instruction set architecture (ISA) နှင့် runtime scheduling တို့ကို ပေါင်းစပ်ရန် ကြိုးစားခဲ့သည်။

HPVM ၏ ပစ်မှတ်-အမှီအခိုကင်းသော အလယ်အလတ်ကိုယ်စားပြုမှု (IR) သည် LLVM 9.0 အလယ်အလတ် ညွှန်ကြားချက် ကိုယ်စားပြုမှုတွင် တည်ဆောက်ပြီး အလုပ်၊ ဒေတာနှင့် ပိုက်လိုင်းအဆင့် အပြိုင်ဖမ်းယူရန် အထက်အောက် ဒေတာစီးဆင်းမှု ဂရပ်ဖြင့် ၎င်းကို တိုးချဲ့ထားသည်။ HPVM အလယ်အလတ်ကိုယ်စားပြုမှုတွင် vector ညွှန်ကြားချက်များနှင့် မျှဝေထားသော memory ပါ၀င်ပါသည်။ အလယ်အလတ်ကိုယ်စားပြုမှုကို အသုံးပြုခြင်း၏ အဓိကရည်ရွယ်ချက်မှာ ထိရောက်သောကုဒ်ထုတ်လုပ်ခြင်းနှင့် ကွဲပြားသောစနစ်များအတွက် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းဖြစ်ပါသည်။

virtual instruction set ဗိသုကာ (ISA) သည် မတူညီသော အပြိုင်ကွန်ပြူတာ ဟာ့ဒ်ဝဲ အမျိုးအစားများကြား သယ်ဆောင်ရလွယ်ကူစေပြီး ကွဲပြားသော စနစ်များ၏ မတူညီသော ဒြပ်စင်များကို အသုံးပြုသည့်အခါ စွမ်းဆောင်ရည် မဆုံးရှုံးစေရန် ပြုလုပ်ပေးပါသည်။ CPUs, GPUs, FPGAs, နှင့် accelerator အမျိုးမျိုးကို အသုံးပြု၍ လုပ်ဆောင်နိုင်သော universal executable program code ကို ပေးပို့ရန်အတွက် Virtual ISA ကို အသုံးပြုနိုင်သည်။

လက်ရှိဖွံ့ဖြိုးတိုးတက်မှုအဆင့်တွင်၊ HPVM သည် NVIDIA GPUs (cuDNN နှင့် OpenCL)၊ Intel AVX vector ညွှန်ကြားချက်များနှင့် multi-core x86 CPU များကို အသုံးပြု၍ လုပ်ဆောင်ရန်အတွက် virtual ISA ကိုအသုံးပြု၍ သတ်မှတ်ထားသော application node များကို ဘာသာပြန်ဆိုနိုင်သော ကုဒ်ဂျင်နရေတာများကို ပေးပါသည်။ runtime တွင်၊ HPVM သည် လိုက်လျောညီထွေရှိသော တွက်ချက်မှုဆိုင်ရာ လုပ်ငန်းစဉ်ဇယားရေးဆွဲခြင်းမူဝါဒများကို ကျင့်သုံးသည်၊ ပရိုဂရမ်အချက်အလက် (ဂရပ်ပုံတည်ဆောက်ပုံ) ကိုအခြေခံပြီး စနစ်အတွင်းရှိရရှိနိုင်သည့် ပစ်မှတ်ကွန်ပြူတာစက်များပေါ်တွင် အကောင်အထည်ဖော်ရန်အတွက် တစ်ဦးချင်းပရိုဂရမ် node များကို စုစည်းခြင်းအားဖြင့် နှစ်မျိုးလုံးလုပ်ဆောင်ခဲ့သည်။

HPVM ကိုအသုံးပြုခြင်းသည် ကုန်ထုတ်စွမ်းအားကို သိသာထင်ရှားစွာ တိုးမြင့်စေနိုင်သည်ဟု မှတ်သားရပါသည်။ HPVM ဘာသာပြန်သူများ၏စွမ်းဆောင်ရည်သည် GPUs နှင့် vector computing စက်ပစ္စည်းများအတွက် လက်ဖြင့်ရေးထားသော OpenCL ကုဒ်နှင့် နှိုင်းယှဉ်နိုင်သည်။

ပထမဆုံး အစမ်းကြည့်ရှုသည့် ထုတ်ဝေမှုနှင့် နှိုင်းယှဉ်ပါက HPVM 1.0 တွင် linear algebra tensor operations၊ Pytorch နှင့် Keras အတွက် frontends၊ convolution operator approximations နှင့် approximation tuning framework သည် သီးခြား tensor operations အတွက် အကောင်းဆုံး အနီးစပ်ဆုံး အနီးစပ်ဆုံးများကို အလိုအလျောက် ရွေးချယ်ပြီး အကောင်းဆုံးသော စွမ်းဆောင်ရည်ကို ပေးသည့် configuration ကို ရွေးချယ်ပေးပါသည်။

source: opennet.ru

မှတ်ချက် Add