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 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдкреЗрд╢ рдЧрд░рд┐рдпреЛ

рд╕рдмреИрднрдиреНрджрд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реБ OpenCL 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 рдорд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд░реВрдкрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫред рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдЙрдкрдпреЛрдЧ рдХреЛ рдорд╛рдзреНрдпрдо рдмрд╛рдЯ SPIR-V рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рдХреЛрд░рдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрд╕рдореВрд╣рд╣рд░реВрд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд▓рдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдПрдХреЛ рдЫред
    OpenCL 3.0 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдкреЗрд╢ рдЧрд░рд┐рдпреЛ

  • рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ DMA рдЕрдкрд░реЗрд╢рдирд╣рд░реВ (рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ DMA) рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╕реНрддрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ, рдкреНрд░рддреНрдпрдХреНрд╖ рдореЗрдореЛрд░реА рдкрд╣реБрдБрдЪрдХреЛ рд╕рд╛рде DSP-рдЬрд╕реНрддреЛ рдЪрд┐рдкрд╣рд░реВрдорд╛ рд╕рдорд░реНрдерд┐рддред рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ DMA рд▓реЗ рдЧрдгрдирд╛ рд╡рд╛ рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХрд╛рд░реНрдпрд╣рд░реВрд╕рдБрдЧ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛, рдЧреНрд▓реЛрдмрд▓ рд░ рд╕реНрдерд╛рдиреАрдп рдореЗрдореЛрд░реА рдмреАрдЪ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди DMA рд▓реЗрдирджреЗрдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫред
  • C рд╕рдорд╛рдирд╛рдиреНрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдирд┐рд░реНрджрд┐рд╖реНрдЯреАрдХрд░рдгрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫ рд╕рдВрд╕реНрдХрд░рдг резрез, рд░ C++ рдХреЛ рд▓рд╛рдЧрд┐ OpenCL рднрд╛рд╖рд╛ рд╡рд┐рд╕реНрддрд╛рд░рдХреЛ рд╡рд┐рдХрд╛рд╕ "OpenCL рдХреЛ рд▓рд╛рдЧрд┐ C++" рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдкрдХреНрд╖рдорд╛ рдмрдиреНрдж рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред OpenCL рдХреЛ рд▓рд╛рдЧрд┐ C++ Clang/LLVM рд░ рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдХрдореНрдкрд╛рдЗрд▓рд░ рд╣реЛ рдкреНрд░рд╕рд╛рд░рдг C++ рд░ OpenCL C рдХрд░реНрдиреЗрд▓рд╣рд░реВ SPIR-V рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛ рдирд┐рдореНрди-рд╕реНрддрд░рдХреЛ рдореЗрд╕рд┐рди рдХреЛрдбрдорд╛ред рдкреНрд░рд╕рд╛рд░рдг рдорд╛рд░реНрдлрдд, SPIR-V рд▓реЗ SYCL рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ C++ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╕рдВрдпреЛрдЬрди рдкрдирд┐ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрджрдЫ, рдЬрд╕рд▓реЗ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╕рд┐рд░реНрдЬрдирд╛рд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫред

    OpenCL 3.0 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдкреЗрд╢ рдЧрд░рд┐рдпреЛ

  • Vulkan API рдорд╛рд░реНрдлрдд OpenCL рдкреНрд░рд╕рд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдХрдореНрдкрд╛рдЗрд▓рд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ clspv, рдЬрд╕рд▓реЗ OpenCL рдХрд░реНрдиреЗрд▓рд╣рд░реВрд▓рд╛рдИ Vulkan SPIR-V рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡, рд░ рддрд╣рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдЫ clvk Vulkan рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рдХрд╛рдо рдЧрд░реНрди OpenCL API рд╕рдХреНрд╖рдо рдЧрд░реНрдиред

    OpenCL 3.0 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдкреЗрд╢ рдЧрд░рд┐рдпреЛ

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди