NVIDIA/cuda-python
CUDA Python: Performance meets Productivity
해결하는 문제
Python에서 NVIDIA CUDA 플랫폼에 액세스하는 통일된 방법을 제공하여, 개발자가 GPU 리소스를 관리하고 병렬 알고리즘을 실행하기 위해 저수준 C 코드를 작성할 필요성을 제거합니다. Python 내에서 엔드 투 엔드 GPU 프로그래밍을 가능하게 함으로써 CUDA 개발의 학습 곡선을 완화하고 개발자 생산성을 높이는 것을 목표로 합니다.
작동 방식
이 프로젝트는 여러 전문 서브 패키지를 포함하는 메타패키지로 구성되어 있습니다:
- cuda.core: CUDA Driver, Runtime 및 JIT 컴파일러 툴체인에 대한 관용적이고 Pythonic한 액세스를 제공합니다.
- cuda.bindings: CUDA C API(Driver, Runtime, NVRTC, NVML 포함)에 대한 저수준 Python 바인딩을 제공합니다.
- cuda.compute: 호스트에서 호출할 수 있는 sort, scan, reduce와 같은 병렬 알고리즘에 대한 액세스를 제공합니다.
- cuda.tile: CUDA 커널에서 직접 NumPy 스타일의 코드를 작성하기 위한 도메인 특화 언어(DSL)입니다.
- numba-cuda-mlir 및 numba.cuda: Python에서 JIT 컴파일 및 SIMT 커널 개발을 위한 도구입니다.
- nvmath-python: NVIDIA의 CPU 및 GPU 수학 라이브러리에 대한 액세스를 제공합니다.
- nvshmem4py: 고성능 분할 전역 주소 공간(PGAS) 프로그래밍을 위한 인터페이스입니다.
- 프로파일링 도구: 성능 분석 및 커널 프로파일링을 위한 Nsight Python 및 CUPTI Python이 포함되어 있습니다.
대상 사용자
고수준의 관용적 추상화가 필요한 개발자부터 CUDA C API에 대한 저수준 제어가 필요한 개발자까지, Python을 사용하여 가속 컴퓨팅을 위해 NVIDIA GPU를 활용하고자 하는 개발자.
주요 특징
- 포괄적인 생태계: 저수준 바인딩부터 커널 작성을 위한 고수준 DSL까지 모든 것을 다룹니다.
- Pythonic 인터페이스: 커스텀 CUDA 추상화 유지 관리 부담을 줄여줍니다.
- 전체 API 커버리지:
cuda.bindings를 통해 CUDA 호스트 API에 대한 완전한 액세스를 제공합니다. - 통합 프로파일링: Nsight 및 CUPTI를 통한 성능 분석을 위한 내장 인터페이스가 포함되어 있습니다.
관련
- 프로젝트
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트