Rust로 GPU 소프트웨어를 만드는 회사 VectorWare가 'GPU에서 Rust SIMD 코드를 돌린다'는 글을 올렸어요. CPU용으로 작성한 Rust의 SIMD 코드를 거의 그대로 GPU에서 실행하는 실험인데요. 'GPU 프로그래밍은 CUDA C++로 한다'는 오랜 상식에 금을 내는 시도라서, GPU를 직접 다뤄본 적 없는 분들도 흐름을 알아둘 가치가 있어요.
먼저 SIMD가 뭔지부터 볼게요
SIMD는 Single Instruction, Multiple Data의 약자예요. 이게 뭐냐면, 명령 하나로 여러 개의 데이터를 동시에 처리하는 CPU 기능이에요. 숫자 8개를 더해야 할 때 하나씩 여덟 번 더하는 대신, '8개를 한꺼번에 더해'라는 명령 하나로 끝내는 거죠. 인텔 CPU의 AVX, ARM의 NEON 같은 게 다 SIMD 명령어 세트예요. 이미지 처리나 오디오, 물리 연산처럼 같은 계산을 대량의 데이터에 반복하는 작업에서 몇 배씩 속도가 빨라지는 핵심 기술이고요. Rust에는 std::simd라는 이식 가능한(portable) SIMD API가 있어서, CPU 종류에 상관없이 같은 코드로 SIMD를 쓸 수 있게 해줘요.
그런데 GPU는 원래 거대한 SIMD 기계예요
여기가 이 글의 핵심 발상이에요. GPU는 수천 개의 스레드를 돌리는데, 이 스레드들이 완전히 자유롭게 도는 게 아니라 32개씩 묶음(엔비디아 용어로 워프)으로 같은 명령을 동시에 실행해요. 이 방식을 SIMT(Single Instruction, Multiple Threads)라고 부르는데, 자세히 보면 SIMD랑 구조가 거의 같아요. 명령 하나가 여러 데이터에 동시에 적용된다는 본질이 똑같거든요. 그러니까 'CPU의 SIMD 레인'과 'GPU의 스레드'를 서로 대응시키면, SIMD 스타일로 짠 코드를 GPU에서도 자연스럽게 돌릴 수 있다는 아이디어가 나오는 거예요. 게다가 GPU 스레드 하나하나도 내부에 작은 SIMD 명령(여러 값을 한 레지스터에 담아 한 번에 처리하는 패킹 연산 같은 것)을 갖고 있어서, 병렬성을 두 단계로 겹쳐 쓸 여지도 있고요.
이걸 가능하게 하는 기반이 Rust를 GPU 코드로 컴파일하는 프로젝트들이에요. rust-gpu는 Rust를 Vulkan이 쓰는 SPIR-V라는 중간 언어로, rust-cuda는 엔비디아 GPU가 쓰는 PTX로 컴파일해줘요. 쉽게 말해 Rust 컴파일러가 일반 CPU 기계어 대신 GPU가 알아듣는 코드를 뱉게 만드는 거죠. VectorWare는 이 생태계 개발을 주도하는 팀이라, 이번 글도 그 연장선에 있어요.
왜 중요하냐면, CUDA 독점 구도 때문이에요
지금 GPU 프로그래밍 세계는 사실상 엔비디아의 CUDA C++가 지배하고 있어요. 성능은 확실하지만, C++ 특유의 메모리 버그에서 자유롭지 못하고, 엔비디아 하드웨어에 묶인다는 문제가 있죠. 그래서 탈출구를 찾는 시도가 여럿이에요. 파이썬 쪽에서는 오픈AI가 만든 Triton이 GPU 커널 작성을 쉽게 해줬고, Mojo라는 새 언어도 이 시장을 노리고 있고, 웹 표준 쪽에는 WebGPU와 Rust의 wgpu가 있어요. Rust 진영의 무기는 명확해요. 컴파일 시점에 메모리 안전성을 보장하는 언어로 GPU 커널을 짜면, GPU 프로그래밍에서 악명 높은 메모리 오류 디버깅 지옥을 크게 줄일 수 있다는 거죠. 거기에 이번 글처럼 'CPU와 GPU가 같은 SIMD 코드를 공유한다'는 그림까지 더해지면, 한 번 짠 고성능 코드를 양쪽에서 재사용하는 길이 열리는 거예요.
한국 개발자에게는
당장 프로덕션에 쓸 단계는 아니에요. rust-gpu와 rust-cuda 모두 아직 발전 중인 프로젝트고, 성숙한 CUDA 생태계에 비하면 도구와 자료가 부족하거든요. 다만 방향은 눈여겨볼 만해요. 국내에서도 ML 인프라, 게임 엔진, 시뮬레이션처럼 GPU를 직접 다루는 팀이 늘고 있는데, 'CUDA C++ 아니면 안 된다'는 전제가 흔들리기 시작했다는 신호니까요. Rust를 공부 중이라면 std::simd로 CPU에서 SIMD를 먼저 경험해보는 걸 추천해요. 병렬 데이터 처리 감각은 나중에 GPU로 넘어가더라도 그대로 자산이 되거든요.
한 줄 정리: GPU는 본질적으로 거대한 SIMD 기계고, Rust의 이식 가능한 SIMD 코드를 GPU에서 돌리는 실험은 CUDA 독점 구도에 도전하는 의미 있는 한 걸음이에요.
여러분은 GPU 프로그래밍 해보셨나요? CUDA의 대안으로 Rust, Triton, Mojo 중 어느 쪽이 가장 가능성 있다고 보시는지 궁금해요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공