ΠΠΎΡΡΠ°ΠΏΠ½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ PoCL 1.3 (Portable Computing Language OpenCL), ΠΊΠΎΡ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΎΡ OpenCL ΠΊΠΎΡ Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠ΅Π½ ΠΎΠ΄ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π³ΡΠ°ΡΠΈΡΠΊΠΈ Π°ΠΊΡΠ΅Π»Π΅ΡΠ°ΡΠΎΡΠΈ ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π½ΠΈ Π·Π°Π΄Π½ΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ OpenCL ΠΊΠ΅ΡΠ½Π΅Π»ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΈ ΡΠ΅Π½ΡΡΠ°Π»Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ . ΠΡΠΎΠ΅ΠΊΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° MIT. ΠΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° X86_64, MIPS32, ARM v7, AMD HSA APU ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΠΈ ΡΠ°Π·Π½ΠΈ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ TTA (Transport Triggered Architecture) ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ ΡΠΎ VLIW Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°.
ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ OpenCL Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° LLVM, Π° Clang ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΡΠ΅Π΄Π΅Π½ ΠΊΡΠ°Ρ Π·Π° OpenCL C. ΠΠ° Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½Π° ΠΏΡΠ΅Π½ΠΎΡΠ»ΠΈΠ²ΠΎΡΡ ΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ, ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ OpenCL ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ
Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ VLIW, ΡΡΠΏΠ΅ΡΡΠΊΠ°Π»Π°Ρ, SIMD, SIMT, ΠΌΡΠ»ΡΠΈ-ΡΠ°Π΄ΡΠ΅Π½ΠΈ ΠΈ ΠΌΡΠ»ΡΠΈ-Π½ΠΈΡΠΊΠΈ. ΠΠΎΡΡΠ°ΠΏΠ½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π½Π° ΠΠΠ
(ΠΠΈΠ²Π΅Ρ Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°). ΠΠΎΡΡΠΎΡΠ°Ρ Π·Π°Π΄Π½ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠ΅ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ, ASIP (TCE/TTA), Π³ΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° HSA Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ NVIDIA GPU (CUDA).
ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π΄ΠΎΠ΄Π°Π²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° LLVM/Clang 8.0. ΠΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ICD (Installable Client Driver) Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° macOS. Π‘ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° Π΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ pocl Π±Π΅Π· Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈ Π·Π° Π·Π°Π΄Π½ΠΈΠΎΡ Π΄Π΅Π» Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ. ΠΠ° HSA (Π₯Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°), ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° Π΅ ΠΏΡΠ²ΠΈΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅ ISA Π½Π° Π²ΡΠ²ΠΎΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° HSA. ΠΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π±Π΅ΡΠ΅ ΠΈΡΡΠΈΡΡΠ΅Π½Π°, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ ΡΠ° ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Vecmathlib Π±Π΅ΡΠ΅ ΠΎΡΡΡΡΠ°Π½Π΅ΡΠ° ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° ΠΏΠΎΡΡΠ°ΡΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° LLVM (ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΠΎΠ΄ 6.0) Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΠΊΠΈΠ½Π°ΡΠ°.
ΠΠ·Π²ΠΎΡ: opennet.ru