Nvidia CUDA Compiler
# Nvidia CUDA Compiler

Nvidia CUDA Compiler (NVCC) ist ein proprietärer Compiler von Nvidia für die Verwendung mit der Programmierschnittstelle CUDA. CUDA-Code läuft sowohl auf der CPU als auch auf der GPU. NVCC trennt diese beiden Teile und sendet den Host-Code (den Teil des Codes, der auf der CPU ausgeführt wird) an einen C-Compiler wie GCC, ICC oder Microsoft Visual C++ und sendet den Gerätecode (den Teil, der auf der GPU ausgeführt wird) an die GPU. Der Gerätecode wird von NVCC weiter kompiliert. NVCC basiert auf LLVM. Laut der von Nvidia zur Verfügung gestellten Dokumentation unterstützt nvcc in Version 7.0 viele Sprachkonstrukte, die durch den C++11-Standard definiert sind, sowie einige C99-Funktionen. In Version 9.0 werden einige weitere Konstrukte aus dem C++14-Standard unterstützt.
Jede Quelldatei der CUDA-Spracherweiterungen (.cu), muss mit nvcc kompiliert werden. NVCC ruft alle notwendigen Tools und Compiler wie cudacc, g++, cl etc. auf. NVCC kann entweder C-Code (--cuda) für die Ausführung auf der CPU ausgeben, Objektdateien (.o), die dann mit anderen gelinkt werden, oder direkt PTX-Code für die Ausführung auf der GPU. Eine ausführbare Datei mit CUDA-Code benötigt die CUDA-Kernbibliothek (cuda) und die CUDA-Laufzeitbibliothek (cudart).
Andere weit verbreitete Bibliotheken:
* CUBLAS: BLAS-Implementierung
* CUFFT: FFT-Implementierung
* CUDPP (Datenparallele Primitive): Reduktion, Scannen, Sortieren.
* Thrust: Reduktion, Scannen, Sortieren.