# BarraCUDA - AMD GPU용 오픈소스 CUDA 컴파일러

> Clean Markdown view of GeekNews topic #26782. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=26782](https://news.hada.io/topic?id=26782)
- GeekNews Markdown: [https://news.hada.io/topic/26782.md](https://news.hada.io/topic/26782.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-02-18T23:33:11+09:00
- Updated: 2026-02-18T23:33:11+09:00
- Original source: [github.com/Zaneham](https://github.com/Zaneham/BarraCUDA)
- Points: 5
- Comments: 1

## Summary

**BarraCUDA**는 **CUDA C 코드를 AMD RDNA3(GFX11)용 기계어로 직접 변환**하는 독립형 오픈소스 컴파일러입니다. LLVM이나 HIP 계층 없이 자체 **BIR(BarraCUDA IR)** 을 통해 `.hsaco` 바이너리를 생성하며, 약 15,000줄의 C99 코드로 구성되어 단일 `make` 명령으로 빌드할 수 있습니다. CUDA의 스레드 내장 변수와 공유 메모리, 워프 연산 등 핵심 기능을 지원하며, 향후 **Tenstorrent·Intel Arc·RISC-V** 등으로의 확장을 목표로 합니다.

## Topic Body

- **CUDA C 소스(.cu)** 를 **AMD RDNA3(GFX11)** 용 기계어로 직접 변환하는 **독립형 오픈소스 컴파일러**  
- **LLVM이나 HIP 계층 없이** 자체 **어휘 분석기, 파서, 중간 표현(BIR)** 을 통해 ELF `.hsaco` 바이너리를 생성  
- **15,000여 줄의 C99 코드**로 작성되었으며, **단일 `make` 명령**으로 빌드 가능  
- CUDA의 **스레드 내장 변수, 공유 메모리, 원자 연산, 워프 연산, 협동 그룹** 등 주요 기능을 지원  
- **Apache 2.0 라이선스**로 공개되어 있으며, 향후 **Tenstorrent, Intel Arc, RISC-V** 등 추가 아키텍처 확장을 목표로 함  
  
---  
  
### BarraCUDA 개요  
- BarraCUDA는 **AMD GPU용 CUDA 컴파일러**로, `.cu` 파일을 **GFX11 기계어 코드**로 변환  
  - 결과물은 AMD GPU에서 실행 가능한 **ELF `.hsaco` 바이너리** 형태  
  - **LLVM 의존성 없이** 완전 독립적으로 동작  
- 전체 코드는 **C99로 작성된 약 15,000줄**이며, **단일 Makefile**로 빌드 가능  
- 프로젝트는 **뉴질랜드 기반 개발자**가 개인적으로 개발  
  
### 작동 방식  
- 입력된 `.cu` 파일을 **전처리 → 어휘 분석 → 파싱 → 의미 분석 → BIR 생성 → 명령 선택 → 레지스터 할당 → 바이너리 인코딩 → ELF 출력** 순서로 처리  
- **BIR(BarraCUDA IR)** 은 SSA 형태의 내부 표현으로, 아키텍처 독립적 설계  
- 모든 인코딩은 `llvm-objdump`를 통해 검증되어 **디코드 오류 0건**  
  
### 지원 기능  
- **CUDA 핵심 문법**: `__global__`, `__device__`, `__host__`, `threadIdx`, `blockIdx` 등  
- **CUDA 기능**: `__shared__` 메모리, `__syncthreads()`, **원자 연산**, **워프 셔플/투표**, **벡터 타입**, **half 정밀도**, **협동 그룹** 등  
- **컴파일러 기능**: 완전한 C 전처리기, 오류 복구, 소스 위치 추적, 구조체 값 전달 지원  
  
### 미지원 항목  
- `unsigned` 단독 사용, 복합 대입 연산자(`+=`, `-=` 등), `const`, `__constant__` 메모리, 2D 공유 배열, 텍스처·서피스, 동적 병렬 실행 등은 아직 미구현  
- 다중 번역 단위 및 호스트 코드 생성은 지원하지 않음  
  
### 테스트 및 로드맵  
- **14개 테스트 파일, 35개 이상 커널**, 약 **27KB의 기계어 코드**로 검증  
- **단기 목표**: 구문 보완 및 실사용 `.cu` 파일 호환성 강화  
- **중기 목표**: 명령 스케줄링, 레지스터 할당 개선, 상수 폴딩, 루프 불변 코드 이동 등 최적화  
- **장기 목표**: **Tenstorrent, Intel Arc, RISC-V Vector Extension** 등 새로운 백엔드 추가  
  
### 라이선스  
- Apache 2.0 라이선스

## Comments



### Comment 51347

- Author: neo
- Created: 2026-02-18T23:33:11+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47052941) 
- 프로젝트의 README에 적힌 **뉴질랜드식 유머**가 인상적이었음  
  LLVM 의존 없이 자체 인스트럭션 인코딩을 구현한다는 점이 신선함  
  이런 프로젝트를 시작하려면 엄청난 **저수준 지식**이 필요함을 보여줌  
  AMD 진영에서 CUDA 미지원이 NVIDIA 독점의 핑계가 되곤 하는데, 이런 시도가 시장 균형에 도움이 될 것 같음  
  - 원문에서 말한 건 LLM이 아니라 **LLVM**임을 지적함  
  - 이 프로젝트에도 분명 **AI 관련 기여**가 포함되어 있다고 생각함. 하지만 잘만 쓰면 AI는 훌륭한 도구가 될 수 있음  
  - “Oceania식 유머” 얘기에 [Beached Whale 애니메이션](https://www.youtube.com/watch?v=ezJG0QrkCTA&list=PLeKsajfbDpk3aqfpDB7_6bXL-ZS3UGKNC)이 떠올랐음  
  - 소스코드의 주석 “/* 80 keywords walk into a sorted bar */”가 재치 있었음 ([lexer.c 링크](https://github.com/Zaneham/BarraCUDA/blob/master/src/lexer.c#L4))  
  - “AI slope”라는 표현을 보고 과학적으로는 **gradient descent**라고 부른다는 농담을 덧붙임  

- 첫 번째 외부 이슈가 **geohot**이 올린 것이라 놀라웠음 ([이슈 링크](https://github.com/Zaneham/BarraCUDA/issues/17))  
  이런 인물들이 힘을 합쳐 NVIDIA의 **GPU 시장 독점**을 깨는 걸 보고 싶음  

- AI 추론 워크로드를 NVIDIA GPU에서 돌리는 건 **비용 부담**이 큼  
  이런 프로젝트는 스타트업들이 감당 가능한 대안을 만드는 데 중요함  
  conv2d나 attention 같은 연산에서의 성능이 궁금함  

- “# It’s C99. It builds with gcc. There are no dependencies.”  
  make 한 줄로 끝나는 단순함이 정말 **아름다움**  
  - 이런 단순하고 직관적인 접근이 너무 마음에 듦  

- 게시물 제목의 대문자 표기를 보고, 회사 GPU 팜 이름이 “barracuda”인 이유를 이제야 깨달았음. 꽤 웃겼음  

- 만약 열정적인 개발자들이 AMD가 못한 걸 해낸다면, **웃기면서도 슬픈 일**일 것 같음  
  - AMD가 CUDA를 지원하지 않은 건 “못해서”가 아니라 **전략적 선택**이었다고 생각함  
    CUDA를 지원하면 오히려 NVIDIA 생태계를 강화하는 꼴이 되기 때문임  
    CUDA 대체를 원한다면 **ZLUDA**가 더 실용적일 수 있음  
  - 오픈소스는 주주 눈치를 볼 필요가 없어서 종종 **상용보다 뛰어난 결과**를 냄  
    하지만 커지면 결국 대기업에 인수되어 사라지는 게 아쉬움  
    **Linus와 git**의 사례처럼, 의지와 지식만 있으면 벽을 깰 수 있음  
  - AMD가 “못한” 게 아니라 “안 한” 경우가 많음  
    예를 들어 FSR4를 구형 카드에서 공식 지원하지 않는 것도 그런 사례임  
  - “우리에겐 HIP이 있다”는 농담으로 마무리함  

- 구형 AMD 아키텍처(GFX1010 등)까지 지원할 수 있을지 궁금함  
  - 어렵지만 **충분히 가능**하다고 생각함. 예전엔 ROCm이 엉망이라 직접 패치했지만 지금은 훨씬 나아졌음  
  - 나도 **RX5700m**을 써서 구형 AMD 지원 작업을 직접 하고 있음  
    ISA 문서를 읽으며 바이너리 인코딩을 조정 중임  
    다만 이 영역은 **LLM이 잘 못하는 분야**라, 직접 이해하고 수정해야 함  

- CUDA가 C++을 지원하는데, Clang/LLVM 없이 순수 C로 가는 게 제한적이지 않을까 궁금했음  
  - 실제로는 CUDA가 사용하는 **C++ 기능의 일부만 파싱** 중임. 컴파일러 자체는 C99로 작성됨  
  - 테스트를 보면 템플릿 같은 일부 C++ 기능도 처리 가능해 보임  
  - LLVM의 AMD GX11 지원은 **매우 한정적**이라 의존하지 않는 게 나음  
  - 진짜 개발자는 **AI에 의존하지 않고** 코드를 짬  
    요즘 오픈소스에 AI가 만든 PR이 넘쳐나는데, 이 프로젝트는 그런 의존을 피한 점이 인상적임  

- AMD가 이런 프로젝트를 **공식 후원**해야 한다고 생각함  
  세상은 NVIDIA의 독점에서 벗어날 필요가 있음  

- “OpenCL은 이제 끝난 건가?”라는 의문이 들었음  
  잘 모르겠지만, 그래도 이 프로젝트는 인상적임  
  - CUDA가 훨씬 더 **시장 점유율**을 가져갔고, OpenCL은 기반이 약함  
    예전엔 Apple도 지원했지만 지금은 아닌 듯함  
    마치 Unix와 Windows의 관계처럼, 기술적으로는 좋았지만 시장은 한쪽으로 쏠렸음
