Π Π°Π·Π²ΠΈΠ²Π°Π½ΠΎΡΠΎ Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Mesa Π½ΠΎΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° OpenCL (rusticl), Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π° ΡΠ΅ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ²Π΅ CTS (Kronos Conformance Test Suite), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠΎΡΡΠΈΡΠΌΠ° Khronos Π·Π° ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° OpenCL 3.0. ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΎΡ ΠΡΡΠΎΠ» Π₯Π΅ΡΠ±ΡΡ (Karol Herbst) ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Red Hat, ΠΊΠΎΡΡΠΎ ΡΡΠ°ΡΡΠ²Π° Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Mesa, Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Nouveau ΠΈ ΠΎΡΠΊΡΠΈΡΠΈΡ ΡΡΠ΅ΠΊ OpenCL. Π‘ΠΏΠΎΠΌΠ΅Π½Π°Π²Π° ΡΠ΅, ΡΠ΅ ΠΡΡΠΎΠ» Π΅ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π» Π½Π° Khronos Π·Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° OpenCL 3.0 Π² rusticl.
Π’Π΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π±ΡΡ Π° ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ 12-ΡΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ GPU Intel (Alder Lake). Π Π°Π±ΠΎΡΠ°ΡΠ° Π±Π΅ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Mesa Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Iris, Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΈ Ρ Π΄ΡΡΠ³ΠΈ Mesa Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Π±Π΅Π·ΡΠΈΠΏΠΎΠ²ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ (IR) Π½Π° ΡΠ΅ΠΉΠ΄Π΅ΡΠΈΡΠ΅ NIR. ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π·Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π° Rusticl Ρ Mesa Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π² ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅, Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Rust Π² Mesa Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π²Π·Π΅ΡΠΎ. ΠΠΎ ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ΡΠΎ Π½Π° Rusticl Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΡΡΡΡΠ°Π² Π½Π° Mesa Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠ°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ "-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=true".
Rusticl ΠΈΠ³ΡΠ°Π΅ ΡΠΎΠ»ΡΡΠ° Π½Π° Π°Π½Π°Π»ΠΎΠ³ Π½Π° OpenCL ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° Clover, Π½Π°Π»ΠΈΡΠ΅Π½ Π² Mesa, ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Gallium ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ Π² Mesa. ΠΠΎΠ»ΠΊΠΎΡΠΎ Clover ΠΎΡΠ΄Π°Π²Π½Π° Π΅ Π² Π·Π°Π±ΡΠ°Π²Π΅Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠ°ΠΊΠ° ΠΈ rusticl ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ° ΠΊΠ°ΡΠΎ Π½Π΅Π³ΠΎΠ²ΠΎ Π±ΡΠ΄Π΅ΡΠΎ Π·Π°ΠΌΠ΅ΡΡΠΈΡΠ΅Π». ΠΡΠ²Π΅Π½ ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ OpenCL 3.0, ΠΏΡΠΎΠ΅ΠΊΡΡΡ Rusticl ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π²Π° ΠΎΡ Clover Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° OpenCL ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° FP16 ΡΠΎΡΠΌΠ°ΡΠ°.
ΠΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ Π·Π° Mesa ΠΈ OpenCL, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Rust ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡ ΠΊΠΎΠ΄ Π½Π° C ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, Π² Rusticl ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° rust-bindgen. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° Mesa ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π° ΠΎΡ 2020 Π³ΠΎΠ΄ΠΈΠ½Π°. Π‘ΡΠ΅Π΄ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Rust ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈΡΠ΅, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Π±ΡΠ³Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π² Mesa, ΠΊΠ°ΡΠΎ Kazan (ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Vulkan Π½Π° Rust). ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ²ΡΡΠ·Π²Π° ΠΊΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° cargo, ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Rust Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠ»ΠΎΡ Π² Linux.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
