Nvidia CUDA Compiler: Difference between revisions

Content deleted Content added
Added short description.
Tags: Mobile edit Mobile web edit Advanced mobile edit
 
(10 intermediate revisions by 9 users not shown)
Line 1:
{{shortShort description|Proprietary compiler by Nvidia}}
{{Infobox software
| name =
| title =
| logo = <!-- ImageFile name is enoughonly -->
| logo caption =
| logo_sizelogo size =
| logo_altlogo alt =
| screenshot = <!-- ImageFile name is enoughonly -->
| caption =
| screenshot_sizescreenshot size =
| screenshot_altscreenshot alt =
| author = <!-- Human name(s) -->
| collapsible =
| authordeveloper = [[Nvidia]]
| released = <!-- {{Start date and age|YYYY2007|MM|DD|df=yes/no06}} -->
| developer =
| latest release version = 12.6.0
| released = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| latest release date = <!-- {{Start date and age|YYYY2024|MM|DD|df=yes/no08}} -->
| discontinued =
| latest release version =
| latest release date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY2024|MM|DD|df=yes/no08}} -->
| programming language = <!-- [[C++]]? -->
| operating system =
| platform =
| size =
| language = English
| language count = <!-- DO NOT include this parameter unless you know what it does -->
| language footnote =
| genre = [[compilerCompiler]]
| license = [[proprietaryProprietary software|Proprietary]]
| website = {{URL|https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#introduction}}
}}
 
''' Nvidia CUDA Compiler''' ('''NVCC''') is a [[compiler]] by [[Nvidia]] intended for use with [[CUDA]]. It is [[proprietary software]].
''' Nvidia CUDA Compiler''' ('''NVCC''') is a [[proprietary software|proprietary]] [[compiler]] by [[Nvidia]] intended for use with [[CUDA]]. 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 (programming language)|C]] compiler like [[GNU Compiler Collection|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]].<ref>{{cite web|title=CUDA LLVM Compiler|date=7 May 2012|url=https://developer.nvidia.com/cuda-llvm-compiler|publisher=NVIDIA Corporation|accessdate=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 [[C99]] features as well. In version 9.0 several more constructs from the [[C++14]] standard are supported.<ref>{{Cite web|url=https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html|title=CUDA C Programming Guide|website=docs.nvidia.com|language=en-us|access-date=2019-06-28}}</ref>
 
==Compiler==
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 (cuda) and the CUDA runtime library (cudart).
''' Nvidia CUDA Compiler'''code ('''NVCC''')runs ison aboth [[proprietary software|proprietary]]the [[compiler]]central byprocessing [[Nvidiaunit]] intended(CPU) for use withand [[CUDA]].graphics CUDAprocessing code runs on both the [[CPUunit]] 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 (programming language)|C]] compiler like [[GNU Compiler Collection|GCC]] (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|date=7 May 2012|url=https://developer.nvidia.com/cuda-llvm-compiler|publisher=NVIDIANvidia Developer Corporation|accessdateaccess-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]] features as well. In version 9.0, several more constructs from the [[C++14]] standard are supportedadded.<ref>{{Cite web|url=https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html|title=CUDA C++ Programming Guide |website=docs.nvidia.comNVIDIA 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]] (PTX) or object code directly. An executable with CUDA code requires: the CUDA core [[Library (computing)|library]] (cuda) and the CUDA runtime library (cudart).
 
Other widely used libraries:
Line 45 ⟶ 46:
* [[OpenCL]]
* [[Heterogeneous System Architecture]]
* [[CUDA binary]] (cubin) – a type of fat binary
 
== References ==
{{Reflist}}
 
===General===
# David B. Kirk, and Wen-mei W. Hwu. Programming massively parallel processors: a hands-on approach. Morgan Kaufmann, 2010.
# {{Cite web |title=Nvidia DocumentationCUDA onCompiler nvccDriver NVCC |url=https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/ |url-status=live |archive-url=https://web.archive.org/web/20231013194328/https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/ |archive-date=Oct 13, 2023 |website=Nvidia Documentation Hub}}
# {{Cite web |title=CUDPP |url=http://gpgpu.org/developer/cudpp |url-status=dead |archive-url=https://web.archive.org/web/20181117222643/http://gpgpu.org/developer/cudpp |archive-date=Nov 17, 2018 |website=GPGPU}}
 
== External links ==
*{{Official website|docs.nvidia.com/cuda/cuda-compiler-driver-nvcc}}
 
[[Category:Nvidia software]]
[[Category:Compilers]]
{{computer-stub}}