chelsea0x3b/cudarc

Safe rust wrapper around CUDA toolkit

해결하는 문제

CUDA 툴킷과 상호작용하기 위한 최소한이고 안전한 Rust API를 제공하여, 개발자들이 일반적으로 CUDA 개발에 필요로 하는 원시적이고 불안전한 C 스타일의 FFI(외부 함수 인터페이스) 호출을 직접 다루지 않고도 GPU 가속을 활용할 수 있도록 합니다.

작동 방식

이 프로젝트는 CUDA 툴킷 라이브러리(예: 드라이버 API, NVRTC, cuBLAS, cuDNN 등) 주위에 계층적인 래퍼 시스템을 생성합니다. 이러한 래퍼는 세 가지 수준의 추상화로 구성됩니다:

  1. sys: bindgen을 통해 생성된 원시 FFI API.
  2. result: 원시 반환 코드를 Rust Result 유형으로 변환하는 얇은 래퍼.
  3. safe: 사용성과 메모리 안전성을 우선시하는 고수준의 안전한 추상화.

다양한 링킹 방법(동적 로딩, 동적 링킹, 정적 링킹)을 지원하며, 사용자가 빌드 시 타겟팅할 CUDA 버전을 지정할 수 있습니다.

대상 사용자

안전한 Rust 환경에서 고성능 GPU 커널을 작성하고, NVIDIA의 전용 라이브러리를 활용하여 선형 대수, 난수 생성, 딥러닝 기초 연산 등을 수행하고자 하는 Rust 개발자들입니다.

주요 특징

  • 광범위한 라이브러리 지원: cuBLAS, cuDNN, NCCL, cuRAND, cuSPARSE 등 다양한 CUDA 도구에 대한 래퍼.
  • 런타임 컴파일: NVRTC와의 통합을 통해 런타임에 CUDA 커널을 컴파일할 수 있습니다.
  • 유연한 링킹: 동적 로딩(빌드 시 라이브러리 필요 없음), 동적 링킹, 정적 링킹을 모두 지원합니다.
  • 사용자 친화적인 커널 실행: 빌더 패턴을 사용하여 커널 인수와 실행 구성 설정을 간편하게 지정할 수 있습니다.

관련

  • 프로젝트
  • Dispatch
  • 프로젝트
  • Dispatch
  • 프로젝트