--- id: P-REINFORCE-AUTO-B1DBB3 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|Compute Shaders]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shaders)๋Š” WebGPU ํ™˜๊ฒฝ์—์„œ ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, CPU์˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋˜ ๋ฌด๊ฑฐ์šด ๋ฒ”์šฉ ์—ฐ์‚ฐ ์ž‘์—…์„ GPU๋กœ ์˜คํ”„๋กœ๋“œํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค [1, 2]. GPU์˜ ์ˆ˜์ฒœ ๊ฐœ ์ฝ”์–ด๋ฅผ ํ™œ์šฉํ•œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ถฉ๋Œ ๊ฐ์ง€, ๋Œ€๊ทœ๋ชจ ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ ๋“ฑ์˜ ์ž‘์—… ์„ฑ๋Šฅ์„ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค [2]. ๋˜ํ•œ ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ(Indirect Drawing) ๊ธฐ์ˆ ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ CPU์˜ ๊ฐœ์ž… ์—†์ด ๊ฐ€์‹œ์„ฑ์„ ํŒ๋ณ„ํ•˜๊ณ  ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์™„์ „ํ•œ GPU ์ฃผ๋„ ๋ Œ๋”๋ง(GPU-driven Rendering) ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [3, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋ฒ”์šฉ GPU ์—ฐ์‚ฐ ๋ฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ถฉ๋Œ ๊ฐ์ง€, ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง, ์ ˆ์ฐจ์  ์ง€ํ˜• ์ƒ์„ฑ ๋“ฑ ๋ณต์žกํ•œ ์—ฐ์‚ฐ์„ CPU ๋Œ€์‹  GPU์—์„œ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [2, 5-8]. ๊ธฐ์กด CPU ๊ธฐ๋ฐ˜ ํŒŒํ‹ฐํด ์—…๋ฐ์ดํŠธ๋Š” ์•ฝ 5๋งŒ ๊ฐœ ์ˆ˜์ค€์—์„œ ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ, WebGPU ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ํ™œ์šฉํ•˜๋ฉด 10๋งŒ ๊ฐœ์˜ ํŒŒํ‹ฐํด์„ 2ms ์ด๋‚ด์— ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ตœ๋Œ€ 150๋ฐฐ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋‚ด๋ฉฐ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์œ ๋‹›์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [9-12]. * **GPU ์ฃผ๋„ ๋ Œ๋”๋ง ๋ฐ ์ปฌ๋ง (GPU-driven Rendering & Culling):** ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ(Indirect Drawing) ๋ช…๋ น๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ทน๋„๋กœ ํšจ์œจ์ ์ธ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [4, 13]. ์ปดํ“จํŠธ ์…ฐ์ด๋”๊ฐ€ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ์‹œ์•ผ ์ ˆ๋‘์ฒด(Frustum) ๋ฐ ์˜คํด๋ฃจ์ „(Occlusion) ์ปฌ๋ง ํŒ๋ณ„์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ํ™”๋ฉด์— ๋ณด์ด๋Š” ๊ฐ์ฒด ์ •๋ณด๋งŒ ์›์ž์  ์นด์šดํ„ฐ(Atomic Counter)๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ ๋ฒ„ํผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค [3, 4, 14]. ์ด๋ฅผ ํ†ตํ•ด CPU์™€ GPU ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ์ง€์—ฐ๊ณผ ๋ช…๋ น ๋ฐœํ–‰ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์‚ฌ์‹ค์ƒ 0์— ์ˆ˜๋ ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [4, 15]. * **๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”:** ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ์Šคํ† ๋ฆฌ์ง€ ํ…์Šค์ฒ˜(Storage Textures)๋ฅผ ํ™œ์šฉํ•ด GPU ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง๊ณผ ํšจ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค [6, 16]. ๋˜ํ•œ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋ฐ˜๋ณต ์ ‘๊ทผ ํŒจํ„ด์—์„œ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค 10~100๋ฐฐ ๋” ๋น ๋ฅธ ์ž‘์—… ๊ทธ๋ฃน ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(Workgroup Shared Memory)๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 13]. * **๊ณ ๊ธ‰ ์—ฐ์‚ฐ ๊ธฐ๋ฒ• ์ง€์›:** ์ปดํ“จํŠธ ๋‹จ๊ณ„์—์„œ ๋ฉ”์‰ฌ ์ •์  ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฒ„ํผ์— ์ €์žฅํ•ด ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต ์—ฐ์‚ฐ์„ ์ œ๊ฑฐํ•˜๋Š” '์ปดํ“จํŠธ ์Šคํ‚ค๋‹(Compute Skinning)'์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค [12]. ๋˜ํ•œ glTF ๋ชจ๋ธ์— ํ”ํžˆ ์“ฐ์ด๋Š” 8๋น„ํŠธ/16๋น„ํŠธ ์ •์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ 32๋น„ํŠธ ํฌ๋งท์œผ๋กœ ์••์ถ• ํ•ด์ œํ•˜๋Š” ์ž‘์—…๋„ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ ์™ธ๊ณฝ์—์„œ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [12]. * **๋™๊ธฐํ™” ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ ์ œ์–ด ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค:** ์—ฐ์‚ฐ ์˜์กด์„ฑ์ด ๋†’์€ ์”ฌ์„ Three.js์—์„œ ๋ Œ๋”๋งํ•  ๋•Œ๋Š” `renderAsync`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋” ํŒจ์Šค๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปดํ“จํŠธ ํŒจ์Šค๊ฐ€ ์™„์ „ํžˆ ๋๋‚˜๋„๋ก ๋™๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [17]. ์„ฑ๋Šฅ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šคํ…Œ์ด์ง• ๋ฒ„ํผ(Staging Buffers)๋ฅผ ํ™œ์šฉํ•œ ์ด์ค‘ ๋ฒ„ํผ๋ง(Double-buffering)์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ, ๋””์ŠคํŒจ์น˜ ์‚ฌ์ด์— `await mapAsync()`๋ฅผ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ GPU ํŒŒ์ดํ”„๋ผ์ธ์„ ๋ฉˆ์ถ”๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ง€์–‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [18]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** `[[WebGPU|WebGPU]]`, `[[GPU-driven Rendering|GPU-driven Rendering]]`, `Indirect Drawing`, `[[แ„‰แ…ณแ„แ…ฉแ„…แ…ตแ„Œแ…ต แ„แ…ฆแ†จแ„‰แ…ณแ„Žแ…ฅ(Storage Textures)|Storage Textures]]`, `[[Frustum Culling|Frustum Culling]]` - **Projects/Contexts:** `[[Three.js|Three.js]]`, `[[Segments.ai|Segments.ai]]`, `BIM Datasets` - **Contradictions/Notes:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ์—„์ฒญ๋‚œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๊ตฌํ˜• API์ธ WebGL์ด๋‚˜ WebGL 2์—์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์•„ WebGPU ํ™˜๊ฒฝ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [1]. ๋˜ํ•œ GPU ์ตœ์ ํ™”๋ฅผ ์ œ๋Œ€๋กœ ๋‹ค๋ฃจ์ง€ ๋ชปํ•ด ๋™๊ธฐํ™” ๋Œ€๊ธฐ(`await mapAsync()`)๋ฅผ ๋‚จ์šฉํ•  ๊ฒฝ์šฐ, ์˜คํžˆ๋ ค GPU๊ฐ€ ์ตœ๋Œ€ 60%์˜ ์‹œ๊ฐ„ ๋™์•ˆ ์œ ํœด ์ƒํƒœ(Idle)์— ๋น ์ง€๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [18]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Compute Shaders.md ---