NVIDIA의 벽을 깨다: 오픈소스 CUDA 컴파일러 BarraCUDA 등장!
BarraCUDA는 AMD GPU를 타겟으로 하는 오픈소스 CUDA 컴파일러로, LLVM 의존성 없이 자체적으로 GFX11 머신 코드를 생성함
CUDA C 코드를 AMD RDNA 3(gfx1100) 바이너리로 직접 컴파일하며, 15,000 라인의 C99 코드로 구현됨
지오핫(geohot)을 포함한 개발자들은 NVIDIA의 독점적 지위에 대한 대항마로 BarraCUDA의 성공을 기대함
성능 최적화(Optimization) 및 다양한 아키텍처 지원(More Architectures)에 대한 커뮤니티의 기대와 함께, NVIDIA의 법적 대응에 대한 우려도 제기됨
LLVM 미사용 및 자체 Instruction Encoding
BarraCUDA는 LLVM 없이 CUDA C 코드를 AMD GPU 바이너리로 변환하는 독자적인 컴파일 파이프라인(Compilation Pipeline)을 구축했다. 특히, Instruction Selection을 포함한 모든 인코딩 과정을 직접 구현하여, LLVM에 대한 의존성을 완전히 제거했다. 이러한 접근 방식은 NVIDIA의 CUDA 생태계에 대한 독립성을 확보하는 동시에, AMD GPU 아키텍처(AMD GPU Architecture)에 대한 깊이 있는 이해를 요구한다.
아키텍처 및 기능 지원 현황
현재 BarraCUDA는 RDNA 3 아키텍처(GFX11)를 지원하며, __global__, __device__, __host__ 등의 핵심 CUDA 언어 기능을 지원한다. 또한, __shared__ 메모리(Shared Memory), 원자 연산(Atomic Operations), 워프(Warp) intrinsics 등 다양한 CUDA 기능을 구현했다. 하지만, const 한정자(const qualifier), 복합 할당 연산자(Compound Assignment Operators) 등 일부 기능은 아직 지원되지 않아, 향후 개선이 필요하다.
커뮤니티의 기대와 우려
커뮤니티에서는 BarraCUDA가 NVIDIA의 소프트웨어 모트(Software Moat)를 무너뜨릴 수 있는 잠재력을 가진 것으로 평가하며, AMD GPU 생태계의 확장을 기대하고 있다. 특히, 지오핫(geohot)과 같은 저명한 개발자의 참여는 프로젝트의 신뢰도를 높이는 요인으로 작용한다. 하지만, NVIDIA의 법적 대응 가능성에 대한 우려와 함께, ROCm 지원 여부에 대한 질문도 제기되었다.
향후 개발 로드맵 및 기술적 과제
BarraCUDA 개발자는 성능 최적화(Performance Optimization)를 위해 Instruction Scheduling, Register Allocation 개선을 계획하고 있다. 또한, Tenstorrent 및 Intel Arc와 같은 다양한 아키텍처 지원(Multi-Architecture Support)을 목표로 하고 있다. 기술적으로는, Instruction Selection 및 Register Allocation 단계에서 최적의 성능을 확보하는 것이 핵심 과제이며, 이는 컴파일러 개발의 난이도를 높이는 요인으로 작용한다.