OpenGL၊ Vulkan နှင့် OpenCL မိသားစု သတ်မှတ်ချက်များကို ပြုစုပျိုးထောင်ရန် တာဝန်ရှိသော Khronos စိုးရိမ်မှု၊
လက်ရှိအဆင့်တွင်၊ ၎င်းမှတစ်ဆင့်ပေးပို့သော အကြံပြုချက်အပေါ်အခြေခံ၍ ပြန်လည်ပြင်ဆင်မှုဖြစ်နိုင်ခြေကို ရည်ညွှန်းသည့် ယာယီအခြေနေကို သတ်မှတ်ပေးထားပါသည်။
အသိသာဆုံး
- ယခုအခါ OpenCL 3.0 API သည် ဗားရှင်းတစ်ခုစီအတွက် သီးခြားသတ်မှတ်ချက်များကို မပေးဘဲ OpenCL (1.2၊ 2.x) ၏ ဗားရှင်းအားလုံးကို အကျုံးဝင်ပါသည်။ OpenCL 3.0 သည် OpenCL 1.2/2.X ၏ monolithic သဘောသဘာဝကို ပိတ်ဆို့ခြင်းမရှိဘဲ ရွေးချယ်မှုပုံစံဖြင့် အလွှာလိုက်ပြုလုပ်မည့် ထပ်လောင်းသတ်မှတ်ချက်များ ပေါင်းစပ်ခြင်းဖြင့် အဓိကလုပ်ဆောင်နိုင်စွမ်းကို တိုးချဲ့နိုင်စေပါသည်။
- OpenCL 1.2 နှင့် ကိုက်ညီသော လုပ်ဆောင်နိုင်စွမ်းများကိုသာ မဖြစ်မနေ ကြေညာထားပြီး OpenCL 2.x သတ်မှတ်ချက်များတွင် အဆိုပြုထားသည့် အင်္ဂါရပ်အားလုံးကို ချန်လှပ်ထားသည်ဟု ခွဲခြားထားသည်။ ဤချဉ်းကပ်မှုသည် OpenCL 3.0 နှင့် သဟဇာတဖြစ်သော စိတ်ကြိုက်အကောင်အထည်ဖော်မှုများကို ဖန်တီးရန် ပိုမိုလွယ်ကူစေပြီး OpenCL 3.0 အသုံးပြုနိုင်သည့် စက်ပစ္စည်းအကွာအဝေးကို ချဲ့ထွင်မည်ဖြစ်သည်။ ဥပမာအားဖြင့်၊ ထုတ်လုပ်သူများသည် သီးခြား OpenCL 3.0.x အင်္ဂါရပ်များကို အကောင်အထည်မဖော်ဘဲ OpenCL 2 ပံ့ပိုးမှုကို အကောင်အထည်ဖော်နိုင်သည်။ ရွေးချယ်နိုင်သော ဘာသာစကားအင်္ဂါရပ်များကို ဝင်ရောက်ကြည့်ရှုရန်၊ OpenCL 3.0 သည် သင့်အား API အစိတ်အပိုင်းတစ်ခုချင်းစီ၏ ပံ့ပိုးကူညီမှုအပြင် အထူးမက်ခရိုများကို အကဲဖြတ်နိုင်စေမည့် စမ်းသပ်မေးမြန်းမှုစနစ်တစ်ခုကို ထည့်သွင်းထားသည်။
- ယခင်ထွက်ရှိထားသော သတ်မှတ်ချက်များနှင့် ပေါင်းစည်းခြင်းသည် အပလီကေးရှင်းများကို OpenCL 3.0 သို့ ပြောင်းရွှေ့ရန် ပိုမိုလွယ်ကူစေသည်။ OpenCL 1.2 အပလီကေးရှင်းများသည် ပြုပြင်မွမ်းမံခြင်းမရှိဘဲ OpenCL 3.0 ကို ပံ့ပိုးသည့် စက်ပစ္စည်းများတွင် လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။ OpenCL 2.x အပလီကေးရှင်းများသည် OpenCL 3.0 ပတ်ဝန်းကျင်တွင် လိုအပ်သောလုပ်ဆောင်နိုင်စွမ်းကို ပံ့ပိုးပေးသရွေ့ (အနာဂတ်သယ်ဆောင်ရလွယ်ကူစေရန်၊ OpenCL 2.x အက်ပ်လီကေးရှင်းများသည် OpenCL 2.x ဝန်ဆောင်မှုများအတွက် ပံ့ပိုးမှုအကဲဖြတ်ရန် စမ်းသပ်မေးမြန်းချက်များကို ထည့်သွင်းရန် အကြံပြုထားသည်။ အသုံးပြုနေသည်)။ OpenCL အကောင်အထည်ဖော်မှုများပါရှိသော Driver developer များသည် ၎င်းတို့၏ထုတ်ကုန်များကို OpenCL 3.0 သို့ လွယ်ကူစွာ အဆင့်မြှင့်နိုင်ပြီး အချို့သော API ခေါ်ဆိုမှုများအတွက် query processing ကိုသာ ပေါင်းထည့်ကာ အချိန်ကြာလာသည်နှင့်အမျှ လုပ်ဆောင်နိုင်စွမ်းကို တဖြည်းဖြည်း တိုးမြှင့်နိုင်သည်။
- OpenCL 3.0 သတ်မှတ်ချက်သည် Vulkan API မှလည်းအသုံးပြုသည့် SPIR-V ယေဘုယျအလယ်အလတ်ကိုယ်စားပြုမှု၏ပတ်ဝန်းကျင်၊ တိုးချဲ့မှုများနှင့် သတ်မှတ်ချက်များနှင့် ကိုက်ညီပါသည်။ SPIR-V 1.3 သတ်မှတ်ချက်အတွက် ပံ့ပိုးမှုကို စိတ်ကြိုက်ရွေးချယ်နိုင်သောအင်္ဂါရပ်အဖြစ် core OpenCL 3.0 တွင် ထည့်သွင်းထားသည်။ အလယ်အလတ်ကိုယ်စားပြုမှုကိုအသုံးပြုခြင်းအားဖြင့်
SPIR-V ကွန်ပြူတာ cores များအတွက် အုပ်စုခွဲများ နှင့် လုပ်ဆောင်ချက်များအတွက် ပံ့ပိုးမှု ကို ထည့်သွင်းထားပါသည်။
- တိုက်ရိုက်မမ်မိုရီဝင်ရောက်ခွင့်ရှိသော DSP ကဲ့သို့သော ချစ်ပ်များတွင် ပံ့ပိုးပေးထားသည့် အပြိုင်အဆိုင် DMA လုပ်ဆောင်ချက်များ (Asynchronous DMA) လုပ်ဆောင်ခြင်းအတွက် တိုးချဲ့မှုတစ်ခုအတွက် ပံ့ပိုးမှု ထပ်ထည့်ထားသည်။ Asynchronous DMA သည် တွက်ချက်မှုများ သို့မဟုတ် အခြားဒေတာလွှဲပြောင်းခြင်းလုပ်ဆောင်မှုများနှင့်အပြိုင် ကမ္ဘာလုံးဆိုင်ရာနှင့် ဒေသဆိုင်ရာမှတ်ဉာဏ်ကြားတွင် ဒေတာလွှဲပြောင်းရန် DMA အရောင်းအ၀ယ်များကို ဖြစ်နိုင်ချေရှိစေသည်။
- C Parallel Programming Extensions သတ်မှတ်ချက်ကို အဆင့်မြှင့်တင်ပြီးပါပြီ။
ဗားရှင်း ၁၁ နှင့် C++ အတွက် OpenCL language extensions များကို "C++ for OpenCL" ပရောဂျက်၏မျက်နှာသာဖြင့် ရပ်ဆိုင်းခဲ့သည်။ OpenCL အတွက် C++ သည် Clang/LLVM နှင့် အခြေခံထားသော compiler တစ်ခုဖြစ်သည်။ရုပ်သံလွှင့်ခြင်း။ C++ နှင့် OpenCL C kernels များသည် SPIR-V အလယ်အလတ်ကိုယ်စားပြုမှု သို့မဟုတ် အဆင့်နိမ့်စက်ကုဒ်အဖြစ်သို့။ ထုတ်လွှင့်ခြင်းမှတစ်ဆင့်၊ SPIR-V သည် အပြိုင်အပလီကေးရှင်းများဖန်တီးမှုကို ရိုးရှင်းလွယ်ကူစေသည့် SYCL template စာကြည့်တိုက်ကို အသုံးပြု၍ C++ အပလီကေးရှင်းများစုဝေးမှုကိုလည်း စီစဉ်ပေးပါသည်။ - Vulkan API မှတဆင့် OpenCL ကိုထုတ်လွှင့်ရန်အတွက် compiler တစ်ခုကို အဆိုပြုထားသည်။
clspv OpenCL kernel များကို Vulkan SPIR-V ကိုယ်စားပြုမှုနှင့် အလွှာတစ်ခုသို့ ပြောင်းပေးသည်။clvk Vulkan ၏ထိပ်တွင်အလုပ်လုပ်ရန် OpenCL API ကိုဖွင့်ရန်။
source: opennet.ru