tracel-ai/cubecl
Multi-platform high-performance compute language extension for Rust.
해결하는 문제
CubeCL은 Rust로 한 번만 고성능 컴퓨팅 커널을 작성하고, NVIDIA, AMD, Apple, Vulkan, WebGPU, CPU 등 여러 하드웨어 플랫폼에서 실행할 수 있도록 해줍니다. CUDA나 WGSL 같은 다른 쉐이더 언어로 별도의 코드를 작성할 필요가 없습니다.
작동 방식
이는 Rust 언어 확장 및 즉시(JIT) 컴파일러로 작동합니다. #[cube] 어트리뷰트를 사용하여 Rust 함수를 중간 표현(IR)으로 변환한 후, 필요에 따라 대상 플랫폼의 네이티브 언어(CUDA C++, HIP, Metal, SPIR-V 등)로 컴파일합니다.
다양한 하드웨어에서 최고의 성능을 유지하기 위해, 벡터, 평면, CubeDim, CubeCount의 4축 병렬 모델을 사용하여 커널이 특정 하드웨어 상수(예: 워프 크기)에 고정되지 않고 적응형으로 동작할 수 있도록 합니다.
대상 사용자
과학 계산 라이브러리, 딥러닝 프레임워크(Burn 등), 고성능 컴퓨팅 커널을 개발하는 개발자들을 위한 것입니다. 저수준 GPU/CPU 프로그래밍의 원시적인 성능을 희생하지 않고도 Rust의 안정성과 조합 가능성(컴포지션)을 누리고 싶은 분들께 적합합니다.
주요 특징
- 다중 플랫폼 지원: CUDA, HIP, Metal, SPIR-V, WGSL, CPU SIMD로 컴파일 가능.
- 컴파일 타임(comptime): 최초 컴파일 시점에 컴파일러 IR를 수정하여 명령어 특화 및 루프 전개를 가능하게 합니다.
- 자동 튜닝: 런타임에 다양한 커널 설정을 벤치마킹하여 현재 하드웨어에 가장 효율적인 버전을 자동으로 찾습니다.
- 자동 벡터화: 고수준 벡터 타입을 플랫폼의 네이티브 SIMD 명령어로 낮추며, 자동 브로드캐스팅을 지원합니다.
- JIT 컴파일: 실제로 실행되는 특정 커널 버전만 컴파일하므로, 사전 컴파일 대비 바이너리 크기를 줄일 수 있습니다.
관련
- 프로젝트
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트