엔비디아 CUDA 컴파일러

엔비디아 CUDA 컴파일러(Nvidia CUDA Compiler, NVCC)는 엔비디아가 CUDA와 함께 사용하기 위해 개발한 컴파일러이다. 이는 사유 소프트웨어이다.

컴파일러
CUDA 코드는 중앙 처리 장치 (CPU)와 그래픽 처리 장치 (GPU) 모두에서 실행된다. NVCC는 이 두 부분을 분리하여 호스트 코드(CPU에서 실행될 코드 부분)를 C 컴파일러(예: GNU 컴파일러 모음 (GCC) 또는 인텔 C++ 컴파일러 (ICC) 또는 마이크로소프트 비주얼 C++ 컴파일러)로 보내고, 장치 코드(GPU에서 실행될 부분)는 GPU로 보낸다. 장치 코드는 NVCC에 의해 추가로 컴파일된다. NVCC는 LLVM을 기반으로 한다. 엔비디아가 제공한 문서에 따르면, 버전 7.0의 nvcc는 C++11 표준에서 정의된 많은 언어 구성을 지원하며, C99의 일부 구성을 지원한다. 버전 9.0에서는 C++14 표준의 더 많은 구성이 추가되었다.

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) – 팻 바이너리 유형

 각주 

일반
 David B. Kirk, and Wen-mei W. Hwu. Programming massively parallel processors: a hands-on approach. Morgan Kaufmann, 2010.



 외부 링크 

분류:컴파일러
분류:엔비디아 소프트웨어