GPU 범용 연산, 그래픽 칩이 계산 장치가 된 과정
논에서 모내기를 하는 철이 오면 숙련된 농부 한 사람보다 수십 명이 줄지어 같은 동작을 반복하는 쪽이 훨씬 빨리 끝납니다. 반대로 농기계를 고치거나 일정을 짜는 일은 한 사람이 차근차근 판단해야 하죠.
GPU 범용 연산의 핵심도 이 차이에 있습니다. 화면의 수많은 픽셀에 같은 계산을 반복하던 그래픽 칩이, 같은 모양의 일이라면 그래픽이 아니어도 대신 맡을 수 있다는 사실이 확인되며 계산 장치로 자리 잡았습니다.
이 글은 GPU가 어떤 단계를 거쳐 그래픽 전용 칩에서 범용 연산 장치로 넓어졌는지, 그 과정에서 무엇이 가능해졌고 무엇이 여전히 한계인지를 정리합니다.
그래픽 전용 칩의 시작, 화면 계산을 CPU에서 덜어 내다
초기 PC에서는 화면에 그림을 그리는 계산도 CPU가 대부분 맡았습니다. 1990년대에 2D에 이어 3D 그래픽을 돕는 가속 칩이 퍼졌고, 1995년에는 주요 PC 그래픽 칩 업체가 모두 2D 가속을 갖췄다고 정리됩니다.
GPU라는 이름은 1994년 소니가 플레이스테이션용 칩에 쓴 것이 시초로 소개되기도 하고, 1999년에는 엔비디아가 지포스 256(GeForce 256)을 세계 최초의 GPU라고 내세우며 널리 알렸습니다. 이 칩은 3차원 장면의 좌표 변환과 조명 계산을 칩 안에 넣어 CPU의 부담을 덜었습니다.
모내기에 빗대면 모내기용 일꾼을 따로 모아 한 가지 동작만 시키는 단계입니다. 이때의 GPU는 정해진 순서의 그래픽 계산만 하는 고정된 구조여서, 프로그래머가 하고 싶은 계산을 마음대로 올릴 수는 없었습니다.
프로그래밍이 가능해진 셰이더, GPU 범용 연산의 문턱
변화는 셰이더(Shader)에서 시작됩니다. 셰이더는 픽셀이나 꼭짓점마다 어떤 계산을 할지 프로그래머가 짜 넣을 수 있게 한 작은 프로그램입니다.
2001년 엔비디아의 지포스 3는 소비자용 그래픽 카드로는 처음으로 프로그래밍 가능한 픽셀 셰이더를 갖춘 제품으로 소개됩니다. 2002년에는 ATI의 라데온 9700이 Direct3D 9.0을 지원하며 프로그래밍 가능한 픽셀과 꼭짓점 셰이더를 갖췄습니다.
이후 2000년대 중반 엔비디아 지포스 8 시리즈의 범용적인 스트림 처리 장치가 GPU를 더 일반적인 계산 장치에 가깝게 만들었다고 정리됩니다. 정해진 순서로만 일하던 작업장이 어떤 일이든 받을 수 있는 작업장으로 바뀐 셈입니다.
그래픽으로 위장한 계산에서 CUDA까지
프로그래밍이 가능해지자 연구자들이 그래픽이 아닌 계산을 GPU에 올려 보기 시작했습니다. 2001년 무렵 GPU가 수치 선형대수에 쓰인 사례가 나왔고, 2003년에는 두 연구 그룹이 각각 GPU로 일반 선형대수 계산을 CPU보다 빠르게 푸는 방법을 보였습니다.
다만 당시에는 문제를 그래픽 작업처럼 보이도록 바꿔 OpenGL이나 Direct3D로 풀어야 했습니다. 계산을 그래픽 용어로 번역해야 해서 전문가가 아니면 접근하기 어려웠고, 이런 불편을 줄이려는 시도로 Brook 같은 언어가 나왔습니다.
엔비디아의 CUDA는 2006년에서 2007년에 걸쳐 공개되어, GPU 컴퓨팅에서 가장 먼저 널리 쓰인 프로그래밍 모델로 소개됩니다. 개발자가 그래픽 용어 없이 C 계열 언어로 GPU에 일을 맡길 수 있게 되었습니다.
이어 크로노스 그룹(Khronos Group)이 GPU와 CPU를 함께 겨냥한 개방형 표준 OpenCL을 정의했습니다. 특정 업체에 묶이지 않는 길이 열렸다는 의미가 있지만, 도구와 생태계의 두께는 시기와 분야에 따라 다릅니다.
계절 일에 빗대면 일꾼에게 모내기 외의 일도 시킬 수 있도록 작업 지시서 양식이 마련된 것입니다. 지시서가 생기자 일꾼의 수가 곧 계산 능력이 되었습니다.
딥러닝을 만난 GPU, 2012년의 전환점
2012년 ImageNet 이미지 분류 대회에서 알렉스넷(AlexNet)이 2위를 큰 차이로 앞섰고, 이 모델은 엔비디아 GTX 580 GPU 두 장으로 학습되었다고 소개됩니다. 모델이 한 장의 GPU 메모리에 들어가지 않아 두 장에 나눠 올렸다는 설명도 함께 전해집니다.
신경망 학습은 같은 모양의 행렬 곱셈을 대량으로 반복하는 일이라 GPU의 구조와 잘 맞았습니다. 이후 GPU 안에 딥러닝용 연산 장치인 텐서 코어가 들어가는 등 AI 쪽 수요가 GPU 설계를 이끄는 방향도 나타났습니다.
그래픽 시장의 부산물처럼 보이던 계산 능력이 별도의 산업 축으로 올라선 순간이 이 시기라고 이해할 수 있습니다. 같은 칩이 게임 화면도 그리고 과학 계산도 하면서 GPU 범용 연산의 쓰임이 넓어졌습니다.
그래픽 칩이 계산 장치가 된 단계별 연표
그래픽 칩에서 범용 연산 장치까지
- 1990년대: 2D와 3D 그래픽 가속 칩이 PC에 보급됩니다.
- 1999년: 엔비디아가 좌표 변환과 조명 계산을 내장한 지포스 256을 GPU로 내세웁니다.
- 2001~2002년: 프로그래밍 가능한 셰이더가 소비자용 그래픽 카드에 들어옵니다.
- 2003년 무렵: 그래픽 도구로 변환한 선형대수 계산이 CPU보다 빠르게 풀립니다.
- 2006~2007년: CUDA가 공개되어 그래픽 용어 없이 GPU를 프로그래밍하게 됩니다.
- 2012년: 알렉스넷이 GPU로 학습되어 딥러닝과 GPU의 결합이 알려집니다.
연표를 보면 한 번의 도약이 아니라 하드웨어의 프로그래밍 가능성과 소프트웨어 도구, 새로운 응용이 번갈아 길을 열어 준 과정임을 알 수 있습니다. CUDA의 공개 시점은 문헌에 따라 2006년과 2007년으로 달라 두 해를 함께 적었습니다.
GPU 범용 연산이 잘 맞는 일과 맞지 않는 일
GPU는 CPU보다 낮은 클록으로 돌지만 처리 장치를 훨씬 많이 갖고 있습니다. 같은 계산을 많은 데이터에 동시에 적용하는 데이터 병렬 작업에서 단위 시간당 처리량이 커지는 이유입니다.
반대로 데이터 사이의 의존성이 크거나 판단 분기가 많은 일은 GPU가 잘하지 못합니다. 또 계산 한 번에 메모리에서 가져오는 데이터가 많으면 메모리 지연이 속도를 제한해, 데이터 이동량에 비해 연산이 많은 일이 유리합니다.
그래서 실무에서는 CPU가 전체 흐름과 판단을 맡고 GPU가 대량 반복 계산을 맡는 분담 구조가 흔합니다. 이 분담 때문에 GPU 곁의 메모리 대역폭과 패키징 기술이 함께 중요해졌습니다.
GPU를 둘러싼 흔한 오해
첫째는 GPU가 CPU보다 모든 면에서 빠르다는 생각입니다. 같은 모양의 계산을 대량으로 반복할 때 강할 뿐, 복잡한 분기가 많은 일에서는 CPU가 유리합니다.
둘째는 기존 프로그램을 GPU에 올리기만 하면 자동으로 빨라진다는 이해입니다. 일을 병렬로 쪼갤 수 있는 구조로 다시 설계해야 효과가 나며, 데이터 이동 비용도 따져야 합니다.
셋째는 GPU는 AI 전용 칩이다라는 단정입니다. GPU는 그래픽에서 출발해 과학 계산과 영상 처리에도 쓰여 왔고, AI 연산에 특화된 칩은 별도로 설계되기도 합니다.
GPU 발전 단계 비교 표
| 구분 | 고정 기능 GPU | 프로그래밍 가능 GPU | 범용 연산 GPU |
|---|---|---|---|
| 시기 | 1990년대~1999년 전후 | 2001~2002년 전후 | 2000년대 중반 이후 |
| 주된 용도 | 그래픽 가속 | 그래픽 효과 구현 | 과학 계산, 영상 처리, 딥러닝 |
| 프로그래밍 가능성 | 정해진 파이프라인만 실행 | 셰이더 프로그램 작성 가능 | CUDA 같은 범용 모델로 작성 |
| 핵심 사건 | 지포스 256의 GPU 명명 | 지포스 3, 라데온 9700의 셰이더 | CUDA 공개와 알렉스넷의 GPU 학습 |
핵심 정리
GPU 범용 연산은 그래픽 가속 칩이 셰이더로 프로그래밍 가능해지고, CUDA 같은 도구로 그래픽 용어 없이 쓸 수 있게 되며, 딥러닝이라는 수요를 만나 자리 잡은 흐름입니다. 핵심은 같은 계산을 많은 데이터에 반복하는 일이라는 점입니다.
도입의 모내기에 빗대면 일손이 한꺼번에 필요한 철에는 줄지어 움직이는 일꾼이 강하지만, 판단이 필요한 일은 여전히 숙련자의 몫입니다. 면접에서는 GPU의 장점과 함께 어떤 일에는 맞지 않는지, 데이터 이동이 병목이 되는 이유까지 말하면 이해가 깊어 보입니다.
면접 대비 질문
면접 대비 질문GPU가 그래픽 전용 칩에서 범용 연산 장치로 바뀔 수 있었던 기술적 이유와, GPU 연산에 적합하지 않은 작업의 특징을 설명해 보세요.
[답변 포인트] 그래픽 계산이 픽셀마다 같은 연산을 반복하는 데이터 병렬 작업이라 GPU가 많은 처리 장치를 갖게 되었다는 점에서 출발합니다. 프로그래밍 가능한 셰이더와 CUDA 같은 도구가 이 구조를 그래픽 밖의 계산에 쓸 수 있게 열었다고 연결합니다. 적합하지 않은 작업은 데이터 의존성과 분기가 많은 일, 연산에 비해 메모리 이동이 많은 일이라는 점과, 그래서 CPU와 GPU가 역할을 나눠 쓴다는 점을 덧붙입니다.









