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

PoCL 5.0 рдкреНрд░реЛрдЬреЗрдХреНрдЯрдЪреЗ рдкреНрд░рдХрд╛рд╢рди (рдкреЛрд░реНрдЯреЗрдмрд▓ рдХреЙрдореНрдкреНрдпреБрдЯрд┐рдВрдЧ рд▓рдБрдЧреНрд╡реЗрдЬ OpenCL) рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдиреЗ 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 рдорд╛рд░реНрдЧреЗ) рджреНрд╡рд╛рд░реЗ рдСрдкрд░реЗрд╢рдирд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдмреЕрдХрдПрдВрдбреНрд╕ рдЖрд╣реЗрдд.

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

  • рдирд╡реАрди "рд░рд┐рдореЛрдЯ" рдмреЕрдХрдПрдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА pocld рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд▓рд╡рд┐рдгрд╛рд░реНтАНрдпрд╛ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░реАрд▓ рдЗрддрд░ рд╣реЛрд╕реНрдЯрд╡рд░ OpenCL рдХрдорд╛рдВрдбрдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░реВрди рд╡рд┐рддрд░рд┐рдд рд╕рдВрдЧрдгрди рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗ.
  • CUDA рдбреНрд░рд╛рдпрд╡реНрд╣рд░ OpenCL 3.0 рдЪреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЖрдгрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рддреЛ, рдЬрд╕реЗ рдХреА рдЕрдгреБ рдСрдкрд░реЗрд╢рдиреНрд╕, рд╕реНрдХреЛрдкреНрдб рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier, рдЖрдгрд┐ sub_group_ballot.
  • RISC-V рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд CPUs рд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рд╕рдорд░реНрдерди. LLVM 2 рдЖрдгрд┐ GCC 23.10 рд╕рд╣ Ubuntu 17 рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд▓реЛрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ Starfive VisionFive 13.2 рдмреЛрд░реНрдбрд╡рд░ PoCL рдСрдкрд░реЗрд╢рдирдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рдд рдЖрд▓реА.
  • cl_ext_float_atomics рд╡рд┐рд╕реНрддрд╛рд░ FP32 рдЖрдгрд┐ FP64 рдЪреНрдпрд╛ рд╕рдорд░реНрдердирд╛рд╕рд╣ рд▓рд╛рдЧреВ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ.
  • cl_khr_command_buffer рд╡рд┐рд╕реНрддрд╛рд░рд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╡реГрддреНрддреА 0.9.4 рд╡рд░ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реА рдЖрд╣реЗ.
  • FPGAs рд╕рд╛рдареА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ AlmaIF рдмреЕрдХрдПрдВрдб рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ.
  • SPIR 1.x/2.0 рд╢реЗрдбрд░реНрд╕рдЪреНрдпрд╛ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡рд╛рд╕рд╛рдареА рдЕрдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХрд╛рдврд▓реЗ. SPIR-V рд╣реА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реЗрд▓реА рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд╢реЗрдбрд░ рднрд╛рд╖рд╛ рдореНрд╣рдгреВрди рдШреЛрд╖рд┐рдд рдХреЗрд▓реА рдЖрд╣реЗ.
  • Clang/LLVM 17.0 рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. Clang/LLVM 10-13 рд╕рд╛рдареА рд╕рдорд░реНрдерди рдирд╛рдкрд╕рдВрдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.

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

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