GPU: 수천 개의 작은 일꾼
4K 모니터에는 약 830만 개의 픽셀이 있다. 게임이 1초에 120장면을 그리려면 1초에 10억 개 가까운 픽셀의 색을 계산해야 한다. 아무리 빠른 요리사(CPU)라도 혼자서는 감당할 수 없다. 그래서 탄생한 것이 단순한 일을 수천 명이 동시에 처리하는 GPU다. 그리고 이 “대군의 힘”은 오늘날 인공지능 혁명의 엔진이 되었다.
- CPU와 GPU가 서로 다른 일에 맞춰 설계된 이유를 설명한다.
- 픽셀 칠하기 경주로 대량 병렬 처리의 위력과 조건을 체험한다.
- 3D 그래픽이 삼각형 → 래스터화 → 픽셀 셰이딩을 거쳐 화면이 되는 과정을 안다.
- 셰이더가 “모든 픽셀에서 동시에 실행되는 작은 프로그램”임을 이해한다.
- 인공지능 계산의 핵심인 행렬 곱셈이 왜 GPU에 잘 맞는지 안다.
소수 정예 vs 대군
5장에서 CPU가 빨라지기 위해 파이프라인, 분기 예측, 비순차 실행 같은 정교한 장치를 갖췄다고 했다. 이런 장치들은 칩 면적을 많이 차지한다. CPU 코어 하나는 무엇이든 잘하는 만능 요리사다. 복잡한 판단, 갈림길 많은 코드, 순서대로 해야 하는 일에 강하다.
GPU(Graphics Processing Unit)는 반대 방향을 택했다. 분기 예측 같은 똑똑한 장치를 거의 빼고, 남은 면적에 단순한 계산 유닛을 수천 개 채웠다. 일꾼 하나하나는 느리고 단순하지만, 같은 일을 수천 개 데이터에 동시에 하는 데는 압도적이다.
CPU: 셰프 몇 명
- 코어 8~24개, 각각 매우 빠르고 똑똑함
- 복잡한 판단·분기에 강함
- 지연 시간(한 일의 빠르기) 중심
- 운영체제, 브라우저, 게임 로직
GPU: 보조 요리사 수천 명
- 연산 유닛 수천~1만 개 이상, 각각 단순함
- 같은 계산을 많은 데이터에 반복할 때 강함
- 처리량(전체 양) 중심
- 그래픽, 영상, 인공지능, 과학 계산
미슐랭 셰프 8명과 견습생 2,000명이 있다. 새로운 요리를 개발하거나 까다로운 소스를 만드는 일은 셰프들이 훨씬 잘한다. 하지만 감자 1만 개를 깎는 일이라면? 견습생 2,000명이 한 사람당 5개씩 깎으면 순식간이다. 단, 감자 깎기처럼 서로 독립적인 같은 일이어야 한다. “앞 사람이 다 깎아야 다음 사람이 시작할 수 있는 일”이라면 견습생이 아무리 많아도 소용없다(5장의 암달의 법칙).
픽셀 칠하기 경주
화면의 각 픽셀 색은 대부분 다른 픽셀과 상관없이 계산할 수 있다. 그래서 그래픽은 병렬 처리에 딱 맞는 일이다. 같은 그림을 CPU와 GPU가 칠하는 경주를 해 보자. 화면용으로 아주 느리게 재생하지만 비율은 실제와 비슷하게 맞췄다.
CPU 8코어 vs GPU 2048개 유닛
3D가 화면이 되기까지: 그래픽 파이프라인
게임 속 캐릭터, 건물, 나무는 모두 수많은 작은 삼각형으로 이루어져 있다. 삼각형은 꼭짓점 세 개로 정해지는 가장 단순한 면이라 계산하기 쉽다. 요즘 게임의 한 장면에는 삼각형이 수백만 개 들어간다. GPU는 이 삼각형들을 다음 단계로 처리한다.
- 꼭짓점 처리: 각 꼭짓점의 3D 좌표를 카메라 시점에 맞춰 회전·이동시키고 2D 화면 좌표로 바꾼다(원근 투영).
- 래스터화: 화면에 투영된 삼각형이 어느 픽셀들을 덮는지 알아낸다.
- 픽셀 셰이딩: 덮인 픽셀마다 색을 계산한다. 텍스처(무늬 그림)를 입히고 조명과 그림자를 계산한다.
- 합치기: 가까운 물체가 먼 물체를 가리도록 깊이를 비교하고, 최종 색을 화면 메모리에 쓴다.
래스터화를 직접 해 보자. 삼각형의 꼭짓점 세 개를 끌어 옮기면, GPU가 하듯이 각 픽셀의 중심이 삼각형 안에 있는지 검사해 칠한다. 꼭짓점마다 다른 색을 주면 안쪽 픽셀은 거리에 따라 색을 섞는다.
래스터화: 꼭짓점을 끌어 보세요
셰이더: 모든 픽셀에서 동시에 도는 작은 프로그램
픽셀 셰이딩 단계에서 각 픽셀의 색을 정하는 짧은 프로그램을 셰이더(shader)라 한다. 셰이더는 “나는 화면의 (x, y) 픽셀이다. 내 색은 무엇인가?”라는 질문에만 답한다. GPU는 같은 셰이더 코드를 화면의 수백만 픽셀에서 동시에 실행한다. 아래 셰이더를 바꿔 보자.
픽셀 셰이더 놀이터
GPU는 일꾼(스레드)을 보통 32개씩 묶어(워프, warp) 같은 명령을 동시에 실행시킨다. 32명이 같은 악보를 함께 연주하는 합창단과 같다. 그런데 셰이더 안에 “만약 ~라면” 분기가 있어 일부는 이쪽, 일부는 저쪽으로 가야 하면, 한쪽 무리가 실행하는 동안 다른 무리는 기다려야 한다. 그래서 GPU 프로그램은 분기를 최소화하도록 짠다. CPU와 GPU에 맞는 프로그래밍 방식이 다른 이유다.
GPU의 메모리와 데이터 운반
수천 개의 일꾼이 쉬지 않으려면 재료가 엄청난 속도로 공급되어야 한다. 그래서 그래픽 카드에는 전용 메모리(VRAM)가 붙어 있고, 그 대역폭은 일반 메모리의 5~20배(초당 수백 GB~수 TB)에 이른다. 6장의 메모리 계층이 GPU에도 그대로 있다.
단점도 있다. CPU의 메모리에 있는 데이터를 GPU로 보내려면 메인보드의 통로(PCIe)를 지나야 하는데, 이 통로는 GPU 내부보다 훨씬 느리다. 그래서 게임은 시작할 때 3D 모델과 텍스처를 미리 GPU 메모리에 올려 두고(로딩 화면!), 장면마다 “무엇을 어디에 그려라”는 짧은 명령만 보낸다. 데이터를 자주 오가게 하면 GPU가 아무리 빨라도 운반 시간에 발목이 잡힌다. 스마트폰과 최신 노트북은 CPU와 GPU가 한 칩 안에서 같은 메모리를 공유해 이 운반 비용을 줄인다.
인공지능은 왜 GPU를 쓸까: 행렬 곱셈
챗봇이나 이미지 생성 같은 인공지능 모델의 계산은 대부분 행렬 곱셈이다. 숫자 표(행렬) 두 개를 곱하는데, 결과 표의 각 칸은 “한쪽 표의 가로줄과 다른 쪽 표의 세로줄을 짝지어 곱한 뒤 모두 더한 값”이다. 핵심은 결과 표의 각 칸을 서로 독립적으로 계산할 수 있다는 점이다. 픽셀처럼!
행렬 곱셈: 한 칸씩 vs 모든 칸 동시에
그래서 2012년 무렵 연구자들이 GPU로 신경망을 학습시키기 시작하자 인공지능은 폭발적으로 발전했다. 요즘 AI용 GPU에는 행렬 곱셈만 전문으로 하는 회로(텐서 코어)까지 들어가 있다. 처음엔 게임 화면을 그리려고 만든 칩이 세상을 바꾸는 계산기가 된 셈이다.
핵심 정리
- CPU는 똑똑한 코어 몇 개로 복잡한 일을 빨리, GPU는 단순한 유닛 수천 개로 같은 일을 대량으로 처리한다.
- GPU는 서로 독립적인 같은 계산이 아주 많을 때 압도적이다. 일이 적거나 순서가 얽혀 있으면 이득이 줄어든다.
- 3D 그래픽은 꼭짓점 처리 → 래스터화 → 픽셀 셰이딩 → 합치기의 파이프라인으로 그린다.
- 셰이더는 각 픽셀(또는 꼭짓점)에서 동시에 실행되는 작은 프로그램이다.
- GPU는 전용 고대역폭 메모리를 쓰며, CPU와의 데이터 운반은 비싸므로 줄여야 한다.
- 인공지능의 핵심 계산인 행렬 곱셈은 각 칸이 독립적이어서 GPU에 딱 맞는다.
확인 퀴즈
GPU가 CPU보다 훨씬 빠르게 처리할 가능성이 큰 일은?
래스터화 단계에서 하는 일은?
셰이더에 대한 설명으로 옳은 것은?
인공지능 계산에 GPU가 널리 쓰이는 가장 큰 이유는?