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