TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 44 READS

Zig로 GPU 코드를 짠다고? — SPIR-V 백엔드 진척 이야기

무슨 소식이냐면요

시스템 프로그래밍 언어 Zig가 SPIR-V 백엔드를 점점 완성해가고 있다는 개발 소식이에요. 이름만 보면 무슨 외계어 같지만, 한 꺼풀씩 벗겨보면 "앞으로 Zig 하나로 CPU 코드뿐 아니라 GPU에서 돌릴 코드까지 짤 수 있게 된다"는 꽤 흥미로운 이야기랍니다.

먼저 용어부터 풀어볼게요

Zig는 C를 대체하겠다는 목표로 만들어진 비교적 젊은 시스템 언어예요. 직접 메모리를 다루는 저수준 작업에 강하면서도, C보다 안전하고 빌드 환경이 깔끔하다는 평가를 받죠.

백엔드(backend)라는 단어는 컴파일러 맥락에서 좀 다르게 쓰여요. 컴파일러는 크게 두 부분으로 나뉘는데요. 앞쪽(프론트엔드)은 우리가 짠 소스 코드를 읽고 문법을 해석하는 부분이고, 뒤쪽(백엔드)은 그렇게 해석한 걸 실제 기계가 실행할 수 있는 코드로 번역하는 부분이에요. 그러니까 "SPIR-V 백엔드"란, Zig 코드를 SPIR-V라는 형식으로 출력해주는 번역기 모듈을 말하는 거죠.

그럼 SPIR-V는 뭘까요? GPU는 화면을 그리거나(그래픽) 대량 계산을 병렬로 처리하는(컴퓨트) 특수 칩이에요. 그런데 GPU 제조사마다 내부 명령어가 제각각이라, 모든 GPU가 공통으로 알아듣는 "중간 언어"가 필요했어요. 그게 바로 SPIR-V예요. Vulkan(그래픽 API)이나 OpenCL(병렬 연산 API)에서 셰이더와 커널 코드를 이 SPIR-V 형태로 받아서 각 GPU에 맞게 다시 번역해 돌리거든요. 비유하자면 여러 나라 사람이 모인 회의장의 '공용어' 같은 존재예요.

그래서 뭐가 좋아지냐면

지금까지 GPU 코드는 보통 GLSL, HLSL, CUDA, OpenCL C 같은 "전용 언어"로 따로 짜야 했어요. CPU 쪽 로직은 Zig나 C로 짜고, GPU 쪽은 또 다른 문법의 언어로 짜고, 둘 사이를 손으로 연결하는 식이었죠. 언어가 두 개니까 머릿속도 두 번 전환해야 하고 실수도 잦았어요.

Zig가 SPIR-V를 직접 뽑아낼 수 있게 되면, CPU 코드와 GPU 코드를 같은 언어, 같은 빌드 시스템 안에서 다룰 수 있게 돼요. 언어 하나로 통일되니 타입을 공유하기도 쉽고, 빌드 흐름도 단순해지죠. 게다가 Zig는 자체 백엔드를 직접 만들고 있어서(예전엔 LLVM이라는 거대한 외부 컴파일러 기반에 의존했어요), 빌드 속도나 의존성 측면에서도 가벼워지는 방향으로 가고 있어요. 이번 SPIR-V 작업도 그 "자립(self-hosted) 컴파일러" 큰 그림의 한 조각이에요.

물론 아직 진행 중이에요. 모든 SPIR-V 기능을 완벽히 지원하는 건 아니고, 실제 GPU에서 안정적으로 돌리려면 다듬을 부분이 남아 있어요. 그래도 "된다/안 된다"의 문턱은 이미 넘어서 차근차근 채워가는 단계라는 게 핵심이에요.

업계 흐름에서 보면

사실 "하나의 언어로 CPU와 GPU를 모두"라는 꿈은 Zig만 꾸는 게 아니에요. Rust 진영에서도 rust-gpu 프로젝트가 SPIR-V를 노리고 있고, C++은 SYCL이나 CUDA로 비슷한 통합을 시도해왔죠. Mojo 같은 신생 언어도 CPU/GPU 통합 실행을 핵심 세일즈 포인트로 내세우고 있고요. 즉 "이종 컴퓨팅(heterogeneous computing)을 한 언어로 매끄럽게"라는 게 요즘 시스템 언어들의 공통 전장이에요. Zig의 강점은 컴파일 타임 코드 실행(comptime)과 단순한 빌드 시스템이라, 이걸 GPU 영역까지 끌고 갈 수 있다면 꽤 독특한 위치를 차지할 수 있어요.

한국 개발자에게 주는 시사점

당장 실무에 투입할 단계는 아니에요. 안정적인 GPU 개발이 필요하면 여전히 CUDA나 Vulkan/SPIR-V 표준 도구를 쓰는 게 맞아요. 다만 SPIR-V라는 '공용어'의 존재 자체는 알아두면 두고두고 쓸모 있어요. 요즘 GPU 컴퓨팅, AI 추론, 그래픽 엔진을 들여다보면 결국 이 중간 표현 위에서 도구들이 경쟁하고 있거든요. SPIR-V를 이해하면 Vulkan 셰이더 디버깅이나 크로스 플랫폼 GPU 코드 구조를 보는 눈이 트입니다.

그리고 Zig 자체도 한번 맛볼 가치가 있어요. C 프로젝트의 빌드 도구로만 써도 충분히 매력적이거든요. 이런 언어가 GPU 영역까지 손을 뻗는 흐름을 곁눈질로 지켜보는 것만으로도 "앞으로 시스템 프로그래밍이 어디로 가는지" 감을 잡는 데 도움이 돼요.

마무리

정리하면, Zig가 SPIR-V 백엔드를 갖추면서 'CPU와 GPU를 한 언어로'라는 목표에 한 걸음 더 다가섰다는 소식이에요. 아직 완성형은 아니지만 방향성만큼은 분명하죠.

여러분은 GPU 코드를 짤 때 CPU와 다른 언어를 오가는 게 불편하셨나요? 만약 Zig나 Rust 하나로 양쪽을 다 짤 수 있다면, 실제 프로젝트에 도입해볼 의향이 있으신가요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://ziglang.org/devlog/2026/#2026-06-26
SHARE
처리 중...