6.1 하드웨어 기업의 소프트웨어 선언: CUDA 프로젝트의 태동
2000년대 중반, 엔비디아(NVIDIA)는 겉보기엔 그저 세계에서 가장 게임용 화면 출력을 매끄럽게 잘 뽑아내는 부품 조립 회사, 즉 철저한 ’하드웨어 생산업체’에 불과했다. 이들의 완벽한 생존 공식은 칩셋을 극한으로 쪼고 설계하여 수백만 개의 트랜지스터를 박아 넣어 더 빠르게 동작하게 만드는, 지극히 물리적이고 반도체적인 집적의 영광에만 맞춰져 있었다.
그러나 젠슨 황(Jensen Huang)과 코어 수뇌부들의 머릿속에서는 이 단순한 공장의 철학을 통째로 부정하는 소름 돋는 선언이 움트고 있었다. 6.1장에서는 “우리 엔비디아는 하드웨어 기업이 아니라, 세상의 모든 개발자와 기계를 연결하는 플랫폼 위에서 춤추는 위대한 ‘풀스택(Full-stack) 소프트웨어 기업’ 이다“라는 그들의 충격적인 메니페스토(Manifesto)가 어떻게 실리콘밸리(Silicon Valley)에 울려 퍼졌는지 그 기원을 파헤친다.
대학 연구소의 변태적인 속임수 연산(Hack computing)을 양지로 끌어올리기 위해 영입된 천재 컴파일러 전문가 이안 벅(Ian Buck), 그리고 그가 주도한 거대 프로젝트 ‘CUDA(쿠다)’ 가 어떠한 철학적 딜레마와 기술적 장벽을 뚫고 초기 아키텍처(Architecture) 청사진을 그렸는지를 조명한다. 마침내 “세상에 팔리는 단돈 50달러짜리 싸구려 게임 그래픽 카드부터 수백만 달러짜리 산업용 칩에 이르기까지, 모든 제품에 무조건 범용 연산 기능을 활성화하라“고 지시했던 젠슨 황의 파괴적이고도 권위주의적인 비전의 심장부를 직시한다.
6.1.1 그래픽 처리의 한계를 넘어: 범용 연산(GPGPU)을 향한 열망
단일 코어 중앙처리장치(CPU)의 물리적 진화가 서서히 뜨거운 발열(Thermal)의 지옥 속에서 질식해 가고 있을 때, 학계를 관통하는 가장 잔인하고도 거대한 과제는 ’어떻게 막대한 수치 계산의 체증(Traffic Jam)을 뚫어낼 것인가’였다. 극소수의 컴퓨터 공학자들은 이미 그래픽 출력용 API의 틈새를 억지로 비집고 들어가 지포스(GeForce) GPU의 징그러운 병렬 코어들을 강제로 과학 연산에 동원하는 꼼수, 이른바 GPGPU(General-Purpose computing on Graphics Processing Units) 의 매혹적인 화력에 완전히 중독되어 있었다.
엔비디아(NVIDIA) 본사의 엔지니어들은 이들의 고통스럽지만 눈물겨운 발버둥을 더 이상 외면할 수 없었다. 기상 관측, 유체 역학, 혹은 인간 유전체(Genome) 정렬과 같은 극악의 난도를 자랑하는 빅데이터 연산은 비디오 게임의 폴리곤을 렌더링(Rendering)하는 것과는 차원이 다른 본질적인 수학(Mathematics)의 영역이었다.
“이 위대한 과학자들에게 왜 굳이 3D 그래픽 투시법이나 픽셀 셰이더(Pixel Shader)의 거추장스럽고 기괴한 문법을 억지로 강요해야만 하는가?”
그래픽 처리라는 좁고 천박한 한계를 허물어버리고, 아예 하드웨어 단에서부터 온전하게 ’숫자 연산 목적의 통로’를 따로 내어주어 GPU의 알맹이 수천 개를 다이렉트로 통제하게 하자는 거대한 철학적 반란. 그것은 단순히 더 좋은 그래픽 카드를 팔아먹기 위한 상술이 아니라, 인텔(Intel)이 구축해 놓은 순차적 연산의 기득권을 박살 내고 전 지구적인 컴퓨터 아키텍처(Computer Architecture)의 룰(Rule) 자체를 다시 쓰겠다는 엔비디아의 맹렬하고도 치명적인 권력 탈취의 열망이었다.
6.1.2 이안 벅(Ian Buck)의 영입과 CUDA 아키텍처의 초기 설계
학계의 변태적인 GPGPU 꼼수를 체계적이고 우아한 공학적 패러다임으로 뒤집기 위해, 젠슨 황(Jensen Huang)은 스탠퍼드 대학교(Stanford University)에서 세계 최초의 범용 GPU 언어 프로젝트인 ’브룩(Brook)’을 설계하던 천재 대학원생 이안 벅(Ian Buck) 을 본사 코어 랩(Lab)실로 영입하는 역사적인 베팅을 감행했다.
이안 벅의 임무는 섬뜩할 정도로 명료했다. 엔비디아(NVIDIA) 칩 위를 더럽게 덮고 있던 다이렉트X(DirectX) 와 같은 게임 전용 API의 잔재를 완전히 폭파시키고, 모든 개발자가 대학교 1학년 때 배우는 C언어 표준 컴파일러(Standard C Compiler)만으로도 수백 개의 GPU 코어에 직접 다이렉트로 소통할 수 있는 매끄럽고 평평한 아우토반(Autobahn) 고속도로를 새로 까는 것이었다.
graph TD
A[기존 꼼수 연산: OpenGL/DirectX 우회] --> B[불필요한 그래픽 렌더링 파이프라인 강제 통과]
B --> C[개발자의 극악한 학습 비용 및 비효율<br>High Learning Curve]
D[이안 벅의 CUDA 초기 설계 비전] --> E[C언어/C++ 표준 문법 완벽 호환<br>Standard Syntax]
E --> F[그래픽 파이프라인 우회<br>Direct API Access]
F --> G[GPU 내부 쓰레드 관리 및 메모리 직접 통제 권한<br>Memory & Thread Control]
G --> H[수천 개의 병렬 코어가 뿜어내는 다이렉트 연산 폭발<br>Massive Direct Parallelism]
style C fill:#f55,stroke:#333,stroke-width:2px,color:#fff
style H fill:#f9f,stroke:#333,stroke-width:2px,color:#fff
이안 벅의 지휘 아래 설계된 이 무시무시한 통역 시스템의 이름이 바로 ‘쿠다(CUDA, Compute Unified Device Architecture)’ 였다. CUDA 시스템은 단순히 프로그래밍 언어의 껍데기를 매끄럽게 포장하는 것에 그치지 않았다. 소프트웨어가 하드웨어의 미세한 코어 하나하나의 스레드(Thread)를 직접 할당하고, 그들끼리 데이터를 주고받을 수 있는 로컬 메모리 동기화(Local Memory Synchronization) 권한까지 완벽하게 개발자의 온전한 통제 아래 쥐여 주었다. 이것은 오직 게임용 부품이던 GPU를 비로소 인간이 100% 장악할 수 있는 진정한 의미의 ’지능형 범용 슈퍼컴퓨터(Intelligent General-Purpose Supercomputer)’로 재창조시킨 위대한 아키텍처의 태동이었다.
6.1.3 ‘모든 칩에 연산 기능을’: 젠슨 황의 파격적인 비전
CUDA(쿠다)라는 전대미문의 괴물 소프트웨어 플랫폼이 모습을 드러내자, 엔비디아(NVIDIA) 내부와 투자자들 사이에서는 합리적인 의구심과 실용주의적인 타협안이 은밀하게 고개를 들기 시작했다.
“수백 수천만 원을 호가하는 최고급 연구용 서버 트랙 장비, 테슬라(Tesla)나 쿼드로(Quadro) 라인업에만 이 무겁고 쓸데없는 고도 연산 회로와 CUDA 구조를 탑재합시다. 10대 학생들이 밤새워 총싸움이나 하는 50달러짜리 지포스(GeForce) 싸구려 조립 PC 그래픽 카드에까지 굳이 비싼 반도체 면적을 낭비해가며 이 고급 과학 연산자 기능을 박아 넣을 이유가 도대체 무엇입니까?”
하지만 젠슨 황(Jensen Huang)은 타협을 혐오했다. 그의 비전은 소수의 고고한 과학자나 대기업 연구실 장비만에 국한된 빈약한 우물 안 장사가 아니었다. 그는 인류 컴퓨터 생태계 전체의 ‘절대 표준(Standard)’ 자체를 완전히 엔비디아의 CUDA로 물들여버리겠다는 소름 돋는 그랜드 디자인(Grand Design) 청사진을 그리고 있었다.
“타협은 없다. 이제부터 엔비디아의 팹(Fab) 공장에서 찍어내어 팔려 나가는 세상의 단 한 조각의 칩셋이라도 예외 없이, 모든 지포스 라인업에 실리콘 원가를 낭비하더라도 무조건 이 CUDA 범용 연산 로직(Logic)을 강제로 때려 박아 넣어라. 지금 당장 방구석에서 게임이나 하는 인도 뭄바이의 어린 대학생이나 샌프란시스코의 가난한 해커 유학생들도, 우리 카드를 사면 그 집성촌의 골방을 즉시 우주 관측용 슈퍼컴퓨터 랩실로 탈바꿈시킬 수 있도록 완벽하게 접근성(Accessibility)을 융단폭격하라.”
“모든 칩이 곧 병렬 계산기여야 한다“는 젠슨 황의 이 권위적이고도 폭력적인 비전은, 훗날 전 세계의 소프트웨어 개발자 수백만 명이 아무런 허들 없이 CUDA 생태계에 빠져들고 길들게 만들어 버린 가장 뼈저리고도 위대한 전략적 한 수(Strategic Masterstroke)가 되었다.