OpenCL์˜ Mesa Rust ๊ตฌํ˜„์€ ์ด์ œ OpenCL 3.0์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Mesa ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ๊ฐœ๋ฐœ ์ค‘์ธ Rust๋กœ ์ž‘์„ฑ๋œ ์ƒˆ๋กœ์šด OpenCL ๊ตฌํ˜„(rusticl)์€ OpenCL 3.0 ์‚ฌ์–‘๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด Khronos ์ปจ์†Œ์‹œ์—„์—์„œ ์‚ฌ์šฉํ•˜๋Š” CTS(Kronos Conformance Test Suite) ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ†ต๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” Mesa, Nouveau ๋“œ๋ผ์ด๋ฒ„ ๋ฐ OpenCL ์˜คํ”ˆ ์Šคํƒ ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š” Red Hat์˜ Karol Herbst๊ฐ€ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. Carol์€ Rustl์˜ OpenCL 3.0 ์ง€์› ๊ณต์‹ ์ธ์ฆ๊ณผ ๊ด€๋ จํ•˜์—ฌ Khronos์— ๋ฌธ์˜ํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋Š” 12์„ธ๋Œ€ Intel GPU(Alder Lake)๊ฐ€ ํƒ‘์žฌ๋œ ์‹œ์Šคํ…œ์—์„œ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์€ Mesa Iris ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋˜์—ˆ์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋Š” NIR ์…ฐ์ด๋”์˜ ์œ ํ˜• ์—†๋Š” IR(์ค‘๊ฐ„ ํ‘œํ˜„)์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ Mesa ๋“œ๋ผ์ด๋ฒ„์—์„œ๋„ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Rusticle๊ณผ Mesa๋ฅผ ๋ณ‘ํ•ฉํ•˜๋ ค๋Š” ์š”์ฒญ์€ ์•„์ง ๊ฒ€ํ†  ์ค‘์ด๋ฉฐ Mesa์— Rust ์ฝ”๋“œ๋ฅผ ํฌํ•จํ• ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ๊ฒฐ์ •์€ ๋‚ด๋ ค์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Rusticl์ด ๋ฉ”์ธ Mesa ๊ตฌ์„ฑ์— ์ ์šฉ๋˜๊ธฐ ์ „์—, ์ปดํŒŒ์ผํ•  ๋•Œ ๋นŒ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜ "-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=์„ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ๋ณ„๋„์˜ ๋นŒ๋“œ ๋ถ„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง„์‹ค".

Rusticle์€ Mesa์˜ OpenCL ํ”„๋ก ํŠธ์—”๋“œ Clover์™€ ์œ ์‚ฌํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ Mesa์—์„œ ์ œ๊ณต๋˜๋Š” Gallium ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Clover ์ง€๋ถ„์€ ์˜ค๋žซ๋™์•ˆ ๋ฒ„๋ ค์กŒ์œผ๋ฉฐ Rustel์ด ํ–ฅํ›„ ๋Œ€์ฒด ์ง€๋ถ„์œผ๋กœ ์ž๋ฆฌ๋งค๊น€ํ–ˆ์Šต๋‹ˆ๋‹ค. OpenCL 3.0 ํ˜ธํ™˜์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ Rusticle ํ”„๋กœ์ ํŠธ๋Š” ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ OpenCL ํ™•์žฅ์„ ์ง€์›ํ•œ๋‹ค๋Š” ์ ์—์„œ Clover์™€ ๋‹ค๋ฅด์ง€๋งŒ ์•„์ง FP16 ํ˜•์‹์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Mesa ๋ฐ OpenCL์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์„ ์ƒ์„ฑํ•˜์—ฌ C ์ฝ”๋“œ์—์„œ Rust ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด Rusticle์—์„œ๋Š” Rust-bindgen์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Mesa ํ”„๋กœ์ ํŠธ์—์„œ Rust ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์€ 2020๋…„๋ถ€ํ„ฐ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Rust ์ง€์›์˜ ์žฅ์  ์ค‘์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—… ์‹œ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  Kazan(Vulkan ๊ตฌํ˜„)๊ณผ ๊ฐ™์€ ํƒ€์‚ฌ ๊ฐœ๋ฐœ์„ Mesa์— ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ํ–ฅ์ƒ๋œ ๋ณด์•ˆ ๋ฐ ๋“œ๋ผ์ด๋ฒ„ ํ’ˆ์งˆ์ด ์–ธ๊ธ‰๋ฉ๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ์—์„œ). ๋‹จ์ ์œผ๋กœ๋Š” ๋นŒ๋“œ ์‹œ์Šคํ…œ์˜ ๋ณต์žก์„ฑ ์ฆ๊ฐ€, ์นด๊ณ  ํŒจํ‚ค์ง€ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ฑฐ๋ถ€๊ฐ, ๋นŒ๋“œ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ ํ™•์žฅ, Linux์—์„œ ์ฃผ์š” ๋ฐ์Šคํฌํ†ฑ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋นŒ๋“œ ์ข…์†์„ฑ์— Rust ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค๋Š” ์  ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€