Π Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠ°Ρ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° 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 Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π² ΡΠΎΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π² Mesa OpenCL-ΡΡΠΎΠ½ΡΡΠ½Π΄Π° Clover ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² Mesa ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Gallium. ΠΠΎΠ» Clover ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π·Π°Π±ΡΠΎΡΠ΅Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΈ rusticl ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π±ΡΠ΄ΡΡΠ°Ρ Π·Π°ΠΌΠ΅Π½Π°. ΠΡΠΎΠΌΠ΅ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ OpenCL 3.0 ΠΏΡΠΎΠ΅ΠΊΡ Rusticl ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Clover ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ OpenCL Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΠΌΠ°Ρ FP16.
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΎΠ² Π΄Π»Ρ Mesa ΠΈ OpenCL, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
Π²ΡΠ·ΡΠ²Π°ΡΡ Rust-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΠΊΠΎΠ΄Π° Π½Π° Π‘ΠΈ ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π² Rusticl Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ rust-bindgen. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠ° Rust Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Mesa ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ Ρ 2020 Π³ΠΎΠ΄Π°. ΠΠ· ΠΏΠ»ΡΡΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Rust ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² Π·Π° ΡΡΡΡ ΠΈΠ·Π±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΡ ΡΠΈΠΏΠΎΠ²ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ°ΠΌΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΡΠΎΡΡΠ°Π² Mesa ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π½Π°ΡΠ°Π±ΠΎΡΠΎΠΊ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Kazan (ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Vulkan Π½Π° Rust). ΠΠ· Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ, Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ cargo, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΌΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Rust Π² ΡΠ±ΠΎΡΠΎΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° Π² Linux.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru