Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π½Π° OpenCL ΡΠ΄ΡΠΎΡΠΎ Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° LLVM, Π° Clang ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π΄Π΅Π½ ΠΊΡΠ°ΠΉ Π·Π° OpenCL C. ΠΠ° Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ° ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° OpenCL ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ
Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄, ΠΊΠ°ΡΠΎ VLIW, ΡΡΠΏΠ΅ΡΡΠΊΠ°Π»Π°ΡΠ΅Π½, SIMD, SIMT, ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄ΡΠ΅Π½ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ½ΠΈΡΠΊΠΎΠ²ΠΈ. ΠΠ°Π»ΠΈΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ICD Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ
(ΠΠ½ΡΡΠ°Π»ΠΈΡΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅Ρ). ΠΠΌΠ° Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΠ΅Π· CPU, ASIP (TCE/TTA), GPU Π±Π°Π·ΠΈΡΠ°Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°
- ΠΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°
LLVM/Clang 9.0 . ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° Π²Π΅ΡΡΠΈΠΈ Π½Π° LLVM, ΠΏΠΎ-ΡΡΠ°ΡΠΈ ΠΎΡ 6.0, Π΅ ΠΏΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½Π°. - ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°
SPIR ΠΈSPIR-V (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² API Π½Π° Vulkan), ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ Π·Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅ΠΉΠ΄ΡΡΠΈ Π·Π° Π³ΡΠ°ΡΠΈΠΊΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ; - ΠΠΎΠ±Π°Π²Π΅Π½ pocl-accel Π΄ΡΠ°ΠΉΠ²Π΅Ρ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° OpenCL 1.2 Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΡΡΠΊΠΎΡΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΠΊΠ°ΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° (mmap);
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° pocl ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΎΠ±Π²ΡΡΠ·Π°Π½ΠΈ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ (Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru