Nvidia CUDA Compiler: Difference between revisions

Content deleted Content added
Discussing with a student and wanted to specify the initialism for MVCC alongside GCC and ICC.
 
Line 33:
 
==Compiler==
CUDA code runs on both the [[central processing unit]] (CPU) and [[graphics processing unit]] (GPU). NVCC separates these two parts and sends host code (the part of code which will be run on the [[CPU]]) to a [[C (programming language)|C]] compiler like [[GNU Compiler Collection]] (GCC) or [[Intel C++ Compiler]] (ICC) or [[Microsoft Visual C++]] Compiler (MVCC), and sends the device code called "kernels" (the part which will run on the GPU) to the GPU. The device code is further compiled by NVCC. NVCC is based on [[LLVM]].<ref>{{cite web|title=CUDA LLVM Compiler |url=https://developer.nvidia.com/cuda-llvm-compiler|publisher=Nvidia Developer |access-date=Apr 6, 2016}}</ref> 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 from [[C99]]. In version 9.0, several more constructs from the [[C++14]] standard are added.<ref>{{Cite web|url=https://docs.nvidia.com/cuda/cuda-c-programming-guide/|title=CUDA C++ Programming Guide |website=NVIDIA Documentation Hub |language=en-us|access-date=2019-06-28}}</ref>
 
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 [[Parallel Thread Execution]] (PTX) or object code directly. An executable with CUDA code requires: the CUDA core [[Library (computing)|library]] (cuda) and the CUDA runtime library (cudart).