рдУрдкрдирд╕реАрдПрд▓ рдорд╛рдирдХрд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ PoCL 3.1 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

PoCL 3.1 (рдкреЛрд░реНрдЯреЗрдмрд▓ рдХрдореНрдкреНрдпреБрдЯрд┐рдВрдЧ рд▓рдБрдЧреНрд╡реЗрдЬ рдУрдкрдирд╕реАрдПрд▓) рдкреНрд░реЛрдЬреЗрдХреНрдЯрдЪреЗ рдкреНрд░рдХрд╛рд╢рди рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдПрдХреНрд╕реАрд▓рд░реЗрдЯрд░ рдЙрддреНрдкрд╛рджрдХрд╛рдВрдкрд╛рд╕реВрди рд╕реНрд╡рддрдВрддреНрд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ OpenCL рдорд╛рдирдХрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрдгрд┐ рдордзреНрдпрд╡рд░реНрддреА рднрд╛рдЧрд╛рдВрд╡рд░ OpenCL рдХрд░реНрдирд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╡рд┐рдз рдмреЕрдХрдПрдВрдбрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░рдХрд▓реНрдк рдХреЛрдб рдПрдордЖрдпрдЯреА рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU рдЖрдгрд┐ VLIW рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╣ рд╡рд┐рд╡рд┐рдз рд╡рд┐рд╢реЗрд╖реАрдХреГрдд ASIP (рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди-рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди-рд╕реЗрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░) рдЖрдгрд┐ TTA (рдЯреНрд░рд╛рдиреНрд╕рдкреЛрд░реНрдЯ рдЯреНрд░рд┐рдЧрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░) рдкреНрд░реЛрд╕реЗрд╕рд░рд╡рд░ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЗ.

рдУрдкрдирд╕реАрдПрд▓ рдХрд░реНрдирд▓ рдХрдВрдкрд╛рдпрд▓рд░рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА LLVM рдЪреНрдпрд╛ рдЖрдзрд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЖрдгрд┐ рдХреНрд▓реЕрдВрдЧрдЪрд╛ рд╡рд╛рдкрд░ OpenCL C рд╕рд╛рдареА рдлреНрд░рдВрдЯ рдПрдВрдб рдореНрд╣рдгреВрди рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдпреЛрдЧреНрдп рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдЖрдгрд┐ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, OpenCL рдХрд░реНрдирд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдВрдпреЛрдЬрди рдлрдВрдХреНрд╢рдиреНрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░реВ рд╢рдХрддреЛ рдЬреЗ рдХреЛрдб рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рдирд▓рд╛ рд╕рдорд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╡рд┐рдз рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд, рдЬрд╕реЗ рдХреА VLIW, superscalar, SIMD, SIMT, рдорд▓реНрдЯреА-рдХреЛрд░ рдЖрдгрд┐ рдорд▓реНрдЯреА-рдереНрд░реЗрдбрд┐рдВрдЧ. ICD рдбреНрд░рд╛рдЗрд╡реНрд╣рд░реНрд╕реН (рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдХреНрд▓рд╛рдпрдВрдЯ рдбреНрд░рд╛рдпрд╡реНрд╣рд░) рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЖрд╣реЗ. CPU, ASIP (TCE/TTA), HSA рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд GPU рдЖрдгрд┐ NVIDIA GPU (libcuda рдорд╛рд░реНрдЧреЗ) рджреНрд╡рд╛рд░реЗ рдСрдкрд░реЗрд╢рдирд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдмреЕрдХрдПрдВрдбреНрд╕ рдЖрд╣реЗрдд.

рдирд╡реАрди рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ:

  • Clang/LLVM 15.0 рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • CPU рдЖрдгрд┐ CUDA рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕рд╕рд╛рдареА SPIR-V рд╢реЗрдбрд░ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд░рд┐рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рди рд╕рдкреЛрд░реНрдЯрдордзреНрдпреЗ рд▓рдХреНрд╖рдгреАрдп рд╕реБрдзрд╛рд░рдгрд╛.
  • рд╡рд┐рд╢реЗрд╖ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ (CL_DEVICE_TYPE_ACCELERATOR) рдЖрдгрд┐ рдСрдирд▓рд╛рдЗрди рд╕рдВрдХрд▓рдирд╛рд╕ рд╕рдорд░реНрдерди рди рджреЗрдгрд╛рд░реНтАНрдпрд╛ рд╕рд╛рдиреБрдХреВрд▓ рдЙрдкрдХрд░рдгрд╛рдВрд╕рд╛рдареА (CL_DEVICE_TYPE_CUSTOM) рдбреНрд░рд╛рдЗрд╡реНрд╣рд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдкреБрдиреНрд╣рд╛ рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ. рдПрдХреНрд╕реЗрд▓ рдЖрдгрд┐ рдЯреЕрд╕рд┐рдо рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕ рдирд╡реАрди AlmaIF рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдордзреНрдпреЗ рд╡рд┐рд▓реАрди рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд.
  • рд╡рд▓реНрдХрди рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ API рд╕рд╛рдареА рдбреНрд░рд╛рдпрд╡реНрд╣рд░рд╡рд░ рдХрд╛рд░реНрдп рдЪрд╛рд▓реВ рдЖрд╣реЗ.
  • cl_khr_command_buffer рдПрдХреНрд╕реНрдЯреЗрдВрд╢рдирдЪреА рдореВрд▓рднреВрдд рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЖрд╣реЗ, рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХрд╛ рдХреЙрд▓рдордзреНрдпреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА OpenCL рдХрдорд╛рдВрдбрдЪрд╛ рдХреНрд░рдо рд▓рд┐рд╣реВ рджреЗрддреЗ.

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

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