OpenCL 3.0 рддрдкрд╢реАрд▓ рд╕рд╛рджрд░ рдХреЗрд▓реЗ

Khronos рдЪрд┐рдВрддрд╛, OpenGL, Vulkan рдЖрдгрд┐ OpenCL рдлреЕрдорд┐рд▓реА рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдиреНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░, рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рд╕реБрдкрд░рдХреЙрдореНрдкреНрдпреБрдЯрд░ рдЖрдгрд┐ рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡реНрд╣рд░рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд▒реНрдпрд╛ рдорд▓реНрдЯреА-рдХреЛрд░ CPUs, GPUs, FPGAs, DSPs рдЖрдгрд┐ рдЗрддрд░ рд╡рд┐рд╢реЗрд╖ рдЪрд┐рдкреНрд╕ рд╡рд╛рдкрд░реВрди рдХреНрд░реЙрд╕-рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рд╕рдорд╛рдВрддрд░ рд╕рдВрдЧрдгрди рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА APIs рдЖрдгрд┐ C рднрд╛рд╖реЗрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгрд╛рд▒реНрдпрд╛ OpenCL 3.0 рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪрд╛ рд╡рд┐рдХрд╛рд╕ рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рд╡рд░ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕ рдЖрдгрд┐ рдПрдореНрдмреЗрдбреЗрдб рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдордзреНрдпреЗ рдЖрдврд│реВ рд╢рдХрдгрд╛рд▒реНрдпрд╛ рдЪрд┐рдкреНрд╕рд╡рд░. OpenCL рдорд╛рдирдХ рдкреВрд░реНрдгрдкрдгреЗ рдЦреБрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдкрд░рд╡рд╛рдирд╛ рд╢реБрд▓реНрдХ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА. IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments рдЖрдгрд┐ Toshiba рд╕рд╛рд░рдЦреНрдпрд╛ рдХрдВрдкрдиреНрдпрд╛рдВрдиреА рд╕реНрдЯрдБрдбрд░реНрдбрд╡рд░ рдХрд╛рдорд╛рдд рднрд╛рдЧ рдШреЗрддрд▓рд╛.

рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирд▓рд╛ рддрд╛рддреНрдкреБрд░рддреА рд╕реНрдерд┐рддреА рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреЗ рджреНрд╡рд╛рд░реЗ рдкрд╛рдард╡рд▓реЗрд▓реНрдпрд╛ рдЕрднрд┐рдкреНрд░рд╛рдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдкрд░рд┐рд╖реНрдХрд░рдгрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ GitHub. рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реНрдпрд╛рд╡рд░, рддрдкрд╢реАрд▓ рдЕрдВрддрд┐рдо рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓ рдЖрдгрд┐ рд╡рд┐рджреНрдпрдорд╛рди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╕реБрд╕рдВрдЧрддрддреЗрдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЕрдВрддрд┐рдо рдЪрд╛рдЪрдгреА рд╕рдВрдЪ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓.

OpenCL 3.0 рддрдкрд╢реАрд▓ рд╕рд╛рджрд░ рдХреЗрд▓реЗ

рд╕рд░реНрд╡рд╛рдд рд▓рдХреНрд╖рдгреАрдп рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдУрдкрдирд╕реАрдПрд▓ 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.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 рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЕрд╕рд▓реЗрд▓реЗ рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдбреЗрд╡реНрд╣рд▓рдкрд░ рддреНрдпрд╛рдВрдЪреА рдЙрддреНрдкрд╛рджрдиреЗ OpenCL 3.0 рд╡рд░ рд╕рд╣рдЬрдкрдгреЗ рд╢реНрд░реЗрдгреАрд╕реБрдзрд╛рд░рд┐рдд рдХрд░реВ рд╢рдХрддрд╛рдд, рд╡рд┐рд╢рд┐рд╖реНрдЯ API рдХреЙрд▓рд╕рд╛рдареА рдлрдХреНрдд рдХреНрд╡реЗрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬреЛрдбреВрди, тАЛтАЛрдЖрдгрд┐ рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ рд╣рд│реВрд╣рд│реВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡реВ рд╢рдХрддрд╛рдд.
  • OpenCL 3.0 рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди SPIR-V рдЬреЗрдиреЗрд░рд┐рдХ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рдирдЪреНрдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг, рд╡рд┐рд╕реНрддрд╛рд░ рдЖрдгрд┐ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╢реА рд╕рдВрд░реЗрдЦрд┐рдд рдЖрд╣реЗ, рдЬреЗ Vulkan API рджреНрд╡рд╛рд░реЗ рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. SPIR-V 1.3 рддрдкрд╢реАрд▓рд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдкрд░реНрдпрд╛рдпреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдореНрд╣рдгреВрди рдХреЛрд░ OpenCL 3.0 рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ. рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рдкрд░реВрди рдПрд╕рдкреАрдЖрдпрдЖрд░-рд╡реНрд╣реА рдХреЙрдореНрдкреНрдпреБрдЯрд┐рдВрдЧ рдХреЛрд░рд╕рд╛рдареА рдЙрдкрд╕рдореВрд╣рд╛рдВрд╕рд╣ рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
    OpenCL 3.0 рддрдкрд╢реАрд▓ рд╕рд╛рджрд░ рдХреЗрд▓реЗ

  • рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдбреАрдПрдордП рдСрдкрд░реЗрд╢рдиреНрд╕ (рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдбреАрдПрдордП) рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╕реНрддрд╛рд░рд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ, рдереЗрдЯ рдореЗрдорд░реА рдкреНрд░рд╡реЗрд╢рд╛рд╕рд╣ рдбреАрдПрд╕рдкреА рд╕рд╛рд░рдЦреНрдпрд╛ рдЪрд┐рдкреНрд╕рдордзреНрдпреЗ рд╕рдорд░реНрдерд┐рдд. рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ DMA рдЧрдгрдиреЗ рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рд╕рдорд╛рдВрддрд░, рдЬрд╛рдЧрддрд┐рдХ рдЖрдгрд┐ рд╕реНрдерд╛рдирд┐рдХ рдореЗрдорд░реА рджрд░рдореНрдпрд╛рди рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА DMA рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рдкрд░рдгреЗ рд╢рдХреНрдп рдХрд░рддреЗ.
  • C рдкреЕрд░рд▓рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдХреНрд╕реНрдЯреЗрдВрд╢рди рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рд╡рд░ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрд╡реГрддреНрддреА 3.0, рдЖрдгрд┐ C++ рд╕рд╛рдареА OpenCL рднрд╛рд╖рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрдЪрд╛ рд╡рд┐рдХрд╛рд╕ тАЬOpenCL рд╕рд╛рдареА C++тАЭ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдмрдВрдж рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛. OpenCL рд╕рд╛рдареА C++ рд╣рд╛ рдХреНрд▓рдБрдЧ/LLVM рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрд╣реЗ рдкреНрд░рд╕рд╛рд░рдг C++ рдЖрдгрд┐ OpenCL C рдХрд░реНрдирд▓ SPIR-V рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдВрд╡рд╛ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдорд╢реАрди рдХреЛрдбрдордзреНрдпреЗ. рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд┐рдВрдЧрджреНрд╡рд╛рд░реЗ, SPIR-V SYCL рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░реВрди C++ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреЗ рдЕрд╕реЗрдВрдмреНрд▓реА рджреЗрдЦреАрд▓ рдЖрдпреЛрдЬрд┐рдд рдХрд░рддреЗ, рдЬреЗ рд╕рдорд╛рдВрддрд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреА рдирд┐рд░реНрдорд┐рддреА рд╕реБрд▓рдн рдХрд░рддреЗ.

    OpenCL 3.0 рддрдкрд╢реАрд▓ рд╕рд╛рджрд░ рдХреЗрд▓реЗ

  • рд╡рд▓реНрдХрди API рджреНрд╡рд╛рд░реЗ рдУрдкрдирд╕реАрдПрд▓ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ clspv, рдЬреЗ OpenCL рдХрд░реНрдирд▓рд▓рд╛ Vulkan SPIR-V рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рди рдЖрдгрд┐ рд▓реЗрдпрд░рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ clvk Vulkan рд╡рд░ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА OpenCL API рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

    OpenCL 3.0 рддрдкрд╢реАрд▓ рд╕рд╛рджрд░ рдХреЗрд▓реЗ

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛