Прадстаўлена спецыфікацыя OpenCL 3.0

Канцэрн Khronos, які адказвае за распрацоўку спецыфікацый сямейства OpenGL, Vulkan і OpenCL, абвясціў аб завяршэнні распрацоўкі спецыфікацый OpenCL 3.0, вызначальных API і пашырэнні мовы З для арганізацыі крос-платформавых раўналежных вылічэнняў з выкарыстаннем шмат'ядравых CPU, GPU, FPGA, DSP і іншых спецыялізаваных чыпаў, ад тых, што ўжываюцца ў суперкампутарах і хмарных серверах, да чыпаў, якія можна сустрэць у мабільных прыладах і ўбудаванай тэхніцы. Стандарт OpenCL цалкам адчынены і не патрабуе ліцэнзійных адлічэнняў. У працы над стандартам прынялі ўдзел такія кампаніі, як IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments і Toshiba.

На бягучай стадыі спецыфікацыі прысвоены статус папярэдняй (provisional), што мае на ўвазе магчымасць дапрацоўкі на аснове водгукаў, адпраўленых праз GitHub. Пасля таго як заўвагі будуць улічаны, спецыфікацыя атрымае статус фінальнай і будзе апублікаваны выніковы тэставы набор для праверкі сумяшчальнасці існуючых рэалізацый.

Прадстаўлена спецыфікацыя OpenCL 3.0

Найбольш прыкметныя асаблівасці OpenCL 3.0:

  • API OpenCL 3.0 зараз ахоплівае ўсе версіі OpenCL (1.2, 2.x), без падавання асобных спецыфікацый для кожнай версіі. OpenCL 3.0 прадугледжвае магчымасць пашырэння асноўнай функцыянальнасці праз інтэграцыю дадатковых спецыфікацый, якія будуць напластоўвацца ў форме опцый, не блакуючы маналітны характар ​​OpenCL 1.2/2.X.
  • Абавязковай заяўлена толькі функцыянальнасць, якая адпавядае OpenCL 1.2, а ўсе магчымасці, прапанаваныя ў спецыфікацыях OpenCL 2.x, аднесены да ліку неабавязковых. Падобны падыход спросціць стварэнне спецыялізаваных рэалізацый, сумяшчальных з OpenCL 3.0, і пашырыць спектр прылад, на якіх можа выкарыстоўвацца OpenCL 3.0. Напрыклад, вытворцы могуць рэалізаваць падтрымку OpenCL 3.0, не рэалізуючы асобныя магчымасці OpenCL 2.x. Для доступу да неабавязковых магчымасцяў мовы ў 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 змогуць лёгка абнавіць свае прадукты да OpenCL 3.0, дадаўшы толькі апрацоўку запытаў на наяўнасць тых ці іншых выклікаў API, і з часам паступова нарошчваць функцыянальнасць.
  • Спецыфікацыя OpenCL 3.0 прыведзена ў адпаведнасць з асяроддзем, пашырэннямі і спецыфікацыямі ўніверсальнага прамежкавага падання SPIR-V, якое таксама ўжываецца ў API Vulkan. Падтрымка спецыфікацыі SPIR-V 1.3 унесена ў асноўны склад OpenCL 3.0 у якасці апцыянальнай магчымасці. Праз выкарыстанне прамежкавага прадстаўлення СПІР-В для вылічальных ядраў дададзена падтрымка аперацый з падгрупамі.
    Прадстаўлена спецыфікацыя OpenCL 3.0

  • Дададзена падтрымка пашырэння для выканання асінхронных DMA-аперацый (Asynchronous DMA), які падтрымліваецца ў DSP-падобных чыпах з прамым доступам да памяці. Asynchronous DMA дае магчымасць выкарыстоўваць транзакцыі DMA для перадачы дадзеных паміж глабальнай і лакальнай памяццю ў асінхронным рэжыме, раўналежна з якія вырабляюцца вылічэнням або іншымі аперацыямі перадачы дадзеных.
  • Спецыфікацыя пашырэнняў паралельнага праграмавання для мовы Сі абноўлена да версіі 3.0, а развіццё моўных пашырэнняў OpenCL для C++ спынена ў карысць праекту "C++ for OpenCL". C++ for OpenCL уяўляе сабой кампілятар, заснаваны на Clang/LLVM і які транслюе ядра на C++ і OpenCL C у прамежкавае ўяўленне SPIR-V ці нізкаўзроўневы машынны код. Праз трансляцыю ў SPIR-V таксама арганізавана зборка З++ прыкладанняў, якія выкарыстоўваюць бібліятэку шаблонаў SYCL, якая спрашчае стварэнне паралельных прыкладанняў.

    Прадстаўлена спецыфікацыя OpenCL 3.0

  • Для трансляцыі OpenCL праз API Vulkan прапанаваны кампілятар clspv, пераўтваральны ядра OpenCL ва ўяўленне Vulkan SPIR-V, і праслойка clvk для забеспячэння працы API OpenCL па-над Vulkan.

    Прадстаўлена спецыфікацыя OpenCL 3.0

Крыніца: opennet.ru

Дадаць каментар