엔비디아 CUDA 컴파일러
개발자 | 엔비디아 |
---|---|
발표일 | 2007년 6월 |
안정화 버전 | 12.6.0
/ 2024년 8월 |
언어 | 영어 |
종류 | 컴파일러 |
라이선스 | 사유 |
웹사이트 | docs |
엔비디아 CUDA 컴파일러(Nvidia CUDA Compiler, NVCC)는 엔비디아가 CUDA와 함께 사용하기 위해 개발한 컴파일러이다. 이는 사유 소프트웨어이다.
컴파일러
[편집]CUDA 코드는 중앙 처리 장치 (CPU)와 그래픽 처리 장치 (GPU) 모두에서 실행된다. NVCC는 이 두 부분을 분리하여 호스트 코드(CPU에서 실행될 코드 부분)를 C 컴파일러(예: GNU 컴파일러 모음 (GCC) 또는 인텔 C++ 컴파일러 (ICC) 또는 마이크로소프트 비주얼 C++ 컴파일러)로 보내고, 장치 코드(GPU에서 실행될 부분)는 GPU로 보낸다. 장치 코드는 NVCC에 의해 추가로 컴파일된다. NVCC는 LLVM을 기반으로 한다.[1] 엔비디아가 제공한 문서에 따르면, 버전 7.0의 nvcc는 C++11 표준에서 정의된 많은 언어 구성을 지원하며, C99의 일부 구성을 지원한다. 버전 9.0에서는 C++14 표준의 더 많은 구성이 추가되었다.[2]
CUDA 언어 확장(.cu)을 포함하는 모든 소스 파일은 nvcc로 컴파일해야 한다. NVCC는 cudacc, g++, cl 등 필요한 모든 도구와 컴파일러를 호출하여 작동하는 컴파일러 드라이버이다. NVCC는 C 코드(CPU 코드)를 출력할 수 있으며, 이 코드는 다른 도구를 사용하여 애플리케이션의 나머지 부분과 함께 컴파일되거나, Parallel Thread Execution (PTX) 또는 객체 코드를 직접 출력할 수 있다. CUDA 코드가 포함된 실행 파일은 CUDA 코어 라이브러리 (cuda)와 CUDA 런타임 라이브러리 (cudart)가 필요하다.
널리 사용되는 다른 라이브러리:
- CUBLAS: BLAS 구현
- CUFFT: FFT 구현
- CUDPP (데이터 병렬 프리미티브): 축소, 스캔, 정렬.
- Thrust: 축소, 스캔, 정렬.
같이 보기
[편집]- OpenCL
- 이기종 시스템 아키텍처
- CUDA 바이너리 (cubin) – 팻 바이너리 유형
각주
[편집]- ↑ “CUDA LLVM Compiler”. Nvidia Developer. 2016년 4월 6일에 확인함.
- ↑ “CUDA C++ Programming Guide”. 《NVIDIA Documentation Hub》 (미국 영어). 2019년 6월 28일에 확인함.
일반
[편집]- David B. Kirk, and Wen-mei W. Hwu. Programming massively parallel processors: a hands-on approach. Morgan Kaufmann, 2010.
- “Nvidia CUDA Compiler Driver NVCC”. 《Nvidia Documentation Hub》. 2023년 10월 13일에 원본 문서에서 보존된 문서.
- “CUDPP”. 《GPGPU》. 2018년 11월 17일에 원본 문서에서 보존된 문서.
외부 링크
[편집]- 엔비디아 CUDA 컴파일러 - 공식 웹사이트