2026. 10. 2. 09:24ㆍGPU·AI 반도체
NVIDIA CUDA는 왜 강력한 해자가 되었나: cuDNN·NCCL 속으로
CUDA는 2006년 세상에 나왔다. 그런데 이 플랫폼이 실제로 산업 전체를 바꾼 건 2022년 챗GPT 등장 이후였다. 그사이 16년 동안 CUDA는 논문에나 인용되고 투자자들은 거들떠보지 않는, 연구실과 고성능컴퓨팅(HPC) 클러스터에 갇힌 틈새 기술이었다.[1] 앞서 다룬 대로 CUDA가 지금 엔비디아의 가장 강력한 해자로 꼽힌다면, 그 해자가 어떻게 코드 한 줄 한 줄 수준에서 만들어졌는지를 들여다볼 필요가 있다.
핵심 요약: CUDA의 해자는 브랜드 충성도나 마케팅의 결과가 아니다. cuDNN·cuBLAS·NCCL 같은 라이브러리 하나하나가 GPU 세대마다, 데이터 타입마다, 행렬 크기마다 사람이 직접 손으로 튜닝한 커널들의 집합이고, 이 작업을 16년간 쌓아 올린 축적물 자체가 경쟁사가 단기간에 복제할 수 없는 진짜 장벽이다.

2006년 이전: GPU 프로그래밍은 '고장 나' 있었다
CUDA가 등장하기 전, GPU로 그래픽이 아닌 범용 계산을 하려는 연구자들은 묘한 우회로를 써야 했다. 계산하고 싶은 문제를 그래픽 렌더링 작업처럼 '위장'해서 GPU에 넘겨야 했던 것이다. 스탠퍼드의 브룩GPU(BrookGPU) 프로젝트는 CPU가 GPU에 연산을 떠넘길 수 있는 프로그래밍 모델을 처음 시도한 사례 중 하나로, CUDA가 나아갈 방향의 토대를 놓았다.[2] 2006년 11월 엔비디아는 G80 아키텍처(지포스 8800)를 공개하며 이 구조 자체를 갈아엎었다. GPU를 그래픽 전용 장치에서 범용 연산 엔진으로 바꾸겠다는 선언이었다.[1]
CUDA가 바꾼 것: '한 번 작성하면 어디서나 돌아가는' 구조
CUDA는 C++ 기반 언어에 GPU의 스레드·메모리 개념을 직접 노출하는 확장을 더해서, 개발자가 'CUDA 커널'이라는 독립적인 계산 단위를 GPU 위에서 실행할 수 있게 했다.[3] 이 구조의 핵심은 '블록' 단위의 독립성이다. 블록들은 서로 완전히 독립적이어서, CUDA 런타임이 노트북의 스트리밍 멀티프로세서(SM) 4개짜리든 데이터센터 H100의 SM 144개짜리든 알아서 자동으로 작업을 분배한다.[4] 코드를 한 번만 작성해두면 하드웨어 규모와 무관하게 그대로 확장되는 셈이다. 이 밑단에서 GPU는 32개의 연속된 스레드를 '워프(warp)'라는 단위로 묶어 동시에 같은 명령어를 실행하는데,[4] 이 때문에 CUDA 성능 최적화의 상당 부분이 조건 분기를 없애고 워프 내 스레드들이 똑같이 행동하도록 만드는 데 집중된다.[4]
16년의 겨울: 아무도 안 쓰던 플랫폼에 계속 투자한 이유
CUDA는 출시 후 수년간 상업적으로 의미 있는 규모에 이르지 못했다. 소수의 헌신적인 연구자 집단만 쓰는, 경제적으로는 주변부에 머문 기술이었다.[1] 그런데도 엔비디아는 이 기간 내내 cuDNN(딥러닝 연산용), cuBLAS(선형대수용) 같은 라이브러리 계층을 계속 쌓아 올렸다.[1] 이 과정을 "2006년에 2022년에야 본격화될 시장을 위해 걸어둔 16년짜리 베팅"이라고 표현하는 분석도 있다.[1] 결과적으로 경쟁사가 뒤늦게 비슷한 하드웨어를 내놓았을 때, 엔비디아는 이미 10년 넘게 쌓인 소프트웨어 스택을 들고 있었다.
터닝포인트: cuDNN과 손으로 튜닝한 커널
2014년 출시된 cuDNN은 CUDA 생태계의 분수령이었다. 이 라이브러리는 컨볼루션 연산을 위해 사람이 직접 손으로 튜닝한 커널들을 제공했는데, 개별 연구자가 수작업으로는 도저히 따라잡을 수 없는 수준의 최적화였다.[1] cuDNN은 2015년 구글의 텐서플로우, 2016년 메타의 파이토치가 등장할 수 있는 길을 열어준 핵심 인프라로 꼽힌다 — 이 프레임워크들은 내부적으로 cuDNN·cuBLAS 같은 GPU 최적화 라이브러리를 호출해서 고성능 가속을 구현했다.[5]
cuBLAS: 보이지 않는 곳에서 일어나는 자동 선택
cuBLAS는 표준 선형대수 연산(BLAS)을 GPU에서 고속으로 구현한 라이브러리로, 지금 엔비디아 GPU에서 이뤄지는 거의 모든 고성능 수치 연산의 기반이 된다.[6] 개발자가 행렬곱셈 같은 연산을 직접 작성하고 최적화하는 대신 cuBLAS 함수를 호출하면 되는데, 이 라이브러리 안에는 데이터 타입(FP32·FP16 등), 행렬 크기, GPU의 스트리밍 멀티프로세서 아키텍처별로 세밀하게 튜닝된 커널들이 방대하게 들어 있다.[6] 런타임에는 공개되지 않은 내부 휴리스틱을 통해 지금 상황에 가장 적합한 커널과 실행 파라미터를 자동으로 골라낸다.[6] 이런 세밀한 자동 선택 로직 자체가, 누군가 "cuBLAS와 똑같이 작동하는 라이브러리"를 처음부터 다시 만들려고 할 때 가장 재현하기 어려운 부분이다.
NCCL: GPU 수천 개를 하나처럼 묶는 통신 계층
GPU 한 장의 연산 능력만으로는 대형 모델을 학습할 수 없다. NCCL(NVIDIA Collective Communication Library)은 여러 GPU 사이의 통신을 처리하는 라이브러리로,[1] GPU 수백~수천 장이 동시에 데이터를 주고받아야 하는 분산 학습 구조에서 핵심적인 역할을 한다. cuDNN·cuBLAS가 GPU 한 장 안에서의 연산을 최적화한다면, NCCL은 그 GPU들을 하나의 거대한 연산 장치처럼 묶어내는 역할을 맡는다.
왜 이 해자는 뚫기가 유독 어려운가
이 라이브러리들이 얼마나 뚫기 어려운지는 구체적인 사례로 확인할 수 있다. 어텐션 연산을 빠르게 만드는 플래시어텐션(FlashAttention) 커널은 엔비디아의 호퍼(Hopper) 아키텍처에 완전히 맞춰 최적화되기까지 거의 5년이 걸렸다.[7] 이는 커널 하나를 새 GPU 아키텍처에 맞게 수작업으로 최적화하는 일이 알고리즘과 하드웨어 양쪽에 대한 깊은 전문성을 필요로 하는, 시간이 많이 드는 작업이라는 걸 잘 보여준다.[7] AMD GPU용으로 CUDA 코드를 이식하는 작업을 직접 해본 한 연구팀의 기록을 봐도, 단순히 문법을 바꾸는 수준을 넘어 메모리 구조와 실행 모델 전반을 다시 맞춰야 하는 상당한 품이 드는 작업임을 확인할 수 있다.[8] 한 분석은 이 구조를 과거 IBM이 메인프레임 운영체제(OS/360)로 만들었던 락인과 같은 층위의 문제로 보면서도, "그때는 IBM의 것이었지만 지금은 엔비디아의 것"이라는 차이를 짚는다.[1]
균형 잡힌 시각: 이 해자가 영원할까
다만 모든 분석가가 이 해자를 영구적이라고 보지는 않는다. 오픈 표준 기술이 특정 재단에 기부되고 널리 채택되면, 사유 플랫폼만큼의 락인 효과는 생기지 않는다는 반론도 있다.[1] AMD의 ROCm이 PyTorch·JAX 네이티브 지원을 확보하며 격차를 좁히려는 시도나, 모듈러(Modular)처럼 CUDA 바깥에서 범용 AI 컴퓨트 환경을 만들려는 시도가 계속되는 것도 이런 맥락에서다. 다만 이런 대안들이 cuDNN·cuBLAS 수준의 세밀한 아키텍처별 최적화를 따라잡으려면, CUDA가 걸어온 것과 비슷한 시간과 투자가 필요하다는 게 중론이다.
한계와 확인되지 않은 부분
cuBLAS의 내부 커널 선택 휴리스틱은 엔비디아가 공개하지 않은 영역이라, 이 글에서 "자동으로 최적 커널을 고른다"고 설명한 부분은 외부 개발자 커뮤니티의 관찰과 공개 문서를 종합한 설명이지 엔비디아의 공식 기술 문서로 완전히 검증된 내용은 아니다. 또한 CUDA의 '16년 겨울' 서사나 OS/360과의 비교는 특정 분석가의 해석이라는 점도 감안해야 한다.
BIT-PICK 분석
엔비디아가 AI 시대의 핵심 반도체 기업이 된 이유를 기업 전략·시장점유율 차원에서 봤다면, 이번 글은 그 해자가 실제로 코드 레벨에서 어떻게 작동하는지를 들여다본 것이다. 결론은 분명하다 — CUDA의 힘은 H100의 HBM 용량이나 텐서 코어 개수에 있지 않다. GPU 세대마다, 연산 종류마다, 데이터 타입마다 사람이 직접 손으로 쌓아 올린 수만 개의 커널 최적화, 그리고 그걸 16년간 포기하지 않고 계속한 축적 그 자체가 진짜 해자다. 하드웨어 스펙은 몇 년이면 따라잡을 수 있어도, 이 정도 규모의 소프트웨어 축적을 단기간에 복제하기는 훨씬 더 어렵다.
참고자료
- sjl.us, "The Half-Life of Moats" — CUDA 16년 역사, cuDNN·cuBLAS 투자, OS/360 비교
- Modular, "What exactly is 'CUDA'? (Democratizing AI Compute, Part 2)" — BrookGPU, CUDA 2006년 출시, cuDNN이 텐서플로우·파이토치에 미친 영향
- Modular, 위 자료 — CUDA 프로그래밍 모델 구조
- The Cloud Girl (Substack), "NVIDIA CUDA Explained Visually" — 블록/SM 자동 스케줄링, 워프 구조
- The Cloud Girl, 위 자료 — cuDNN 수작업 튜닝 커널, NCCL 정의
- Modal, "What is cuBLAS?" — cuBLAS 구조, 런타임 커널 선택 휴리스틱
- arXiv, "PTXBench: Benchmark and Adapt LLMs for GPU Kernel Optimization" — FlashAttention 호퍼 아키텍처 적응 기간(2026)
- arXiv, "Preparing Ginkgo for AMD GPUs — A Testimonial on Porting CUDA Code to HIP" — CUDA-HIP 이식 작업 사례
'GPU·AI 반도체' 카테고리의 다른 글
| NVIDIA를 벗어나려 한 기업들: 탈-CUDA 시도는 왜 자꾸 좌절되나 (0) | 2026.10.06 |
|---|---|
| AI 반도체의 진짜 병목은 GPU가 아닐 수도 있다 — 조미료 회사가 쥔 열쇠 (0) | 2026.10.01 |
| HBM3E와 HBM4 — AI 메모리 경쟁은 어디로 가나 (0) | 2026.09.30 |
| HBM과 일반 DRAM은 무엇이 다른가: DDR·GDDR·HBM 한 번에 정리 (0) | 2026.09.29 |
| GPU 옆에 붙는 CoWoS가 중요한 이유 (0) | 2026.09.22 |