Π’ΡŠΠ²Π΅Π΄Π΅Π½Π° спСцификация OpenCL 3.0

ΠšΠΎΠ½Ρ†Π΅Ρ€Π½ΡŠΡ‚ Khronos, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° спСцификациитС Π½Π° сСмСйството OpenGL, Vulkan ΠΈ OpenCL, ΡΡŠΠΎΠ±Ρ‰ΠΈ относно Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° спСцификации Π½Π° OpenCL 3.0, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚ API ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° C Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ изчислСния с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° многоядрСни CPU, GPU, FPGA, DSP ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ спСциализирани Ρ‡ΠΈΠΏΠΎΠ²Π΅, ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈ ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π΄ΠΎ Ρ‡ΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ Π² ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ устройства ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½Π° тСхнология. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΡŠΡ‚ OpenCL Π΅ напълно ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΈ Π½Π΅ изисква Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΈ такси. Π’ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠΎ стандарта участваха ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments ΠΈ Toshiba.

На настоящия Π΅Ρ‚Π°ΠΏ Π½Π° спСцификацията Π΅ присвоСн Π²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ статус, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΡ€Π΅Ρ†ΠΈΠ·ΠΈΡ€Π°Π½Π΅ въз основа Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½Π° Ρ‡Ρ€Π΅Π· GitHub. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π²Π·Π΅Ρ‚ΠΈ ΠΏΠΎΠ΄ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, спСцификацията Ρ‰Π΅ бъдС Ρ„ΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΈ Ρ‰Π΅ бъдС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΡ‚ тСстовС Π·Π° тСстванС Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’ΡŠΠ²Π΅Π΄Π΅Π½Π° спСцификация OpenCL 3.0

Най-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Удобства ΠžΡ‚Π²Π°Ρ€ΡΠ½Π΅CL 3.0:

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

    Π’ΡŠΠ²Π΅Π΄Π΅Π½Π° спСцификация OpenCL 3.0

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π·Π° ΠΈΠ·Π»ΡŠΡ‡Π²Π°Π½Π΅ Π½Π° OpenCL Ρ‡Ρ€Π΅Π· API Π½Π° Vulkan clspv, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° OpenCL ядра Π² прСдставянС Π½Π° Vulkan SPIR-V ΠΈ слой clvk Π·Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ OpenCL API Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΡŠΡ€Ρ…Ρƒ Vulkan.

    Π’ΡŠΠ²Π΅Π΄Π΅Π½Π° спСцификация OpenCL 3.0

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€