HPVM 2.0၊ CPU၊ GPU၊ FPGA နှင့် ဟာ့ဒ်ဝဲ အရှိန်မြှင့်စက်များအတွက် စုစည်းမှု ထုတ်ဝေသည်

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

အပြိုင်စနစ်များ (CPU cores၊ vector လမ်းညွှန်ချက်များ၊ GPU စသည်ဖြင့်)၊ မတူညီသော ညွှန်ကြားချက်အစုံများနှင့် မတူညီသော memory hierarchies ကွဲပြားသော မော်ဒယ်များကို အသုံးပြုသည့် တူညီသောစနစ်တွင် အစိတ်အပိုင်းများရှိနေခြင်းကြောင့် ကွဲပြားသောအပြိုင်စနစ်များအတွက် ပရိုဂရမ်ရေးဆွဲခြင်းသည် ရှုပ်ထွေးပါသည်။ စနစ်တစ်ခုစီသည် ယင်းအစိတ်အပိုင်းများ၏ ကိုယ်ပိုင်ပေါင်းစပ်မှုကို အသုံးပြုသည်။ HPVM ပရောဂျက်၏ အဓိက အယူအဆမှာ GPUs၊ vector ညွှန်ကြားချက်များ၊ multi-core ပရိုဆက်ဆာများ၊ FPGAs နှင့် အပြိုင်ကွန်ပြူတာများကို ပံ့ပိုးပေးသည့် ဟာ့ဒ်ဝဲလ် အမျိုးအစား အမျိုးမျိုးအတွက် အသုံးပြုနိုင်သည့် အပြိုင်လုပ်ဆောင်သည့် ပရိုဂရမ်များကို စုစည်းထားသည့် ကိုယ်စားပြုမှုကို အသုံးပြုရန်ဖြစ်သည်။ အမျိုးမျိုးသော အထူးပြု အရှိန်မြှင့် ချစ်ပ်များ။

အခြားစနစ်များနှင့်မတူဘဲ၊ HPVM သည် ကွဲပြားသော ကွန်ပြူတာစနစ်ကို စုစည်းရန်အတွက် စွမ်းရည်သုံးရပ်ဖြစ်သည့် ပရိုဂရမ်းမင်းဘာသာစကားနှင့် ဟာ့ဒ်ဝဲ-လွတ်လပ်သော အလယ်အလတ်ကိုယ်စားပြုမှု (IR)၊ အတုအယောင် ညွှန်ကြားချက်အစုံဗိသုကာ (V-ISA) နှင့် အပြေးအချိန်ဇယားရေးဆွဲခြင်း-

  • HPVM အလယ်အလတ်ကိုယ်စားပြုမှုသည် လုပ်ငန်းတာဝန်၊ ဒေတာနှင့် ပိုက်လိုင်းအဆင့်များတွင် အပြိုင်ဖမ်းယူရန် အထက်အောက်ဒေတာစီးဆင်းမှုဂရပ်ကိုအသုံးပြုခြင်းဖြင့် LLVM အလယ်အလတ်ကိုယ်စားပြုဖော်ပြမှုကို တိုးချဲ့ပေးသည်။ HPVM အလယ်အလတ်ကိုယ်စားပြုမှုတွင် vector ညွှန်ကြားချက်များနှင့် မျှဝေထားသော မှတ်ဉာဏ်လည်း ပါဝင်သည်။ အလယ်အလတ်ကိုယ်စားပြုမှုကို အသုံးပြုခြင်း၏ အဓိကရည်ရွယ်ချက်မှာ ထိရောက်သောကုဒ်ထုတ်လုပ်ခြင်းနှင့် ကွဲပြားသောစနစ်များအတွက် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းဖြစ်ပါသည်။
  • Virtual Instruction Set Architecture (V-ISA) သည် အဆင့်နိမ့် ဟာ့ဒ်ဝဲ အင်္ဂါရပ်များကို သရုပ်ဖော်ပြီး အခြေခံ အပြိုင်စံနမူနာ—ဒေတာစီးဆင်းမှု ဂရပ်ကို အသုံးပြု၍ မျဉ်းပြိုင်နှင့် မှတ်ဉာဏ်ဗိသုကာ ပုံစံအမျိုးမျိုးကို ပေါင်းစပ်ထားသည်။ V-ISA သည် သင့်အား အပြိုင်ကွန်ပြူတာအတွက် မတူညီသော စက်ပစ္စည်းအမျိုးအစားများကြား သယ်ဆောင်ရလွယ်ကူမှုကို ရရှိစေပြီး ကွဲပြားသောစနစ်များ၏ မတူညီသောဒြပ်စင်များကို အသုံးပြုသည့်အခါ စွမ်းဆောင်ရည်မဆုံးရှုံးစေရန် စွမ်းဆောင်နိုင်စေသည်။ CPUs, GPUs, FPGAs, နှင့် accelerator အမျိုးမျိုးကို အသုံးပြု၍ လုပ်ဆောင်နိုင်သော universal executable program code ကို ပေးပို့ရန်အတွက် Virtual ISA ကို အသုံးပြုနိုင်သည်။
  • ကွန်ပြူတာလုပ်ငန်းစဉ်အတွက် လိုက်လျောညီထွေရှိသော အချိန်ဇယားဆွဲခြင်းမူဝါဒများကို runtime တွင်ကျင့်သုံးပြီး ပရိုဂရမ် (ဂရပ်ပုံတည်ဆောက်ပုံ) နှင့် စနစ်အတွင်းရှိရရှိနိုင်သည့်ပစ်မှတ်ကွန်ပြူတာစက်ပစ္စည်းများတွင် အကောင်အထည်ဖော်ရန်အတွက် တစ်ဦးချင်းပရိုဂရမ် node များစုစည်းမှုမှတစ်ဆင့် အကောင်အထည်ဖော်ဆောင်ရွက်ပါသည်။

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

HPVM 2.0 ၏ အဓိက တီထွင်ဆန်းသစ်မှုများ-

  • HPVM တွင် စုစည်းမှုအတွက် C/C++ တွင် အပြိုင်အပလီကုဒ်များကို ရိုးရှင်းလွယ်ကူစေမည့် Hetero-C++ ဘာသာစကား ရှေ့တန်းကို အဆိုပြုထားသည်။ Hetero-C++ သည် HPVM thread graphs များနှင့် မြေပုံပြုလုပ်သည့် ဒေတာအဆင့် အပြိုင်နှင့် အထက်အောက် လုပ်ဆောင်စရာများအတွက် တိုးချဲ့မှုများကို သတ်မှတ်သည်။
  • Intel FPGAs တွင် code execution အတွက် ပံ့ပိုးမှုပေးရန် FPGA backend ကို ထည့်သွင်းထားပါသည်။ လုပ်ဆောင်ချက်ကို စုစည်းရန်အတွက် OpenCL အတွက် Intel FPGA SDK ကို အသုံးပြုထားသည်။
  • ပေးထားသည့် ဟာ့ဒ်ဝဲပလပ်ဖောင်းအတွက် အလိုအလျောက်ချိန်ညှိခြင်းအက်ပ်လီကေးရှင်းများအတွက် ပိတ်ဆို့မှုများကို ခွဲခြားသတ်မှတ်ခြင်းဆိုင်ရာ စုစည်းမှု ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှုများနှင့် ယန္တရားများ ပါဝင်သော DSE (Design Space Exploration) မူဘောင်ကို ထည့်သွင်းထားပါသည်။ မူဘောင်တွင် Intel မှ FPGAs အတွက် အဆင်သင့်လုပ်ထားသော စွမ်းဆောင်ရည်ပုံစံတစ်ခုပါရှိပြီး HPVM ပံ့ပိုးပေးသည့် မည်သည့်စက်ပစ္စည်းများအတွက်မဆို ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်အတွက် သင့်ကိုယ်ပိုင်ပရိုဆက်ဆာများကို ချိတ်ဆက်နိုင်စေပါသည်။ ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းများကို HPVM နှင့် LLVM dataflow ဂရပ်အဆင့်နှစ်ခုလုံးတွင် အသုံးချနိုင်သည်။
  • LLVM အစိတ်အပိုင်းများကို ဗားရှင်း 13.0 သို့ အပ်ဒိတ်လုပ်ထားသည်။
  • ကုဒ်အခြေခံ၊ စာကြည့်တိုက်များနှင့် အသုံးဝင်မှုများကို သွားလာရလွယ်ကူစေရန်အတွက် ကုဒ်ကို ပြန်လည်ဖွဲ့စည်းထားပါသည်။
  • စမ်းသပ်ခြင်းအခြေခံအဆောက်အအုံကို မြှင့်တင်ထားပြီး၊ HPVM အစိတ်အပိုင်းအမျိုးမျိုးအတွက် စမ်းသပ်မှုအသစ်များကို ထည့်သွင်းထားသည်။

source: opennet.ru

မှတ်ချက် Add