chelsea0x3b/cudarc
Safe rust wrapper around CUDA toolkit
해결하는 문제
NVIDIA CUDA 툴킷과 상호작용하기 위한 최소한이고 안전한 Rust API를 제공하여, 개발자가 일반적으로 CUDA 개발에 필요로 하는 원시적이고 불안정한 C 스타일의 FFI(외부 함수 인터페이스) 호출을 직접 다루지 않고도 GPU 가속을 활용할 수 있도록 합니다.
작동 방식
cudarc는 CUDA 툴킷 라이브러리 주위에 계층적인 래퍼 시스템을 생성합니다. 세 가지 수준의 접근 방식을 제공합니다:
- sys: bindgen을 통해 생성된 원시 FFI API.
- result: CUDA 함수 반환 값을 Rust
Result유형으로 변환하는 얇은 래퍼. - safe: 안전성과 사용 편의성을 우선시하는 고수준의 직관적인 추상화.
다양한 CUDA 라이브러리(드라이버 API, NVRTC(런타임 컴파일), cuBLAS, cuDNN, NCCL 등)를 지원합니다. 또한 유연한 링킹 옵션(동적 로딩, 동적 링킹, 정적 링킹)을 지원하며, 여러 CUDA 버전을 지원합니다.
대상 사용자
고성능 GPU 커널을 작성하고, 메모리 할당 및 데이터 전송과 같은 CUDA 리소스를 안전하고 자연스러운 Rust 인터페이스를 사용하여 관리하고자 하는 Rust 개발자들입니다.
주요 특징
- 광범위한 라이브러리 지원: cuBLAS, cuDNN, NCCL, cuSPARSE와 같은 핵심 CUDA 도구에 대한 래퍼.
- 런타임 컴파일: NVRTC와의 통합을 통해 런타임에 CUDA 커널을 컴파일할 수 있습니다.
- 유연한 구성: 기능 플래그를 통해 여러 CUDA 및 cuDNN 버전을 지원합니다.
- 직관적인 커널 실행: 빌더 패턴을 사용하여 커널 인수와 실행 구성 정보를 지정합니다.
관련
- Dispatch
- 프로젝트
- Dispatch
- 프로젝트
- Dispatch