[๊ฐœ๋…] CPU, GPU, ๊ทธ๋ฆฌ๊ณ  GPU ์›๋ฆฌ

Posted by Euisuk's Dev Log on September 11, 2021

[๊ฐœ๋…] CPU, GPU, ๊ทธ๋ฆฌ๊ณ  GPU ์›๋ฆฌ

์›๋ณธ ๊ฒŒ์‹œ๊ธ€: https://velog.io/@euisuk-chung/๊ฐœ๋…-CPU์™€-GPU

CPU์™€ GPU

๋”ฅ๋Ÿฌ๋‹๊ณผ ๋จธ์‹ ๋Ÿฌ๋‹์„ ํ•™์Šตํ•˜๊ฑฐ๋‚˜ ์ž‘์—…ํ•  ๋•Œ GPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ด์ œ ๋‹น์—ฐํ•˜๊ฒŒ ์—ฌ๊ฒจ์ง‘๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ GPU๋‚˜ CPU๋ฅผ ์†์‰ฝ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
import torch

# CUDA ์‚ฌ์šฉ ์—ฌ๋ถ€ ํ™•์ธ
USE_CUDA = torch.cuda.is_available()
print(USE_CUDA)

# device ์„ ์–ธ
device = torch.device('cuda:0' if USE_CUDA else 'cpu')

ํ•˜์ง€๋งŒ, โ€œCPU๋Š” ์ง๋ ฌ ์—ฐ์‚ฐ, GPU๋Š” ๋ณ‘๋ ฌ ์—ฐ์‚ฐ!โ€์ด๋ผ๋Š” ๊ฐ„๋‹จํ•œ ์ง€์‹๋งŒ์œผ๋กœ ์ด ๊ฐ•๋ ฅํ•œ ์—ฐ์‚ฐ ์žฅ์น˜๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” CPU์™€ GPU์˜ ์ฐจ์ด์ , GPU๊ฐ€ ๋”ฅ๋Ÿฌ๋‹์—์„œ ๊ฐ•๋ ฅํ•œ ์ด์œ , ๊ทธ๋ฆฌ๊ณ  GPU ๋‚ด๋ถ€์˜ ์—ฐ์‚ฐ ๊ตฌ์กฐ๋ฅผ ๊นŠ์ด ์žˆ๊ฒŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

CPU์™€ GPU์˜ ์ฐจ์ด์ 

CPU์™€ GPU๋Š” ๋‘˜ ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋“ค์—ฌ ์—ฐ์‚ฐ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๋‹ต์„ ๋„์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋‚˜, ์ด๋ฆ„๊ณผ ๊ตฌ์กฐ์—์„œ ์•Œ์ˆ˜ ์žˆ๋“ฏ์ด ์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜(CPU)์™€ ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์žฅ์น˜(GPU)๋Š” ์—ญํ• ์ด ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • ์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜(CPU, Central Processing Unit)
  • ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์žฅ์น˜(GPU, Grapical Processing Unit)

CPUยทGPU์™€ ๊ฐ™์€ ํ”„๋กœ์„ธ์„œ ๋‚ด๋ถ€๋Š” ํฌ๊ฒŒ ์—ฐ์‚ฐ์„ ๋‹ด๋‹นํ•˜๋Š” ์‚ฐ์ถœ์—ฐ์‚ฐ์ฒ˜๋ฆฌ์žฅ์น˜(ALU, Arithmetic Logic Unit)์™€ ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ยท์‹คํ–‰ํ•˜๋Š” ์ปจํŠธ๋กค์œ ๋‹›(CU, Control Unit), ๊ฐ์ข… ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘๋Š” ์บ์‹œ(Cache)๋กœ ๋‚˜๋‰˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. CPU๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

CPU(์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜, Central Processing Unit)๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ๋‘๋‡Œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์ œ์–ดํ•˜๋ฉฐ, ์‹œ์Šคํ…œ์˜ ๋‹ค๋ฅธ ๋ถ€ํ’ˆ์„ ์ง€ํœ˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์ˆœ์ฐจ ์ฒ˜๋ฆฌ(Sequential Processing): CPU๋Š” ์ž…๋ ฅ๋œ ๋ช…๋ น์„ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ๋ณต์žกํ•œ ์ž‘์—…์„ ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ตฌ์„ฑ ์š”์†Œ: CPU๋Š” ์—ฐ์‚ฐ์„ ๋‹ด๋‹นํ•˜๋Š” ์‚ฐ์ˆ ๋…ผ๋ฆฌ์œ ๋‹›(ALU), ๋ช…๋ น์„ ์ œ์–ดํ•˜๋Š” ์ปจํŠธ๋กค ์œ ๋‹›(CU), ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ ์ €์žฅํ•˜๋Š” ์บ์‹œ(Cache)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”์–ด ์ˆ˜์™€ ์บ์‹œ: ์ผ๋ฐ˜์ ์œผ๋กœ CPU๋Š” ์†Œ์ˆ˜์˜ ๊ฐ•๋ ฅํ•œ ์ฝ”์–ด(์˜ˆ: 4~8๊ฐœ)๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋Œ€์šฉ๋Ÿ‰ ์บ์‹œ๋ฅผ ํ†ตํ•ด ์†๋„ ๋ณ‘๋ชฉ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

I9

์ข€ ๋” ํ’€์–ด์„œ ์„ค๋ช…ํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • CPU๋Š” ์ž…์ถœ๋ ฅ์žฅ์น˜, ๊ธฐ์–ต์žฅ์น˜, ์—ฐ์‚ฐ์žฅ์น˜๋ฅผ ๋น„๋กฏํ•œ ์ปดํ“จํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ์ตœ์ƒ์œ„ ๊ณ„์ธต ์žฅ์น˜๋กœ์จ, ์ปดํ“จํ„ฐ์˜ ๋‘๋‡Œ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. CPU๋Š” ์ปดํ“จํ„ฐ ๋ฐ ์šด์˜ ์ฒด์ œ์— ํ•„์š”ํ•œ ๋ช…๋ น๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๋ชจ๋“  ํ˜„๋Œ€ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์— ํ•„์ˆ˜์ ์ธ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
  • CPU๋Š” ๋ช…๋ น์–ด๊ฐ€ ์ž…๋ ฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ˆœ์ฐจ์ ์ธ(Sequential) ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ํŠนํ™”๋œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•œ ๋ฒˆ์— ํ•œ ๊ฐ€์ง€์˜ ๋ช…๋ น์–ด๋งŒ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ๊ทธ๋ ‡๊ธฐ์— ์—ฐ์‚ฐ์„ ๋‹ด๋‹นํ•˜๋Š” ALU์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„ ํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CPU ์ œํ’ˆ๋“ค ์ค‘ Octa-core CPU์˜ ๊ฒฝ์šฐ์—๋Š” ์ฝ”์–ด ๋‹น 1๊ฐœ์”ฉ, ์ด 8๊ฐœ์˜ ALU๊ฐ€ ํƒ‘์žฌ๋˜์–ด ์žˆ๋Š” ์ œํ’ˆ์ž…๋‹ˆ๋‹ค.
  • CPU ๋‚ด๋ถ€์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์€ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ฑ„์›Œ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU์™€ ๋žจ(RAM)๊ณผ์˜ ์†๋„์ฐจ์ด๋กœ ๋ฐœํ–‰ํ•˜๋Š” ๋ณ‘๋ชฉํ˜„์ƒ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ์žฅ์น˜๋กœ์จ, CPU๊ฐ€ ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ RAM์—์„œ ๋ถˆ๋Ÿฌ์™€ CPU ๋‚ด๋ถ€ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์ž„์‹œ๋กœ ์ €์žฅํ•ด ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. CPU๊ฐ€ ๋‹จ์ผ ๋ช…๋ น์–ด๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋น„๊ฒฐ๋„ ๋ฐ”๋กœ ์ด ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. GPU๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

GPU(๊ทธ๋ž˜ํ”ฝ์ฒ˜๋ฆฌ์žฅ์น˜, Graphics Processing Unit)๋Š” ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋œ ์—ฐ์‚ฐ ์žฅ์น˜์ž…๋‹ˆ๋‹ค. ์ดˆ๊ธฐ์—๋Š” ์ฃผ๋กœ ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง์— ์‚ฌ์šฉ๋˜์—ˆ์œผ๋‚˜, ํ˜„์žฌ๋Š” ๋”ฅ๋Ÿฌ๋‹, ๊ณผํ•™ ์—ฐ์‚ฐ, ์•”ํ˜ธํ™”ํ ์ฑ„๊ตด ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ(Parallel Processing): GPU๋Š” ๋‹จ์ˆœ ์—ฐ์‚ฐ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋ฐ˜๋ณต์ ์ธ ์—ฐ์‚ฐ์—์„œ CPU๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • ๊ตฌ์„ฑ ์š”์†Œ: GPU๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์ฝ”์–ด์™€ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์•„ํ‚คํ…์ฒ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”์–ด ์ˆ˜์™€ ์„ฑ๋Šฅ: ์ตœ์‹  GPU๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋™์ผํ•œ ์ž‘์—…์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

RTX3080TI

๐Ÿ’ก ์—ฌ๊ธฐ์„œ ์ž ๊น!

๊ทธ๋ ‡๋‹ค๋ฉด โ€œ๋”ฅ๋Ÿฌ๋‹์„ ํ•™์Šตํ• ๋•Œ GPU๋ฅผ ์“ฐ๋ฉด ๋ฌด์กฐ๊ฑด ์„ฑ๋Šฅ์ด ์ข‹๋‹ค๊ทธ๋Ÿฌ๋˜๋ฐ ๊ทธ๋Ÿผ GPU๊ฐ€ CPU๋ณด๋‹ค ๋น ๋ฅด๊ณ , ์ข‹์€๊ฑฐ ์•„๋‹Œ๊ฐ€?โ€ ๋ผ๋Š” ์˜๋ฌธ์ ์„ ํ’ˆ๋Š” ์ด๋“ค์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • โ“ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฒ”์šฉ ์ปดํ“จํŒ… ์ธก๋ฉด์—์„œ, CPU๋Š” GPU๋ณด๋‹ค ํ›จ์”ฌ ๋” ์„ฑ๋Šฅ์ด ์ข‹๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CPU๋Š” GPU์—์„œ ๋ฐœ๊ฒฌ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋†’์€ ํด๋Ÿญ ์†๋„(aka ์ฃผํŒŒ์ˆ˜)๋ฅผ ๊ฐ€์ง„ ๋” ์ ์€ ์ˆ˜์˜ ํ”„๋กœ์„ธ์„œ ์ฝ”์–ด ๋กœ ์„ค๊ณ„๋˜์–ด ์ผ๋ จ์˜ ์ž‘์—…์„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ๐Ÿค” ํ•˜์ง€๋งŒ, ๋”ฅ๋Ÿฌ๋‹ ํ•™์Šต ์ธก๋ฉด์—์„œ๋Š” GPU๊ฐ€ CPU๋ณด๋‹ค ์ข‹๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GPU์— ๋Œ€ํ•ด ๋” ๋””ํ…Œ์ผํ•˜๊ฒŒ ์•Œ์•„๋ณผ๊นŒ์š”?

GPU๋Š” CPU์— ๋น„ํ•ด ํ›จ์”ฌ ๋” ๋งŽ์€ ์ˆ˜์˜ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์• ์ดˆ์— ์„ค๊ณ„๋„ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ตœ์ดˆ์˜ GPU๋Š” ์ด๋ฆ„์—์„œ ์•Œ์ˆ˜ ์žˆ๋‹ค์‹œํ”ผ ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์žฅ์น˜๋กœ์จ, ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง์˜ ์„ฑ๋Šฅ์„ ๊ฐ€์†ํ™”ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

CPU์™€ GPU์˜ ๋ฐœ์ „์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ๊ฐœ๋ฅผ ์•ˆ ํ•  ์ˆ˜๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์€๋ฐ์š”. ์•„์ฃผ ์ข‹์€ ์„ค๋ช…์ด ์žˆ์–ด์„œ ๋งํฌ ๊ฑธ์–ด๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. (๋งํฌ : ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ ์ด์•ผ๊ธฐ)

๋ณธ ์˜์ƒ์„ ์š”์•ฝํ•˜์ž๋ฉด, ๊ธฐ์กด์˜ CPU๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ํ•˜๋Š” ๋ชจ๋“  ์ผ์„ ์กฐ์ข…/ํ†ต์ œํ•ด์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ ์  ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ GUI(Graphical User Interface) ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋กœ๋“œ๊ฐ€ ์ถ”๊ฐ€ ๋˜์—ˆ๊ณ , ์ด๋Š” CPU์˜ ์„ฑ๋Šฅ ์ €ํ•˜๋กœ ์ด์–ด์ ธ CPU๊ฐ€ ์ œ๋•Œ ์ œ๋•Œ ์ค‘์š”ํ•œ ์—ฐ์‚ฐ์„ ๋ชปํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ์ž ์ด์ œ ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ฐ„๋‹จํ•œ ์—ฐ์‚ฐ๋“ค(ex. ๊ทธ๋ž˜ํ”ฝ ์ž‘์—…)์€ ๋‹ค๋ฅธ Processing Unit์—๊ฒŒ ๋งก๊ธฐ๊ณ  ๊ธฐ์กด์˜ ์ค‘์š”ํ•œ ์ผ์„ CPU์—๊ฒŒ ๋งก๊ธฐ๋„๋ก ํ•˜์ž๋Š” ์•„์ด๋””์–ด๊ฐ€ ๋‚˜์™”๊ณ  ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ GPU์˜ ํƒ„์ƒ์ด ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

CPU to GPU

์ด๋ ‡๊ฒŒ CPU์˜ ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ๊ณ„์‚ฐ์„ GPU๊ฐ€ ์˜คํ”„๋กœ๋“œํ•ด์คŒ์œผ๋กœ์จ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ™•๋ณด ํ•  ์ˆ˜ ์žˆ๋„๋กํ•จ์œผ๋กœ์จ ๊ณ„์†ํ•ด ๋ฐœ์ „๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. CPU๋Š” GPU๋ฅผ ํฌํ•จํ•œ ์‹œ์Šคํ…œ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์— ์ง€์นจ์„ ์ œ๊ณตํ•˜๋Š” ์ž‘์—…์˜ ๋‘๋‡Œ๋กœ, GPU๋Š” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์•„ํ‚คํ…์ฒ˜๋กœ ์ธํ•ด CPU๋ณด๋‹ค ์ด๋ฏธ์ง€ ๋ Œ๋”๋ง์— ์ตœ์ ํ™”๋˜์–ด ๋ฐœ์ „๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. ์š”์•ฝํ•˜์ž๋ฉด, CPU๋Š” ์–ด๋ ค์šด ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ํŠนํ™”๋œ ์†Œ์ˆ˜ ์ •์˜ˆ ์‹ฑ๊ธ€์ฝ”์–ด, ๊ทธ๋ฆฌ๊ณ  GPU๋Š” ์‰ฌ์šด ๋ฌธ์ œ๋ฅผ ๋™์‹œ์— ํ‘ธ๋Š” ๋ฐ ํŠนํ™”๋œ ์ธํ•ด์ „์ˆ  ๋ฉ€ํ‹ฐ์ฝ”์–ด๋ผ๊ณ  ๋ณด๋ฉด ๋ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด์˜ CPU๊ฐ€ ์ˆœ์ฐจ์ ์ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ํŠนํ™”๋˜์–ด ์žˆ์—ˆ๋‹ค๋ฉด, GPU๋Š” ๋ณ‘๋ ฌ์ ์ธ(Parallel) ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ํŠนํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๋กœ ์ธํ•ด ๋ฐ˜๋ณต์ ์ด๊ณ  ๋น„์Šทํ•œ ๋Œ€๋Ÿ‰์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์— ์žˆ์–ด์„œ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค. GPU๋Š” ๋” ์ž‘๊ณ  ๋ณด๋‹ค ์ „๋ฌธํ™”๋œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฝ”์–ด๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœ์„ธ์„œ์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฝ”์–ด๊ฐ€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ์ฝ”์–ด๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์˜ ๊ฒฝ์šฐ GPU๊ฐ€ ์—„์ฒญ๋‚œ ์„ฑ๋Šฅ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ CPU๊ฐ€ 6-8๊ฐœ์˜ ์ฝ”์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด, GPU๋Š” ์–ด๋–ค GPU์ธ๊ฐ€์— ๋”ฐ๋ผ ๋งŽ์ด ์ƒ์ดํ•˜์ง€๋งŒ ์ ๊ฒŒ๋Š” ์ˆ˜๋ฐฑ๊ฐœ์—์„œ ๋งŽ๊ฒŒ๋Š” ์ˆ˜์ฒœ๊ฐœ์˜ ์ฝ”์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

CPU&GPU

Source : https://kr.nvidia.com/object/what-is-gpu-computing-kr.html

์šฐ๋ฆฌ๊ฐ€ ๋”ฅ๋Ÿฌ๋‹์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„์ด ๋ฒกํ„ฐ๋‚˜ ํ–‰๋ ฌ ์—ฐ์‚ฐ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹Œ๋ฐ์š”. ์ด๋Ÿฌํ•œ ์ž˜ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๊ณ„์‚ฐ, ์ฆ‰ ๋ณ‘๋ ฌ์„ฑ์ด ๊ทน๋Œ€ํ™”๋œ ๊ณ„์‚ฐ์€ GPU๊ฐ€ ์ด๋ฏธ ํ•ด์˜ค๋˜ ์—ฐ์‚ฐ์œผ๋กœ, GPU๋ฅผ ๋”ฅ๋Ÿฌ๋‹ ์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ์œผ์จ CPU๋ณด๋‹ค ๋” ๋น ๋ฅด๊ณ  ์ตœ์ ํ™”๋œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฌ๋‹ค๊ณ  ๋ณด์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋น„๊ต: CPU์™€ GPU์˜ ์„ค๊ณ„ ์ฒ ํ•™

  • CPU๋Š” ์ „๋ฌธ๊ฐ€, GPU๋Š” ์ž‘์—… ๋ถ„๋‹ดํ˜• ๊ณต์žฅ

    CPU๋Š” ๋ณต์žกํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ๊ณ ์†์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒ๋Šฅ ์ „๋ฌธ๊ฐ€์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด GPU๋Š” ๋งŽ์€ ์ผ๊พผ์ด ํ•œ ๊ฐ€์ง€ ์ž‘์—…์„ ๋‚˜๋ˆ„์–ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณต์žฅ๊ณผ ๊ฐ™์•„ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • CPU vs GPU ์•„ํ‚คํ…์ฒ˜ ๋น„๊ต

ํŠน์ง• CPU GPU
์ฃผ์š” ์—ญํ•  ๋ฒ”์šฉ ์ฒ˜๋ฆฌ(์šด์˜์ฒด์ œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ) ๋ณ‘๋ ฌ ์—ฐ์‚ฐ(๊ทธ๋ž˜ํ”ฝ, ๋”ฅ๋Ÿฌ๋‹ ๋“ฑ)
์ฝ”์–ด ์ˆ˜ ์†Œ์ˆ˜(4~8๊ฐœ) ๋‹ค์ˆ˜(์ˆ˜๋ฐฑ~์ˆ˜์ฒœ ๊ฐœ)
์ฒ˜๋ฆฌ ์†๋„ ๊ณ ์† ์‹ฑ๊ธ€ ์—ฐ์‚ฐ ๋‹ค๋Ÿ‰์˜ ์—ฐ์‚ฐ์„ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ
๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ๋Œ€์šฉ๋Ÿ‰ ์บ์‹œ ๊ณ ๋Œ€์—ญํญ ๋ฉ”๋ชจ๋ฆฌ
์—ฐ์‚ฐ ์ตœ์ ํ™” ์ˆœ์ฐจ ์—ฐ์‚ฐ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ

์‹คํ—˜ํ•ด๋ด…์‹œ๋‹ค!

๋‹ค์Œ์€ ์†๋„ ๋น„๊ต๋ฅผ ์œ„ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋กœ ์—ฐ์‚ฐ ๋ฐ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋น„๊ตํ•ด ๋ณธ ๊ฒƒ์ธ์š”.

์„ฑ๋Šฅ๋น„๊ต

๋‹จ์ˆœํ•œ ์ƒ์ˆ˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ฐ๊ฐ CPU๋Š” 5.84ms, GPU๋Š” 42.8ms๊ฐ€ ๋‚˜์˜จ ๊ฒƒ์„ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” CPU๊ฐ€ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•จ์— ์žˆ์–ด์„œ ๋” ์šฐ์ˆ˜ํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— 10000 by 10000 ํ–‰๋ ฌ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ๋Š” CPU๋Š” 13.7s, GPU๋Š” 785ms์ธ ๊ฒƒ์„ ํ†ตํ•ด GPU๊ฐ€ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์„ ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ๋” ๋น ๋ฅธ ๊ฒƒ์„ ์ง์ ‘์ ์œผ๋กœ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GPU์˜ ์‹ค์ „ ์‘์šฉ

  • GPU๋Š” ์•„๋ž˜ ์šฉ๋„๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
  1. ๋”ฅ๋Ÿฌ๋‹ ํ•™์Šต : ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ ์ˆ˜์‹ญ์–ต ๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด GPU์˜ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. GPU์˜ ํ…์„œ ์ฝ”์–ด๋Š” ์ด๋Ÿฌํ•œ ํ•™์Šต ์ž‘์—…์„ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง : GPU๋Š” 3D ๊ทธ๋ž˜ํ”ฝ์—์„œ ๋ชจ๋ธ ๋ณ€ํ™˜, ์กฐ๋ช… ๊ณ„์‚ฐ, ํ…์Šค์ฒ˜ ๋งคํ•‘ ๋“ฑ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณ ํ’ˆ์งˆ ๊ทธ๋ž˜ํ”ฝ์„ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์•”ํ˜ธํ™”ํ ์ฑ„๊ตด : GPU๋Š” ๋ณ‘๋ ฌ๋กœ ์ˆ˜๋งŽ์€ ํ•ด์‹œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋น„ํŠธ์ฝ”์ธ๊ณผ ๊ฐ™์€ ์•”ํ˜ธํ™”ํ ์ฑ„๊ตด ์ž‘์—…์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. SHA-256 ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•ฉ๋‹ˆ๋‹ค.

GPU ๋‚ด๋ถ€ ๊ตฌ์กฐ ์‚ดํŽด๋ณด๊ธฐ

์ตœ์‹  GPU์˜ ๋‚ด๋ถ€๋Š” ์ˆ˜๋งŽ์€ ๊ธฐ์ˆ ์  ํ˜์‹ ๊ณผ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์˜ ๋น„๋ฐ€์ด ๋‹ด๊ธด ๋ณต์žกํ•œ ์„ค๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜: How do Graphics Cards Work? Exploring GPU Architecture(๋งํฌ)

NVIDIA RTX 3090 GPU๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜์—ฌ ์„ธ๋ถ€์ ์œผ๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ GPU๋Š” ์•„๋ž˜ 3๊ฐ€์ง€ ์ฝ”์–ด๋กœ ๊ตฌ์„ฑ์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜: How do Graphics Cards Work? Exploring GPU Architecture(๋งํฌ)

  • CUDA Cores
  • Tensor Cores
  • Ray Tracing Cores

1. ์ฝ”์–ด์™€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ

CUDA ์ฝ”์–ด๋Š” GPU์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. RTX 3090์—๋Š” 10,496๊ฐœ์˜ CUDA ์ฝ”์–ด๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด ์ฝ”์–ด๋“ค์€ ๊ฐ„๋‹จํ•œ ์‚ฐ์ˆ  ์—ฐ์‚ฐ(๋ง์…ˆ, ๊ณฑ์…ˆ ๋“ฑ)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜: How do Graphics Cards Work? Exploring GPU Architecture(๋งํฌ)

  • CUDA ์ฝ”์–ด๋ž€? (๋ฒ”์šฉ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ ์œ ๋‹›)

    • ๊ธฐ๋ณธ ๊ฐœ๋…: CUDA ์ฝ”์–ด๋Š” GPU์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์—ฐ์‚ฐ ์œ ๋‹›์œผ๋กœ, ์ผ๋ฐ˜์ ์ธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ(๋ง์…ˆ, ๊ณฑ์…ˆ ๋“ฑ)์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ์ž‘๋™ ๋ฐฉ์‹: ๋ชจ๋“  CUDA ์ฝ”์–ด๋Š” ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋ฅผ ๋ฐ›์•„ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

      • ์˜ˆ๋ฅผ ๋“ค์–ด, 3D ๊ทธ๋ž˜ํ”ฝ์—์„œ ๋ฌผ์ฒด์˜ ๊ฐ ์ (vertex)์„ ์ด๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ((x+dx, y+dy, z+dz)$ ์—ฐ์‚ฐ์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง•: ๋ฒ”์šฉ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๊ฒŒ์ž„ ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง, ๋ฐ์ดํ„ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ: ๋‹ค์ˆ˜์˜ ์ผ๊พผ์ด ๊ฐ์ž ๋…๋ฆฝ์ ์œผ๋กœ ์ผํ•˜๋Š” ๊ณต์žฅ.

    • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์™€ SIMD(Single Instruction Multiple Data)

      • GPU๋Š” SIMD ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ์— ๋™์‹œ์— ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
      • ์˜ˆ๋ฅผ ๋“ค์–ด, 3D ๊ทธ๋ž˜ํ”ฝ์—์„œ ๋ฌผ์ฒด์˜ ๋ชจ๋“  ์ (vertex)์„ ํŠน์ • ์œ„์น˜๋กœ ์ด๋™์‹œํ‚ค๋Š” ์—ฐ์‚ฐ์—์„œ GPU๋Š” ๋ชจ๋“  ์ ์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ณ„์‚ฐ์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์˜ˆ์‹œ

      • 3D ๋ชจ๋ธ์˜ ๊ฐ ์ ์˜ ์ขŒํ‘œ(x, y, z)๋ฅผ ์ด๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด (x+dx,y+dy,z+dz)(x + dx, y + dy, z + dz)(x+dx,y+dy,z+dz)๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์„ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ˆ˜์ฒœ ๊ฐœ์˜ ์ ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด CPU๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • GPU์˜ ์ฝ”์–ด ๋ฐฐ์น˜

      • CUDA ์ฝ”์–ด๋Š” SM, Streaming Multiprocessor๋ผ๋Š” ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ž…๋‹ˆ๋‹ค.
      • SM์€ ์—ฌ๋Ÿฌ ์ฝ”์–ด๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ๊ฐ SM ๋‚ด์—์„œ ์Šค๋ ˆ๋“œ(threads)๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

    ์ถœ์ฒ˜: How do Graphics Cards Work? Exploring GPU Architecture(๋งํฌ)

    NVIDIA์˜ GA102 GPU ์•„ํ‚คํ…์ฒ˜๋Š” RTX 3080, 3090, 3080 Ti, 3090 Ti์— ์‚ฌ์šฉ๋˜๋ฉฐ, ๋™์ผํ•œ ์„ค๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    • ๊ทธ๋Ÿฌ๋‚˜ ์ด๋“ค์ด ๋‹ค๋ฅธ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ด์œ ๋Š” ์ œ์กฐ ๊ณต์ •๊ณผ ์นฉ์˜ ๊ฒฐํ•จ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ์žˆ์Šต๋‹ˆ๋‹ค.๐Ÿ˜ฎ๐Ÿ˜ฎ
  • ๋ชจ๋“  ์นด๋“œ๊ฐ€ ๋™์ผํ•œ GA102 ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ œ์กฐ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฏธ์„ธํ•œ ๊ฒฐํ•จ(ํŒจํ„ฐ๋‹ ์˜ค๋ฅ˜, ๋จผ์ง€ ์ž…์ž ๋“ฑ)์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ฝ”์–ด ์ค‘ ์ผ๋ถ€๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒฐํ•จ์ด ์žˆ๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ(SM)๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์ฝ”์–ด๋งŒ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

    ์ถœ์ฒ˜: How do Graphics Cards Work? Exploring GPU Architecture(๋งํฌ)

  • GPU ์นฉ์€ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ฝ”์–ด ์ˆ˜์™€ ์„ฑ๋Šฅ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜(binning)๋ฉ๋‹ˆ๋‹ค.
  • RTX 3090 Ti๋Š” ์™„๋ฒฝํ•œ ์นฉ์œผ๋กœ ๋ชจ๋“  10,752๊ฐœ์˜ ์ฟ ๋‹ค ์ฝ”์–ด๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉฐ, RTX 3080์€ 8,704๊ฐœ์˜ ์ฟ ๋‹ค ์ฝ”์–ด๋งŒ ํ™œ์„ฑํ™”๋œ ๊ฒฐํ•จ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
  • ์•„๋ž˜๋Š” ์ด๋ฅผ ์ •๋ฆฌํ•œ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค:

    ๋ชจ๋ธ ํ™œ์„ฑํ™”๋œ ์ฟ ๋‹ค ์ฝ”์–ด ์ˆ˜ ๋น„ํ™œ์„ฑํ™”๋œ SM ์ˆ˜ ๋น„๊ณ 
    RTX 3090 Ti 10,752 0 ์™„๋ฒฝํ•œ ์นฉ
    RTX 3090 10,496 2 ์ผ๋ถ€ ๊ฒฐํ•จ ์ฒ˜๋ฆฌ
    RTX 3080 Ti 10,240 4 ์ค‘๊ฐ„ ์„ฑ๋Šฅ
    RTX 3080 8,704 16 ๋” ๋งŽ์€ ๊ฒฐํ•จ ์ฒ˜๋ฆฌ

2. ํ…์„œ ์ฝ”์–ด์™€ AI ๊ฐ€์†

ํ…์„œ ์ฝ”์–ด(Tensor Core)๋Š” ๋”ฅ๋Ÿฌ๋‹๊ณผ ๊ฐ™์€ ๊ณ ์„ฑ๋Šฅ ๊ณ„์‚ฐ ์ž‘์—…์— ํŠนํ™”๋œ GPU์˜ ์—ฐ์‚ฐ ์žฅ์น˜์ž…๋‹ˆ๋‹ค.

  • ํ…์„œ ์ฝ”์–ด๋Š” ํ–‰๋ ฌ ์—ฐ์‚ฐ(Matrix Math)์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜์—ฌ ์‹ ๊ฒฝ๋ง์˜ ํ•™์Šต ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜: Nvidia ๊ณต์‹ ์‚ฌ์ดํŠธ (Nvidia.com)

  • (์™ผ์ชฝ) ํ–‰๋ ฌ ๋‚ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ํŒŒ์Šค์นผ ์•„ํ‚คํ…์ฒ˜, (์˜ค๋ฅธ์ชฝ) ์ „์ฒด ์ž‘์—…์„ ํ•œ ๋ฒˆ์— ๋๋‚ด๋Š” ๋ณผํƒ€ ํ…์„œ ์•„ํ‚คํ…์ฒ˜
  • Tensor ์ฝ”์–ด๋ž€? (๋”ฅ๋Ÿฌ๋‹ ๊ฐ€์†๊ธฐ)

    • ๊ธฐ๋ณธ ๊ฐœ๋…: Tensor ์ฝ”์–ด๋Š” GPU์—์„œ ๋”ฅ๋Ÿฌ๋‹ ์—ฐ์‚ฐ์„ ๊ฐ€์†ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์œ ๋‹›์œผ๋กœ, ๋Œ€๊ทœ๋ชจ ํ–‰๋ ฌ ์—ฐ์‚ฐ(Matrix Multiplication)์— ํŠนํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ž‘๋™ ๋ฐฉ์‹: ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ ์ฃผ๊ธฐ์—์„œ D=Aร—B+CD = A \times B + CD=Aร—B+C์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      • FP16(16-bit ๋ถ€๋™์†Œ์ˆ˜์ )์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง•:

      • ํ•œ ๋ฒˆ์— 4x4 ๋˜๋Š” 8x8 ํ–‰๋ ฌ์„ ๋ณ‘๋ ฌ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ, ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ํ•™์Šต ์†๋„๋ฅผ ๋น„์•ฝ์ ์œผ๋กœ ๋†’์ž…๋‹ˆ๋‹ค.
      • ๋”ฅ๋Ÿฌ๋‹์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” CNN(Convolutional Neural Network) ๋˜๋Š” Transformer ๋ชจ๋ธ์— ์ตœ์ ํ™”.
  • ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ: AI ํ•™์Šต์„ ์œ„ํ•œ ์ „๋ฌธ ์ž‘์—…๋ฐ˜. ํ–‰๋ ฌ ์—ฐ์‚ฐ์ด๋ผ๋Š” ํฐ ์ž‘์—…์„ ๋งก์•„ GPU ์ „์ฒด์˜ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜: How do Graphics Cards Work? Exploring GPU Architecture(๋งํฌ)

  • GPU์™€ AI

    • ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ ์ˆ˜์ฒœ ๊ฐœ์˜ ํ–‰๋ ฌ ๊ณฑ์…ˆ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
    • GPU์˜ ํ…์„œ ์ฝ”์–ด๋Š” ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ AI ๋ชจ๋ธ์˜ ํ•™์Šต ์†๋„๋ฅผ CPU ๋Œ€๋น„ 10 ~ 100๋ฐฐ ์ด์ƒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ™œ์šฉ ์‚ฌ๋ก€

    • ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๋ชจ๋ธ(์˜ˆ: ChatGPT)
    • ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ชจ๋ธ(์˜ˆ: Stable Diffusion)
    • ์Œ์„ฑ ์ธ์‹ ๋ฐ ์ƒ์„ฑ ๋ชจ๋ธ

์ถœ์ฒ˜: Nvidia ๊ณต์‹ ์‚ฌ์ดํŠธ (Nvidia.com)


3. ๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ ์ฝ”์–ด

๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ ์ฝ”์–ด๋Š” ๋น›์˜ ๋ฐ˜์‚ฌ, ๊ตด์ ˆ, ๊ทธ๋ฆผ์ž ์ƒ์„ฑ ๋“ฑ์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜์—ฌ 3D ํ™˜๊ฒฝ์—์„œ ๋งค์šฐ ์‚ฌ์‹ค์ ์ธ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ์ด๋ž€?

    • ๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ์€ ๊ด‘์„ ์ด ๋ฌผ์ฒด์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜์—ฌ ํ˜„์‹ค๊ฐ ์žˆ๋Š” ๊ทธ๋ž˜ํ”ฝ์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋น›์ด ์œ ๋ฆฌ์ž”์„ ํ†ต๊ณผํ•˜๋ฉด์„œ ๊ตด์ ˆ๋˜๊ณ  ์ฃผ๋ณ€ ๋ฌผ์ฒด์— ๋ฐ˜์‚ฌ๋˜๋Š” ํšจ๊ณผ๋ฅผ GPU๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  • Ray Tracing ์ฝ”์–ด๋ž€? (์‚ฌ์‹ค์ ์ธ ๊ทธ๋ž˜ํ”ฝ ์ƒ์„ฑ๊ธฐ)

    • ๊ธฐ๋ณธ ๊ฐœ๋…: Ray Tracing ์ฝ”์–ด๋Š” GPU์—์„œ ๊ด‘์„ (ray)๊ณผ ๋ฌผ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ(๋ฐ˜์‚ฌ, ๊ตด์ ˆ, ๊ทธ๋ฆผ์ž ๋“ฑ)์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜๋Š” ์œ ๋‹›์ž…๋‹ˆ๋‹ค.
    • ์ž‘๋™ ๋ฐฉ์‹: ๋น›์˜ ๊ฒฝ๋กœ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜์—ฌ ๊ด‘์„ ์ด ๋ฌผ์ฒด์— ๋ถ€๋”ชํž ๋•Œ ๋ฐ˜์‚ฌ๋˜๊ฑฐ๋‚˜ ๊ตด์ ˆ๋˜๋Š” ํšจ๊ณผ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

      • ๊ฐ ๊ด‘์„ ๊ณผ ๋ฌผ์ฒด์˜ ๊ต์ฐจ์ ์„ ์ฐพ์•„๋‚ด๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง•:

      • ์‚ฌ์‹ค์ ์ด๊ณ  ์ƒ๋™๊ฐ ์žˆ๋Š” ๊ทธ๋ž˜ํ”ฝ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ Œ๋”๋ง ๊ฐ€๋Šฅ.
      • Cyberpunk 2077 ๊ฐ™์€ ๊ณ ํ’ˆ์งˆ ๊ฒŒ์ž„์ด๋‚˜ ์˜ํ™” ์ œ์ž‘์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ.
  • ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ: 3D ๊ทธ๋ž˜ํ”ฝ์˜ ๋น› ์ „๋ฌธ ๋””์ž์ด๋„ˆ. ํ™”๋ฉด์— ๋น›์ด ๋ฐ˜์‚ฌ๋˜๋Š” ๋ชจ์Šต์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

์ถœ์ฒ˜: How do Graphics Cards Work? Exploring GPU Architecture(๋งํฌ)

  • ์‘์šฉ ๋ถ„์•ผ
    • ์‹ค์‹œ๊ฐ„ ๊ทธ๋ž˜ํ”ฝ(๊ฒŒ์ž„: Cyberpunk 2077, Minecraft RTX)
    • 3D ๋ Œ๋”๋ง ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜
    • ์˜ํ™” ๋ฐ ๊ด‘๊ณ  ์ œ์ž‘

์š”์•ฝ

์•„๋ž˜๋Š” CUDA ์ฝ”์–ด, Tensor ์ฝ”์–ด, ๊ทธ๋ฆฌ๊ณ  Ray Tracing ์ฝ”์–ด์˜ ์ฐจ์ด๋ฅผ ํ•œ ํ‘œ์— ์ •๋ฆฌํ•˜๊ณ , ๊ฐ๊ฐ์˜ ๊ฐœ๋…์„ ํ•œ์ค„๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค..

ํŠน์ง• CUDA ์ฝ”์–ด(CUDA Core) Tensor ์ฝ”์–ด(Tensor Core) Ray Tracing ์ฝ”์–ด(Ray Tracing Core)
์—ญํ•  ๋ฒ”์šฉ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ ํ–‰๋ ฌ ์—ฐ์‚ฐ ๋ฐ ๋”ฅ๋Ÿฌ๋‹ ๊ฐ€์†ํ™” ์‹ค์‹œ๊ฐ„ ๋น› ์ถ”์  ๊ณ„์‚ฐ์œผ๋กœ ์‚ฌ์‹ค์  ๊ทธ๋ž˜ํ”ฝ ์ƒ์„ฑ
์—ฐ์‚ฐ ์œ ํ˜• ์Šค์นผ๋ผ ์—ฐ์‚ฐ (๋‹จ์ผ ๊ฐ’์˜ ๋ง์…ˆ, ๊ณฑ์…ˆ ๋“ฑ) ํ–‰๋ ฌ ์—ฐ์‚ฐ (๋‹ค์ค‘ ๊ฐ’์˜ ๊ณฑ์…ˆ ๋ฐ ๋ง์…ˆ) ๊ด‘์„ -๋ฌผ์ฒด ๊ต์ฐจ ๋ฐ ๋น›์˜ ๋ฐ˜์‚ฌ, ๊ตด์ ˆ ๊ณ„์‚ฐ
์ž‘๋™ ๋ฐฉ์‹ ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์ˆซ์ž ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ ํ•œ ๋ฒˆ์— 4x4 ๋˜๋Š” 8x8 ํ–‰๋ ฌ ๊ณ„์‚ฐ ๋ณต์žกํ•œ ๊ด‘ํ•™ ์—ฐ์‚ฐ์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌ
์—ฐ์‚ฐ ์„ฑ๋Šฅ ๋ฒ”์šฉ์ ์œผ๋กœ ๋™์ž‘, ๋Œ€๊ทœ๋ชจ ์—ฐ์‚ฐ์—์„œ ํšจ์œจ์  ๋”ฅ๋Ÿฌ๋‹ ํ•™์Šต์—์„œ ์ดˆ๊ณ ์† ์„ฑ๋Šฅ ์ œ๊ณต ์‚ฌ์‹ค์ ์ธ ๋น›์˜ ๋ฐ˜์‚ฌ ๋ฐ ๊ทธ๋ฆผ์ž ํ‘œํ˜„ ๊ฐ€๋Šฅ
ํ™œ์šฉ ๋ถ„์•ผ ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง, ๊ธฐ๋ณธ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ ๋”ฅ๋Ÿฌ๋‹ ํ•™์Šต ๋ฐ ์ถ”๋ก , AI ๋ชจ๋ธ ์‹ค์‹œ๊ฐ„ ๊ทธ๋ž˜ํ”ฝ, 3D ์• ๋‹ˆ๋ฉ”์ด์…˜, ์˜ํ™” ์ œ์ž‘
๋ฐ์ดํ„ฐ ์ •๋ฐ€๋„ FP32(32-bit ๋ถ€๋™์†Œ์ˆ˜์ ), INT32 FP16(16-bit ๋ถ€๋™์†Œ์ˆ˜์ ), INT8 ๊ด‘ํ•™ ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ์—ฐ์‚ฐ
ํšจ์œจ์„ฑ ๋‹จ์ˆœ ์—ฐ์‚ฐ์—์„œ ๊ฐ•๋ ฅ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์—์„œ ๊ทน๋„๋กœ ํšจ์œจ์  ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์‹ค์„ฑ ๊ทน๋Œ€ํ™”, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ํšจ์œจ์ 
  • CUDA ์ฝ”์–ด: ๊ฒŒ์ž„์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ˜๋ณต์ ์ธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๊ทธ๋ž˜ํ”ฝ๊ณผ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹น.
  • Tensor ์ฝ”์–ด: AI์™€ ๋”ฅ๋Ÿฌ๋‹ ์ž‘์—…์—์„œ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ•™์Šต๊ณผ ์ถ”๋ก ์„ ๊ฐ€์†.
  • Ray Tracing ์ฝ”์–ด: ์‚ฌ์‹ค์ ์ธ ์กฐ๋ช…๊ณผ ๊ทธ๋ฆผ์ž๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ชฐ์ž…๊ฐ์„ ๋”ํ•จ.

GPU์˜ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ: ๋”ฅ๋Ÿฌ๋‹์—์„œ์˜ ํ™œ์šฉ

GPU๋Š” ๋ฒกํ„ฐ ๋ฐ ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์ด๋Š” ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ํ•™์Šต๊ณผ ์ถ”๋ก ์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

  1. ๋ฒกํ„ฐ ์—ฐ์‚ฐ์˜ ๋ณ‘๋ ฌํ™”

๋”ฅ๋Ÿฌ๋‹์˜ ๋งŽ์€ ๊ณ„์‚ฐ์€ ๋ฒกํ„ฐ(์ˆซ์ž์˜ ์ผ๋ ฌ ๋ฐฐ์—ด)๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. GPU๋Š” ๋ฒกํ„ฐ์˜ ๊ฐ ์š”์†Œ๋ฅผ ๊ฐœ๋ณ„ ์ฝ”์–ด์— ํ• ๋‹นํ•˜์—ฌ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ์‹œ:

    ๋ฒกํ„ฐย A=[1,2,3]\text{๋ฒกํ„ฐ A} = [1, 2, 3]๋ฒกํ„ฐย A=[1,2,3], ๋ฒกํ„ฐย B=[4,5,6]\text{๋ฒกํ„ฐ B} = [4, 5, 6]๋ฒกํ„ฐย B=[4,5,6]์ผ ๋•Œ, A+B=[5,7,9]\text{A} + \text{B} = [5, 7, 9]A+B=[5,7,9].

    ์ด ๊ณ„์‚ฐ์—์„œ GPU๋Š” ๊ฐ ์ฝ”์–ด๊ฐ€ A์™€ B์˜ ํ•œ ์š”์†Œ๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


  1. ํ–‰๋ ฌ ๊ณฑ์…ˆ์˜ ๋ณ‘๋ ฌํ™”

๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ํ•ต์‹ฌ ์—ฐ์‚ฐ์ธ ํ–‰๋ ฌ ๊ณฑ์…ˆ๋„ GPU์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋•๋ถ„์— ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ์‹œ:

    ๋‘ ํ–‰๋ ฌ AAA์™€ BBB๋ฅผ ๊ณฑํ•˜์—ฌ ํ–‰๋ ฌ CCC๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค. GPU๋Š” ํ–‰๋ ฌ CCC์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

    ํ–‰๋ ฌ ๊ณฑ์…ˆ ๊ณต์‹:

    C[i][j]=โˆ‘kA[i][k]ร—B[k][j]C[i][j] = \sum_k A[i][k] \times B[k][j]C[i][j]=โˆ‘kโ€‹A[i][k]ร—B[k][j]

    ๊ฐ C[i][j]C[i][j]C[i][j] ๊ฐ’์€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, GPU์˜ ์ฝ”์–ด๊ฐ€ ๊ฐ ๊ณ„์‚ฐ์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ๋”ฅ๋Ÿฌ๋‹์—์„œ์˜ ์‘์šฉ

    • ๋‰ด๋Ÿฐ ๊ฐ„์˜ ๊ฐ€์ค‘์น˜ ๊ณ„์‚ฐ
    • ๋ฐ์ดํ„ฐ์˜ ์ „๋ฐฉ ์ „ํŒŒ(Forward Propagation)
    • ์—ญ์ „ํŒŒ(Back Propagation) ๋ฐ ๊ทธ๋ž˜๋””์–ธํŠธ ๊ณ„์‚ฐ

GPU ์•„ํ‚คํ…์ฒ˜์˜ ์œ ์—ฐ์„ฑ: SIMD์—์„œ SIMT๋กœ

์ „ํ†ต์ ์ธ GPU๋Š” SIMD(Single Instruction Multiple Data) ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, ์ตœ์‹  GPU๋Š” ๋” ์œ ์—ฐํ•œ SIMT(Single Instruction Multiple Threads) ๊ตฌ์กฐ๋กœ ๋ฐœ์ „ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • SIMD vs SIMT

    • SIMD(Single Instruction Multiple Data): ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ์— ๋™์‹œ์— ์ ์šฉ.
      • ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ผํ•œ ์†๋„๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•จ.
    • SIMT(Single Instruction Multiple Threads): ์Šค๋ ˆ๋“œ ๊ฐ„ ๋™๊ธฐํ™” ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ.
      • ์กฐ๊ฑด๋ฌธ ๋“ฑ์œผ๋กœ ์ธํ•œ ๋ถ„๊ธฐ(branch)๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ์ ํ•ฉ.
  • SIMT์˜ ์žฅ์ 

    • ์ฝ”๋“œ ์œ ์—ฐ์„ฑ ์ฆ๊ฐ€: ์กฐ๊ฑด๋ฌธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ.
    • ๊ณ„์‚ฐ ํšจ์œจ์„ฑ ํ–ฅ์ƒ: ๋ณ‘๋ ฌ ์—ฐ์‚ฐ ์„ฑ๋Šฅ ๊ทน๋Œ€ํ™”.

๊ฒฐ๋ก 

GPU๋Š” ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์— ํŠนํ™”๋œ ๊ตฌ์กฐ์™€ ์ˆ˜๋งŽ์€ ์ฝ”์–ด๋ฅผ ํ†ตํ•ด CPU๋ณด๋‹ค ๋Œ€๊ทœ๋ชจ ์—ฐ์‚ฐ์—์„œ ํ›จ์”ฌ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฅ๋Ÿฌ๋‹, ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง, ์•”ํ˜ธํ™”ํ ์ฑ„๊ตด ๋“ฑ ๋‹ค์–‘ํ•œ ์‘์šฉ ๋ถ„์•ผ์—์„œ GPU๋Š” ์—†์–ด์„œ๋Š” ์•ˆ ๋  ์กด์žฌ์ž…๋‹ˆ๋‹ค.

GPU์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ์™€ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋ฉด ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์ตœ์ ํ™”ํ•˜๊ฑฐ๋‚˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ƒ์œผ๋กœ ์˜ค๋Š˜ ํฌ์ŠคํŒ… ๋งˆ์น˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ^~^

๊ธด ๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!



-->