ΠΡΠ΅Π·Π΅Π½ΡΠΈΡΠ°Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ PoCL 3.0 (Portable Computing Language OpenCL), ΠΊΠΎΡ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΎΡ OpenCL ΠΊΠΎΡ Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠ΅Π½ ΠΎΠ΄ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π³ΡΠ°ΡΠΈΡΠΊΠΈ Π°ΠΊΡΠ΅Π»Π΅ΡΠ°ΡΠΎΡΠΈ ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π½ΠΈ Π·Π°Π΄Π½ΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ OpenCL ΠΊΠ΅ΡΠ½Π΅Π»ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Π½ΡΡΠ°Π»Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ. ΠΡΠΎΠ΅ΠΊΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° MIT. ΠΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU ΠΈ ΡΠ°Π·Π½ΠΈ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ ASIP (Application-Specific Instruction-set Processor) ΠΈ TTA (Transport Triggered Architecture) ΡΠΎ VLIW Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°.
ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ OpenCL Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° LLVM, Π° Clang ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΡΠ΅Π΄Π΅Π½ ΠΊΡΠ°Ρ Π·Π° OpenCL C. ΠΠ° Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½Π° ΠΏΡΠ΅Π½ΠΎΡΠ»ΠΈΠ²ΠΎΡΡ ΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ, ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ OpenCL ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ VLIW, ΡΡΠΏΠ΅ΡΡΠΊΠ°Π»Π°Ρ, SIMD, SIMT, ΠΌΡΠ»ΡΠΈ-ΡΠ°Π΄ΡΠ΅Π½ΠΈ ΠΈ ΠΌΡΠ»ΡΠΈ-Π½ΠΈΡΠΊΠΈ. ΠΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π΄ΡΠ°ΡΠ²Π΅ΡΠΈ Π·Π° ICD (Installable Client Driver). ΠΠΎΡΡΠΎΡΠ°Ρ Π·Π°Π΄Π½ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠ΅ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ, ASIP (TCE/TTA), Π³ΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° HSA Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ NVIDIA GPU (ΠΏΡΠ΅ΠΊΡ libcuda).
ΠΠΎ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°:
- ΠΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ ΡΠ΅Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° OpenCL 3.0 Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½. ΠΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° OpenCL 3.0 ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ½Π° ΡΠ°ΠΌΠΎ Π½Π° ΠΏΠΎΠ·Π°Π΄ΠΈΠ½ΠΈΡΠ΅ Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΡΠΎ LLVM 14 (Π΄ΡΡΠ³ΠΈΡΠ΅ Π·Π°Π΄Π½ΠΈ ΠΈ ΠΏΠΎΡΡΠ°ΡΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° LLVM ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° OpenCL 1.2).
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Clang/LLVM 14.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΈ Π²ΠΈΠ·ΡΠ΅Π»ΠΈΠ·Π°ΡΠΈΡΠ°.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π³ΡΡΠΏΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π½ΠΈΠ²Π½ΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π²ΠΎ ΠΈΠ·Π²ΡΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΡΠΎ OpenCL ΠΊΠ΅ΡΠ½Π΅Π»ΠΈ.
ΠΠ·Π²ΠΎΡ: opennet.ru