--- id: P-REINFORCE-AUTO-C4EB25 category: "[[10_Wiki/๐Ÿ’ก Topics/Graphics & Performance]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shaders)" --- # [[์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shaders)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shaders)๋Š” JavaScript ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋˜ ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ์ˆ˜์ฒœ ๊ฐœ์˜ GPU ์ฝ”์–ด์—์„œ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์˜คํ”„๋กœ๋“œํ•˜๋Š” ๋ฒ”์šฉ GPU ์—ฐ์‚ฐ(general-purpose GPU computation) ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค [1]. ์ฃผ๋กœ WebGPU ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ, ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง ๋“ฑ์˜ CPU ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํš๊ธฐ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜์—ฌ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [2-4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **ํŒŒํ‹ฐํด ๋ฐ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ฒ˜๋ฆฌ ํ•œ๊ณ„ ๋ŒํŒŒ** ๊ธฐ์กด CPU ๊ธฐ๋ฐ˜ ํŒŒํ‹ฐํด ์—…๋ฐ์ดํŠธ๋Š” ์ผ๋ฐ˜์ ์ธ ํ•˜๋“œ์›จ์–ด์—์„œ ์•ฝ 50,000๊ฐœ ๋ถ€๊ทผ์—์„œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์— ๋„๋‹ฌํ•˜์ง€๋งŒ, WebGPU ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฅผ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ ๋‹จ์œ„๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 3]. ์˜ˆ๋ฅผ ๋“ค์–ด, CPU์—์„œ ํ”„๋ ˆ์ž„๋‹น 30ms๊ฐ€ ์†Œ์š”๋˜๋˜ 10,000๊ฐœ์˜ ํŒŒํ‹ฐํด ์—…๋ฐ์ดํŠธ ์ž‘์—…์„ ์ปดํ“จํŠธ ์…ฐ์ด๋”๋กœ ์ „ํ™˜ํ•˜๋ฉด 100,000๊ฐœ์˜ ํŒŒํ‹ฐํด์„ 2ms ์ด๋‚ด์— ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์–ด ์•ฝ 150๋ฐฐ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4]. ๋˜ํ•œ, ๋Œ€๊ทœ๋ชจ ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ์—๋„ ํƒ์›”ํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค [5, 6]. * **๊ณ ๊ธ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ GPU ์ฃผ๋„ ๋ Œ๋”๋ง(GPU-driven Rendering)** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ์ถฉ๋Œ ๊ฐ์ง€(Collision detection), ์‹ค์‹œ๊ฐ„ ์กฐ๋ช…, ๋Œ€๊ทœ๋ชจ BIM ๋ฐ์ดํ„ฐ์…‹์˜ ์‹ค์‹œ๊ฐ„ ํ•„ํ„ฐ๋ง ๋“ฑ ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค [1, 3, 4]. ์‹ค์‹œ๊ฐ„ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•œ ๋Œ€๊ทœ๋ชจ ์ ˆ์ฐจ์  ์ง€ํ˜•(Procedural terrain)์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ [6], ์ปดํ“จํŠธ ์…ฐ์ด๋”์˜ ์ถœ๋ ฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ GPU๊ฐ€ ๋ Œ๋”๋ง ๋Œ€์ƒ์„ ์ง์ ‘ ๊ฒฐ์ •ํ•˜๋Š” ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ(Indirect draws)๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค์™€ ๊ฐ€์‹œ์„ฑ ์ปฌ๋ง(Culling)์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 8]. * **์ปดํ“จํŠธ ์Šคํ‚ค๋‹ (Compute Skinning)** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ์ปดํ“จํŠธ ๋‹จ๊ณ„์—์„œ ๋ฉ”์‰ฌ ์ •์  ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฒ„ํผ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค [4]. ์ด๋ ‡๊ฒŒ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์ˆ˜์˜ ๋ Œ๋”๋ง ํŒจ์Šค์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์ค‘๋ณต ๊ณ„์‚ฐ์„ ์—†์•จ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์กฐ๋ฆฝ ๊ณผ์ •์„ ๋ณด์—ฌ์ฃผ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ ๋“ฑ์— ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค [4]. * **ํ•ต์‹ฌ ๊ตฌํ˜„ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ฐ ๋™๊ธฐํ™” ์ตœ์ ํ™”** * **์Šคํ† ๋ฆฌ์ง€ ํ…์Šค์ฒ˜(Storage textures):** ์ผ๋ฐ˜ ํ…์Šค์ฒ˜์™€ ๋‹ฌ๋ฆฌ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๋ฅผ ๋ชจ๋‘ ํ—ˆ์šฉํ•˜์—ฌ ์ปดํ“จํŠธ ์…ฐ์ด๋” ๋‚ด์—์„œ ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค [5, 9]. * **์ž‘์—… ๊ทธ๋ฃน ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(Workgroup shared memory):** ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค 10~100๋ฐฐ ๋น ๋ฅธ ์ ‘๊ทผ ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [6, 7]. * **๋ Œ๋”๋ง ๋™๊ธฐํ™” ๋ฐ ์ด์ค‘ ๋ฒ„ํผ๋ง:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๊ฐ€ ํฌํ•จ๋œ ์”ฌ์€ GPU ์ž‘์—…์ด ์ข…์†๋œ ๋ Œ๋”๋ง ํŒจ์Šค ์ด์ „์— ์™„๋ฃŒ๋˜๋„๋ก `renderAsync`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [10]. ๋˜ํ•œ ์„ฑ๋Šฅ์„ ๋†’์ด๋ ค๋ฉด ์Šคํ…Œ์ด์ง• ๋ฒ„ํผ(Staging buffers)๋ฅผ ํ™œ์šฉํ•œ ์ด์ค‘ ๋ฒ„ํผ๋ง(Double-buffering) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ํŒŒ์ดํ”„๋ผ์ธ ์ง€์—ฐ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋””์ŠคํŒจ์น˜ ๊ฐ„์— `await mapAsync()` ์‚ฌ์šฉ์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [11]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[WebGPU]], [[GPU-driven Rendering]], [[TSL (Three Shader Language)]], [[Storage Textures]] - **Projects/Contexts:** [[Three.js WebGPURenderer]], [[Native WebGPU]], [[๋Œ€๊ทœ๋ชจ ๊ฑด์„ค/BIM ํ”Œ๋žซํผ (Large-Scale Construction Viewers)]] - **Contradictions/Notes:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ํ†ตํ•œ GPU ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์€ ์••๋„์ ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ฐ€์ ธ์˜ค์ง€๋งŒ, ์ž‘์—… ๋””์ŠคํŒจ์น˜ ์‚ฌ์ด์— `await mapAsync()`๋ฅผ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด GPU ํŒŒ์ดํ”„๋ผ์ธ์ด ๋ฉˆ์ถ”๊ณ  ์ตœ๋Œ€ 60%์˜ ์‹œ๊ฐ„ ๋™์•ˆ GPU๊ฐ€ ์œ ํœด ์ƒํƒœ์— ๋น ์ง€๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ์—ญํšจ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [11]. --- *Last updated: 2026-04-19* - Raw Source: [[00_Raw/2026-04-20/์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shaders).md]] ---