--- id: [[P-Reinforce|P-Reinforce]]-AUTO-B20BA9 category: Unified confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Buffer Allocation" --- # [[Buffer Allocation|Buffer Allocation]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ๋ฒ„ํผ ํ• ๋‹น(Buffer Allocation)์€ [[WebGL|WebGL]] ๋ฐ [[WebGPU|WebGPU]] ํ™˜๊ฒฝ์—์„œ ์ •์ , ์ธ๋ฑ์Šค, ์ธ์Šคํ„ด์Šค ๋ณ€ํ™˜ ํ–‰๋ ฌ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด GPU ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ Œ๋”๋ง ์ค‘ ๋™์ ์œผ๋กœ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๊ฒฝ์šฐ ์‹ฌ๊ฐํ•œ ํ”„๋ ˆ์ž„ ์ง€์—ฐ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ๋Œ€ ์˜ˆ์ƒ์น˜์— ๋งž์ถฐ ์‚ฌ์ „์— ๋ฒ„ํผ๋ฅผ ํ• ๋‹นํ•˜๊ณ , ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜๊ตฌ์ ์ธ GPU ๋ฒ„ํผ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด 3D ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋™์  ๋ฒ„ํผ ํ™•์žฅ์˜ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ:** ์ธ์Šคํ„ด์‹ฑ([[Instancing|Instancing]]) ์‹œ์Šคํ…œ์ด ์ดˆ๊ธฐ์— ๋‚ฎ์€ ๋ฒ„ํผ ์šฉ๋Ÿ‰์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ํ™•์žฅ(Growing Buffer)ํ•˜๊ฒŒ ๋˜๋ฉด, ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ์ง€์—ฐ(์˜ˆ: ์•ฑ ์‹œ์ž‘ ์‹œ ์ˆ˜ ์ดˆ๊ฐ„์˜ ๋ฉˆ์ถค ํ˜„์ƒ) ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 2]. * **์ตœ๋Œ€ ์šฉ๋Ÿ‰ ์‚ฌ์ „ ํ• ๋‹น (Preallocation):** ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์—”์ง„ ์‹œ์ž‘ ์‹œ์ ์— ์˜ˆ์ƒ๋˜๋Š” ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜์— ๋งž์ถฐ ์ถฉ๋ถ„ํ•œ ํฌ๊ธฐ์˜ ๋ฒ„ํผ๋ฅผ ์‚ฌ์ „์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [1]. ์—ฌ์œ  ์šฉ๋Ÿ‰(Excess capacity)์„ ๋ฏธ๋ฆฌ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€๋งŒ, ์‹ค์ œ ๋ Œ๋”๋ง ์—ฐ์‚ฐ ๋น„์šฉ์—๋Š” ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค [3]. * **GPU ์˜๊ตฌ ๋ฒ„ํผ ๋ฐ ์—…๋ฐ์ดํŠธ ์ตœ์†Œํ™”:** WebGPU ํ™˜๊ฒฝ์—์„œ ๋งค ํ”„๋ ˆ์ž„ ์ˆ˜๋งŽ์€ ์ž‘์€ ๋ฒ„ํผ๋ฅผ ๋ฐ˜๋ณต ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์€ ๋น„์šฉ์ด ๋งค์šฐ ํฝ๋‹ˆ๋‹ค [4]. ๋”ฐ๋ผ์„œ `[[instancedArray|instancedArray]]`์™€ ๊ฐ™์€ ์˜๊ตฌ์ ์ธ GPU ๋ฒ„ํผ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋ ˆ์ž„ ๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋˜์–ด, ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์ฃผ์›์ธ์ธ CPU-GPU ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 5]. * **์˜ค๋ธŒ์ ํŠธ ํ’€๋ง(Object [[Pooling|Pooling]]) ํ™œ์šฉ:** ๊ฐ์ฒด๋ฅผ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ํŒŒ๊ดดํ•˜๋Š” ์ž‘์—…์€ ๋ฒ„ํผ ํ• ๋‹น ์˜ค๋ฒ„ํ—ค๋“œ์™€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)์— ์˜ํ•œ ์ผ์‹œ ์ •์ง€๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ํ• ๋‹น ์ŠคํŒŒ์ดํฌ๋ฅผ ํ”ผํ•˜๋ ค๋ฉด ๋กœ๋”ฉ ๋‹จ๊ณ„์—์„œ ํ’€์„ ๋ฏธ๋ฆฌ ๋ฐ์›Œ๋‘๋Š”(Pre-warm) ๋ฐฉ์‹์˜ ์˜ค๋ธŒ์ ํŠธ ํ’€๋ง์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [6]. * **๋ฒ„ํผ ์žฌํ• ๋‹น ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์ฃผ์˜:** WebGL ์ปจํ…์ŠคํŠธ๋Š” ๋””๋ฐ”์ด์Šค์— ๋”ฐ๋ผ ์œ ํ•œํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„(์ผ๋ฐ˜์ ์œผ๋กœ 256MB~1GB)๋ฅผ ๊ฐ€์ง€๋ฉฐ, ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋ทฐ์–ด๊ฐ€ ๋‹ค์šด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7]. ๋˜ํ•œ, ๊ธฐ์กด์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์‰ฌ ์ž์›์„ ๊น”๋”ํ•˜๊ฒŒ ํ๊ธฐ(Dispose)ํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ์—์„œ ๋™์ ์œผ๋กœ ๋ฒ„ํผ ์šฉ๋Ÿ‰์„ ๋Š˜๋ฆฌ๋ ค ํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** GPU Instancing, [[Memory Management|Memory Management]], Object Pooling, [[Garbage Collection|Garbage Collection]] - **Projects/Contexts:** Three.js, [[Needle Engine|Needle Engine]], [[WebGPU|WebGPU]] - **Contradictions/Notes:** ์†Œ์Šค์—์„œ๋Š” ์‹คํ–‰ ์ค‘ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ์‹(Dynamic Growth)์€ ์„ฑ๋Šฅ ์ง€์—ฐ๊ณผ ์˜ค๋ฅ˜๋ฅผ ๋‚ณ์œผ๋ฏ€๋กœ, ์ดˆ๊ธฐ์— ๋„‰๋„‰ํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์ „ ํ• ๋‹น(Preallocate)ํ•˜๋Š” ๋ฐฉ์‹์ด ํ›จ์”ฌ ์•ˆ์ •์ ์ด๋ผ๊ณ  ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค [1-3]. --- *Last updated: 2026-04-19* ---