Nvidia CUDA Compiler
Original author(s) | Nvidia |
---|---|
Stable release | 12.3 |
Type | Compiler |
License | Proprietary software |
Website | docs |
Nvidia CUDA Compiler (NVCC) is a proprietary compiler by Nvidia intended for use with CUDA.
Compiler[edit]
CUDA code runs on both the CPU and GPU. NVCC separates these two parts and sends host code (the part of code which will be run on the CPU) to a C compiler like GCC or Intel C++ Compiler (ICC) or Microsoft Visual C++ Compiler, and sends the device code (the part which will run on the GPU) to the GPU. The device code is further compiled by NVCC. NVCC is based on LLVM.[1] According to Nvidia provided documentation, nvcc in version 7.0 supports many language constructs that are defined by the C++11 standard and a few C99 features as well. In version 9.0 several more constructs from the C++14 standard are supported.[2]
Any source file containing CUDA language extensions (.cu) must be compiled with nvcc. NVCC is a compiler driver which works by invoking all the necessary tools and compilers like cudacc, g++, cl, etc. NVCC can output either C code (CPU Code) that must then be compiled with the rest of the application using another tool or PTX or object code directly. An executable with CUDA code requires: the CUDA core library (cuda) and the CUDA runtime library (cudart).
Other widely used libraries:
- CUBLAS: BLAS implementation
- CUFFT: FFT implementation
- CUDPP (Data Parallel Primitives): Reduction, Scan, Sort.
- Thrust: Reduction, Scan, Sort.
See also[edit]
- OpenCL
- Heterogeneous System Architecture
- CUDA binary (cubin) – a type of fat binary
References[edit]
- ^ "CUDA LLVM Compiler". NVIDIA Developer. Retrieved Apr 6, 2016.
- ^ "CUDA C++ Programming Guide". NVIDIA Documentation Hub. Retrieved 2019-06-28.
General[edit]
- 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. Archived from the original on Oct 13, 2023.
- "CUDPP". GPGPU. Archived from the original on Nov 17, 2018.