NVIDIA๋Š” Rust ์–ธ์–ด๋กœ GPU ์ปค๋„์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก CUDA Rust๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

NVIDIA๋Š” Rust ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GPU์—์„œ ์‹คํ–‰๋˜๋Š” ์ปค๋„์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” CUDA Rust ํˆดํ‚ท ๊ฐœ๋ฐœ์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํˆดํ‚ท์€ ์ปดํŒŒ์ผ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ๊ฒฝ์Ÿ ์กฐ๊ฑด์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋…„์—๋Š” CUDA C++ ๋ฐ CUDA Python ํˆดํ‚ท์ฒ˜๋Ÿผ ์ƒ์šฉ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•œ ์ˆ˜์ค€์œผ๋กœ CUDA Rust๊ฐ€ ๊ฐœ๋ฐœ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

CUDA Rust ํˆด์ฒด์ธ์€ ๋ณ‘๋ ฌ ์ปค๋„ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ๋ชจ๋ธ, SIMT(Single Instruction, Multiple Threads)์™€ Tile์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. SIMT ๋ชจ๋ธ์€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋ฅผ ์ €์ˆ˜์ค€์—์„œ ์ •์˜ํ•˜๊ณ  ์ˆ˜์ฒœ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. Tile ๋ชจ๋ธ์€ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๊ฐœ๋ณ„ ์Šค๋ ˆ๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹  ๋ฐ์ดํ„ฐ ๋ธ”๋ก(ํƒ€์ผ)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Tile IR ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ชจ๋“  ์Šค๋ ˆ๋“œ ์กฐ์ž‘, ์ ‘๊ทผ ๋™๊ธฐํ™”, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐ ํ…์„œ ์ฝ”์–ด ์ „์ฒด์— ๊ฑธ์นœ ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

SIMT ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” Rust ์–ธ์–ด ๊ฐœ๋ฐœ์„ ์œ„ํ•ด cuda-oxide ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ‘œ์ค€ ํƒ€์ž… ์‹œ์Šคํ…œ๊ณผ Rust ์†Œ์œ ๊ถŒ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ Rust ์–ธ์–ด ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ , ์ด๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์–ด๋กœ ์ง์ ‘ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๊ธฐ๊ธฐ CUDA PTX(๋ณ‘๋ ฌ ์Šค๋ ˆ๋“œ ์‹คํ–‰). GPU ์ปค๋„์€ ์ผ๋ฐ˜ Rust๋กœ ์ž‘์„ฑ๋˜์ง€๋งŒ, no_std ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ํ‘œ์ค€ Rust ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(libstd)์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ  libcore ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•จ์ˆ˜์™€ ํŠน์ˆ˜ Rust ์ถ”์ƒํ™” ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Rust๋กœ ์ž‘์„ฑ๋œ CUDA ์ปค๋„์€ ํƒ€์ž… ๋ณดํ˜ธ(safe), unsafe ๋ธ”๋ก ์‚ฌ์šฉ, ๊ทธ๋ฆฌ๊ณ  ์ €์ˆ˜์ค€ ํ•˜๋“œ์›จ์–ด ๋ช…๋ น์–ด ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด DisjointSlice ํƒ€์ž…์ด ์ œ์•ˆ๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ์—๋งŒ ๋ฐฐํƒ€์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. cuda-oxide ์ฝ”๋“œ๋Š” Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

Tail ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด cutile-rs ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Rust ๊ด€์šฉ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CUDA ์ปค๋„๋กœ ์ง์ ‘ ์ปดํŒŒ์ผ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. cutile-rs๋Š” Rust์˜ ์—„๊ฒฉํ•œ ์†Œ์œ ๊ถŒ ๋ฐ ์ฐจ์šฉ ๊ทœ์น™์„ GPU์—์„œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„์€ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์—์„œ ์ž‘๋™ํ•˜๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ตฌํ˜„๋˜๋ฉฐ, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ณ„์‚ฐ์„ ์ž๋™์œผ๋กœ ์Šค๋ ˆ๋“œ๋กœ ๋ถ„ํ• ํ•˜๊ณ  ์Šค๋ ˆ๋“œ ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ๋ถˆ๋ณ€ ํ…์„œ์— ๋Œ€ํ•œ ๊ณต์œ  ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง€๋ฉฐ, ๊ฐ€๋ณ€ ํ…์„œ๋Š” ์•ˆ์ „ํ•œ ์ ‘๊ทผ์„ ์œ„ํ•ด ์„œ๋กœ ๋ถ„๋ฆฌ๋œ ๋ธ”๋ก์œผ๋กœ ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค. cutile-rs ์ฝ”๋“œ๋Š” Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster