Rusticle рдУрдкрди рд╕реЛрд░реНрд╕ рдбреНрд░рд╛рдпрд╡реНрд╣рд░ OpenCL 3.0 рд╕рд╣ рд╕реБрд╕рдВрдЧрдд рдкреНрд░рдорд╛рдгрд┐рдд рдЖрд╣реЗ

рдореЗрд╕рд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдиреА рд░рд╕реНрдЯрд┐рдХрд▓ рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдЪреНрдпрд╛ рдХреНрд░реЛрдиреЛрд╕ рд╕рдВрд╕реНрдереЗрджреНрд╡рд╛рд░реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╛рдЪреА рдШреЛрд╖рдгрд╛ рдХреЗрд▓реА, рдЬреНрдпрд╛рдиреЗ CTS (рдХреНрд░реЛрдиреЛрд╕ рдХреЙрдиреНрдлреЙрд░реНрдордиреНрд╕ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ) рд╕рдВрдЪрд╛рддреАрд▓ рд╕рд░реНрд╡ рдЪрд╛рдЪрдгреНрдпрд╛ рдпрд╢рд╕реНрд╡реАрдкрдгреЗ рдЙрддреНрддреАрд░реНрдг рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреЗ OpenCL 3.0 рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирд╢реА рдкреВрд░реНрдгрдкрдгреЗ рд╕реБрд╕рдВрдЧрдд рдореНрд╣рдгреВрди рдУрд│рдЦрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ APIs рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдХреНрд░реЙрд╕-рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рд╕рдорд╛рдВрддрд░ рд╕рдВрдЧрдгрди рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реА рднрд╛рд╖реЗрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░. рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реНрдпрд╛рдиреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдзрд┐рдХреГрддрдкрдгреЗ рдорд╛рдирдХрд╛рдВрдЪреЗ рдкрд╛рд▓рди рдШреЛрд╖рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рд╕рдВрдмрдВрдзрд┐рдд Khronos рдЯреНрд░реЗрдбрдорд╛рд░реНрдХ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдорд┐рд│рддреЗ. Gallium12D Iris рдбреНрд░рд╛рдЗрд╡реНрд╣рд░ рд╡рд╛рдкрд░реВрди 3-рдЬрдирд░реЗрд╢рди рдЗрдВрдЯрд┐рдЧреНрд░реЗрдЯреЗрдб рдЗрдВрдЯреЗрд▓ GPUs рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ рдЪрд╛рдЪрдгреА рдХреЗрд▓реА рдЧреЗрд▓реА.

рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рд░рд╕реНрдЯрдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рд░реЗрдб рд╣реЕрдЯрдЪреНрдпрд╛ рдХрд░реЛрд▓ рд╣рд░реНрдмрд╕реНрдЯрдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рдореЗрд╕рд╛, рдиреЛрд╡реНрдпреВ рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдЖрдгрд┐ рдУрдкрдирд╕реАрдПрд▓ рдУрдкрди рд╕реНрдЯреЕрдХрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдд рд╕рд╣рднрд╛рдЧреА рдЖрд╣реЗ. рд░рд╕реНрдЯрд┐рдХрд▓ рдореЗрд╕рд╛рдЪреНрдпрд╛ рдУрдкрдирд╕реАрдПрд▓ рдлреНрд░рдВрдЯрдПрдВрдб рдХреНрд▓реЛрд╡реНрд╣рд░рдЪреЗ рдЕреЕрдирд╛рд▓реЙрдЧ рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рддреЗ рдЖрдгрд┐ рдореЗрд╕рд╛рдордзреНрдпреЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЧреЕрд▓рд┐рдпрдо рдЗрдВрдЯрд░рдлреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдХреНрд▓реЛрд╡реНрд╣рд░ рдмрд░реНрдпрд╛рдЪ рдХрд╛рд│рд╛рдкрд╛рд╕реВрди рд╕реЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рд░рд╕реНрдЯрд┐рдХрд▓ рддреНрдпрд╛рдЪреНрдпрд╛ рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рдмрджрд▓реА рдореНрд╣рдгреВрди рд╕реНрдерд┐рдд рдЖрд╣реЗ. OpenCL 3.0 рд╕реБрд╕рдВрдЧрддрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░рддрд┐рдорд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА OpenCL рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА Rusticle рдкреНрд░рдХрд▓реНрдк рдХреНрд▓реЛрд╡реНрд╣рд░рдкреЗрдХреНрд╖рд╛ рд╡реЗрдЧрд│рд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЕрджреНрдпрд╛рдк FP16 рд╕реНрд╡рд░реВрдкрдирд╛рд╕ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реА. Mesa рдЖрдгрд┐ OpenCL рд╕рд╛рдареА рдмрд╛рдЗрдВрдбрд┐рдВрдЧреНрд╕ рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ C рдХреЛрдбрд╡рд░реВрди рд░рд╕реНрдЯ рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЙрд▓рдЯ, Rust-bindgen рдЪрд╛ рд╡рд╛рдкрд░ Rusticle рдордзреНрдпреЗ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рд░рд╕реНрдЯ рд▓рдБрдЧреНрд╡реЗрдЬ рд╕рдкреЛрд░реНрдЯ рдХреЛрдб рдЖрдгрд┐ рд░рд╕реНрдЯрд┐рдХрд▓ рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдореЗрд╕рд╛ рдореБрдЦреНрдп рдкреНрд░рд╡рд╛рд╣рд╛рдд рд╕реНрд╡реАрдХрд╛рд░рд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдореЗрд╕рд╛ 22.3 рд░рд┐рд▓реАрдЭрдордзреНрдпреЗ рдСрдлрд░ рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓, рдиреЛрд╡реНрд╣реЗрдВрдмрд░рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрд╣реЗ. рд░рд╕реНрдЯ рдЖрдгрд┐ рд░рд╕реНрдЯрд┐рдХрд▓ рд╕рдкреЛрд░реНрдЯ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓ рдЖрдгрд┐ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ "-D gallium-rusticl=true -Dllvm=enabled -Drust_std=2021" рдкрд░реНрдпрд╛рдпрд╛рдВрд╕рд╣ рдПрдХ рдмрд┐рд▓реНрдб рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓. рдмрд╛рдВрдзрдХрд╛рдо рдХрд░рддрд╛рдирд╛, рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдореНрд╣рдгреВрди rustc рдХрдВрдкрд╛рдЗрд▓рд░, рдмрд╛рдЗрдВрдбрдЬреЗрди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬрдирд░реЗрдЯрд░, LLVM, SPIRV-Tools рдЖрдгрд┐ SPIRV-LLVM-Translator рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓.

рдореЗрд╕рд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдд рд░рд╕реНрдЯ рднрд╛рд╖рд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ 2020 рдкрд╛рд╕реВрди рдЪрд░реНрдЪреЗрдд рдЖрд╣реЗ. рд░рд╕реНрдЯ рд╕рдкреЛрд░реНрдЯрдЪреНрдпрд╛ рдлрд╛рдпрджреНрдпрд╛рдВрдкреИрдХреА, рдореЗрдорд░реАрд╕рд╣ рдХрд╛рдо рдХрд░рддрд╛рдирд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдВрдкрд╛рд╕реВрди рдореБрдХреНрдд рд╣реЛрдгреНрдпрд╛рдореБрд│реЗ, рддрд╕реЗрдЪ рдХрд╛рдЭрд╛рди (рд╡рд▓реНрдХрдирдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА) рд╕рд╛рд░рдЦреНрдпрд╛ рдореЗрд╕рд╛рдордзреАрд▓ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд┐рдХрд╛рд╕ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдпрд╛рдореБрд│реЗ рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕рдЪреА рд╡рд╛рдврд▓реЗрд▓реА рд╕реБрд░рдХреНрд╖рд╛ рдЖрдгрд┐ рдЧреБрдгрд╡рддреНрддрд╛ рдирдореВрдж рдХреЗрд▓реА рдЖрд╣реЗ. рдЧрдВрдЬ рдордзреНрдпреЗ). рддреЛрдЯреНрдпрд╛рдВрдордзреНрдпреЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдордЪреА рд╡рд╛рдврд▓реЗрд▓реА рдЬрдЯрд┐рд▓рддрд╛, рдХрд╛рд░реНрдЧреЛ рдкреЕрдХреЗрдЬ рд╕рд┐рд╕реНрдЯрдорд╢реА рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЕрдирд┐рдЪреНрдЫрд╛, рдмрд┐рд▓реНрдб рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрдгрд┐ Linux рд╡рд░ рдореБрдЦреНрдп рдбреЗрд╕реНрдХрдЯреЙрдк рдШрдЯрдХ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдмрд┐рд▓реНрдб рдЕрд╡рд▓рдВрдмрдирд╛рдВрдордзреНрдпреЗ рд░рд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ.

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЖрдореНрд╣реА рдиреЛрд╡реНрдпреВ рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╡рд░реАрд▓ рдХрд╛рдо рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рд╢рдХрддреЛ, рдХреЕрд░реЛрд▓ рд╣рд░реНрдмрд╕реНрдЯрдиреЗ рджреЗрдЦреАрд▓ рдХреЗрд▓реЗ рдЖрд╣реЗ. Nouveau рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдиреЗ GNU NVIDIA GeForce RTX 30xx рд╕рд╛рдареА рдореВрд▓рднреВрдд OpenGL рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ Ampere рдорд╛рдпрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ, рдореЗ 2020 рдкрд╛рд╕реВрди рд░рд┐рд▓реАрдЬ рдЭрд╛рд▓рд╛ рдЖрд╣реЗ. Linux 6.2 рдХрд░реНрдирд▓ рдЖрдгрд┐ Mesa 22.3 рдордзреНрдпреЗ рдирд╡реАрди рдЪрд┐рдкреНрд╕рд╕рд╛рдареА рд╕рдорд░реНрдердирд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдмрджрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛