eyalroz/cuda-api-wrappers
Thin, unified, C++-flavored wrappers for the CUDA APIs
해결하는 문제
이 라이브러리는 NVIDIA의 C 스타일 CUDA API(런타임 API 및 드라이버 API)의 단점을 해결합니다. 이 API들은 종종 수동 리소스 관리, 반복적인 에러 체크, 복잡한 포인터 포인터 패턴을 요구합니다. 이 라이브러리는 CUDA 생태계와의 상호작용을 단순화하여, 현대적인 C++ 프로그래밍 관행과 일치하고 직관적이고 일관된 시스템을 제공합니다.
작동 방식
드라이버 API, 런타임 API, NVRTC(동적 컴파일), NVTX(프로파일러 API), 그리고 PTX 컴파일러 라이브러리와 같은 주요 CUDA API에 대한 가벼운 래퍼를 제공하는 헤더 전용 C++ 라이브러리입니다. 새로운 추상화를 도입하거나 특정 규칙을 강제하지 않으며, 단지 NVIDIA API를 현대적인 C++의 미학에 맞게 재구성합니다.
대상 사용자
직접 CUDA API를 사용하고, 하위 API가 제공하는 표현력의 범위를 희생하지 않으면서도 더 사용하기 쉬우며, 안전하고 더 조합 가능한 방법으로 NVIDIA GPU와 상호작용하고자 하는 개발자들입니다.
주요 특징
- RAII 리소스 관리: 장치, 스트림, 이벤트, 커널을 위한 프록시 객체를 사용하여 리소스 해제를 자동화합니다.
- 예외 기반 에러 처리: 반환 코드 체크를 상태 정보를 포함하는 예외로 대체합니다.
- 개선된 조합성: 함수가 생성하는 객체를 반환하므로, 미리 할당된 출력 매개변수를 필요로 하지 않습니다.
- 통합된 API 접근: 드라이버, 런타임, NVRTC API 간의 원활한 통합을 제공합니다.
- 제로 오버헤드 설계: 고비용의 상속이나 가상 메서드를 사용하지 않는 가벼운 헤더 전용 구현으로, 대부분의 래퍼는 컴파일 시 사라집니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트