ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½Π° Π΅ спСцификацията OpenCL 3.0

ΠšΠΎΠ½Ρ†Π΅Ρ€Π½ Khronos, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° спСцификациитС Π½Π° сСмСйството OpenGL, Vulkan ΠΈ OpenCL, обяви ΠŸΠΎΠ·ΠΈΡ†ΠΈΡΡ‚Π° Π½Π° OpenCL 3.0 Π·Π°Π²ΡŠΡ€ΡˆΠΈ, опрСдСляща API ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° C Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° кроссплатформСни ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ изчислСния с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° многоядрСни процСсори, 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 ΠΊΠ°Ρ‚ΠΎ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚. Π§Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС SPIR-V Π·Π° изчислитСлни ядра Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΏΠΈ.
    ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½Π° Π΅ спСцификацията OpenCL 3.0
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π·Π° изпълнСниС Π½Π° асинхронни DMA ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ Π² DSP-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ‡ΠΈΠΏΠΎΠ²Π΅ с Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Asynchronous DMA Π΄Π°Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° DMA Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° ΠΈ Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² асинхронСн Ρ€Π΅ΠΆΠΈΠΌ, ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ с ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½ΠΈΡ‚Π΅ изчислСния ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.
  • БпСцификацията Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡΡ‚Π° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° C Π΅ ΠΎΠ±Π½ΠΎΠ²Π΅Π½Π° Π΄ΠΎ вСрсия 3.0, Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠΎΠ²ΠΈΡ‚Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ OpenCL Π·Π° C++ Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½ΠΎ Π² ΠΏΠΎΠ»Π·Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€žC++ for OpenCLβ€œ. C++ for OpenCL прСдставлява ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Clang/LLVM ΠΈ транслиращ ядра Π½Π° C++ ΠΈ OpenCL C Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС SPIR-V ΠΈΠ»ΠΈ ниско Π½ΠΈΠ²ΠΎ машинСн ΠΊΠΎΠ΄. Π§Ρ€Π΅Π· транслацията Π² SPIR-V ΡΡŠΡ‰ΠΎ Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π° сборка Π½Π° C++ прилоТСния, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° шаблони SYCL, която опростява ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ прилоТСния.

    ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½Π° Π΅ спСцификацията OpenCL 3.0
  • Π—Π° транслация Π½Π° OpenCL ΠΏΡ€Π΅Π· API Vulkan са ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ clspv, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‰ ядра OpenCL Π² прСдставянС Vulkan SPIR-V, ΠΈ прослойка clvk Π·Π° осигуряванС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° API OpenCL Π½Π°Π΄ Vulkan.

    ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½Π° Π΅ спСцификацията OpenCL 3.0

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster