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.[1] 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.[2]

Nvidia CUDA Compiler
Basisdaten

Entwickler Nvidia
Aktuelle Version 12.3
Betriebssystem Linux, Windows und Mac OS X
Kategorie Compiler
Lizenz proprietäre Software
https://docs.nvidia.com/cuda

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.

Einzelnachweise

Bearbeiten
  1. CUDA LLVM Compiler. NVIDIA Developer, abgerufen am 6. April 2016 (amerikanisches Englisch).
  2. CUDA C++ Programming Guide. In: NVIDIA Documentation Hub. Abgerufen am 28. Juni 2019 (amerikanisches Englisch).