# CubeCL - CUDA, ROCm, WGPU를 위한 Rust 기반 GPU 커널

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20561](https://news.hada.io/topic?id=20561)
- GeekNews Markdown: [https://news.hada.io/topic/20561.md](https://news.hada.io/topic/20561.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-04-28T09:21:19+09:00
- Updated: 2025-04-28T09:21:19+09:00
- Original source: [github.com/tracel-ai](https://github.com/tracel-ai/cubecl)
- Points: 7
- Comments: 0

## Summary

**CubeCL은** Rust에서 **GPU 커널**을 작성할 수 있도록 지원하는 고성능 멀티플랫폼 언어 확장입니다. **함수, 제네릭, 구조체**를 완벽히 지원하며, **특성, 메서드, 타입 추론**은 부분적으로 지원합니다. **WGPU, CUDA, ROCm** 기반 런타임을 지원하며, **자동 벡터화, 컴파일 타임 최적화, 오토튠** 기능을 통해 코드 성능을 극대화합니다. **Rust의 프로시저 매크로 시스템**을 활용하여 GPU 커널 코드를 파싱하고 확장하는 독특한 방식을 사용합니다.

## Topic Body

- **CubeCL은** Rust에서 GPU 커널을 작성할 수 있도록 해주는 고성능 멀티플랫폼 언어 확장  
- **함수, 제네릭, 구조체**를 완벽하게 지원하며, **특성, 메서드, 타입 추론**은 부분적으로 지원  
- **WGPU, CUDA, ROCm** 기반 런타임을 지원하며, **SIMD 명령어**를 활용한 최적화된 JIT CPU 런타임도 개발중   
- **자동 벡터화, 컴파일 타임 최적화(Comptime), 오토튠** 기능을 제공하여 코드 성능을 극대화함  
- **Rust의 프로시저 매크로 시스템**을 활용하여 GPU 커널 코드를 파싱하고 확장하는 독특한 방식을 사용함  
  
---  
  
### CubeCL 소개  
  
- CubeCL은 Rust 언어를 확장하여 **GPU 커널을 직접 작성할 수 있도록 지원**하는 고성능 컴퓨팅 언어 확장  
- **제로 코스트 추상화**를 활용하여 **효율적이고 유지보수하기 쉬운 커널 개발**을 가능하게 함  
- 현재 **함수, 제네릭, 구조체를 완벽 지원**하고, 트레이트, 메서드, 타입 추론은 부분 지원함  
  
### 간단한 사용 예시  
  
- `#[cube]` 어트리뷰트를 사용해 GPU에서 실행할 함수를 지정함  
- `gelu_array`와 `gelu_scalar` 함수는 SIMD 명령어를 자동으로 사용하여 성능을 향상시킴  
- `launch_unchecked` 함수를 사용하여 커널을 실행할 수 있음  
  
### 지원하는 런타임  
  
- **WGPU**: Vulkan, Metal, DirectX, WebGPU를 통한 크로스 플랫폼 GPU 지원  
- **CUDA**: NVIDIA GPU 최적화 지원  
- **ROCm/HIP**: AMD GPU 지원 (개발 중)  
- **JIT CPU 런타임**: Cranelift 기반 SIMD 명령어를 활용한 최적화된 JIT CPU 런타임 개발중  
  
### CubeCL의 목표  
  
- **고성능 컴퓨팅 커널**을 하드웨어에 구애받지 않고 작성할 수 있도록 지원함  
- **자동 벡터화, 컴타임, 자동 조정** 기능을 통해 코드의 구성 가능성, 재사용성, 테스트 가능성, 유지보수성을 향상시킴  
- **메모리 관리 전략**을 통해 높은 처리량을 위한 최적화된 버퍼 재사용을 제공함  
- **선형 대수 구성 요소**를 개발하여 고성능 및 과학적 컴퓨팅 생태계를 구축하고자 함  
  
### CubeCL의 작동 방식  
  
- **Rust의 프로시저 매크로 시스템**을 활용하여 GPU 커널 코드를 파싱하고 확장하는 독특한 방식을 사용함  
- **컴타임**: 원본 코드를 변환하지 않음으로써 컴파일 타임 최적화를 쉽게 통합할 수 있음  
- **자동 벡터화**: CubeCL 함수의 입력을 벡터화하여 각 중간 변수의 벡터화 요소를 결정함  
- **Rust 통합**: 생성된 코드는 유효한 Rust 코드로 남아 특정 런타임에 대한 의존 없이 번들로 제공될 수 있음  
  
### 디자인 및 특별 기능  
  
- CubeCL은 **큐브**를 중심으로 설계되었으며, 모든 컴퓨팅 API는 하드웨어에 매핑되어 3D 표현을 사용할 수 있음  
- **자동 벡터화**: SIMD 명령어를 사용하여 성능을 향상시킬 수 있으며, 벡터화 요소를 커널 내에서 직접 접근 가능함  
- **컴타임**: 컴파일러 IR을 런타임에 수정하여 최적화와 유연성을 제공함  
- **자동 조정**: 런타임에 작은 벤치마크를 실행하여 최적의 커널과 설정을 선택함  
  
### 주의사항 및 역사  
  
- CubeCL은 현재 **알파 버전**으로, 다듬어지지 않은 부분이 존재함  
- 원래 [Burn](https://burn.dev) 프로젝트의 WebGPU 백엔드로 시작되었으나  
- CUDA 런타임을 추가하며 범용 IR과 Rust 프론트엔드로 확장됨  
- CUDA와 WebGPU의 차이를 극복하기 위해 범용 컨셉을 개발함

## Comments



_No public comments on this page._
