「NVIDIA CUDA Compiler」の版間の差分
m bot: 解消済み仮リンクHeterogeneous System Architectureを内部リンクに置き換えます |
|||
28行目: | 28行目: | ||
| language footnote = |
| language footnote = |
||
| genre = [[コンパイラ]] |
| genre = [[コンパイラ]] |
||
| license = [[プロプライエタリ |
| license = [[プロプライエタリソフトウェア]] |
||
| website = {{URL|http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#introduction}} |
| website = {{URL|http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#introduction}} |
||
}} |
}} |
||
''' Nvidia CUDA コンパイラ''' ('''NVCC''')は、[[CUDA]]との使用を目指した[[NVIDIA]]による[[プロプライエタリ |
''' Nvidia CUDA コンパイラ''' ('''NVCC''')は、[[CUDA]]との使用を目指した[[NVIDIA]]による[[プロプライエタリソフトウェア|プロプライエタリ]]コンパイラである。CUDAコードは、[[CPU]]と[[GPU]]の両方で動作する。NVCCはCPUとGPUを分離し、ホストコード(CPU上で実行される部分のコード)を[[GNUコンパイラコレクション|GCC]]、[[Intel C++ Compiler]]、あるいは{{仮リンク|Microsoft Visual C|en|Microsoft Visual C}}のような[[C言語]]コンパイラへ転送する。そして、デバイスコード(GPU上で実行する部分)をGPUへ転送する。デバイスコード([[Parallel Thread Execution|PTX]])は、さらにGPU固有のバイナリコードへコンパイルされる。NVCCは[[LLVM]]に基づいている<ref>{{cite web|title=CUDA LLVM Compiler|url=https://developer.nvidia.com/cuda-llvm-compiler|publisher=NVIDIA Corporation|accessdate=Apr 6, 2016}}</ref>。NVIDIAが提供した資料に従うと、nvccはバージョン7.0で[[C++11]]標準と少数の[[C99]]の機能によって定義される多くの言語構造をサポートしている。バージョン9.0において[[C++14]]標準由来のより多くの言語構造がサポートされている<ref>https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-cplusplus-language-support</ref>。 |
||
CUDAの言語拡張(.cu)を含んでいるあらゆるソースファイルは、nvccでコンパイルされる。NVCCは、コンパイラドライバであり、全ての必要なツールとcudacc、g++、clなどのようなコンパイラによって動作する。NVCCは、C code(CPUコード)、[[Parallel Thread Execution|PTX]](GPU擬似アセンブラ)、あるいはオブジェクトコード(GPUで直接実行可能)のいずれも出力できる。C codeは、CPU用のコードなので、他のツールを使ってアプリケーション(CPU用コードで書かれている)の他の部分と一緒にコンパイル・リンクされなければならない。CUDAコードを含んだ実行ファイルは、CUDAコアライブラリ(cuda)とCUDAランタイムライブラリ(cudart)を必要とする。 |
CUDAの言語拡張(.cu)を含んでいるあらゆるソースファイルは、nvccでコンパイルされる。NVCCは、コンパイラドライバであり、全ての必要なツールとcudacc、g++、clなどのようなコンパイラによって動作する。NVCCは、C code(CPUコード)、[[Parallel Thread Execution|PTX]](GPU擬似アセンブラ)、あるいはオブジェクトコード(GPUで直接実行可能)のいずれも出力できる。C codeは、CPU用のコードなので、他のツールを使ってアプリケーション(CPU用コードで書かれている)の他の部分と一緒にコンパイル・リンクされなければならない。CUDAコードを含んだ実行ファイルは、CUDAコアライブラリ(cuda)とCUDAランタイムライブラリ(cudart)を必要とする。 |
2020年12月23日 (水) 22:30時点における版
作者 | NVIDIA |
---|---|
種別 | コンパイラ |
ライセンス | プロプライエタリソフトウェア |
公式サイト |
docs |
Nvidia CUDA コンパイラ (NVCC)は、CUDAとの使用を目指したNVIDIAによるプロプライエタリコンパイラである。CUDAコードは、CPUとGPUの両方で動作する。NVCCはCPUとGPUを分離し、ホストコード(CPU上で実行される部分のコード)をGCC、Intel C++ Compiler、あるいはMicrosoft Visual CのようなC言語コンパイラへ転送する。そして、デバイスコード(GPU上で実行する部分)をGPUへ転送する。デバイスコード(PTX)は、さらにGPU固有のバイナリコードへコンパイルされる。NVCCはLLVMに基づいている[1]。NVIDIAが提供した資料に従うと、nvccはバージョン7.0でC++11標準と少数のC99の機能によって定義される多くの言語構造をサポートしている。バージョン9.0においてC++14標準由来のより多くの言語構造がサポートされている[2]。
CUDAの言語拡張(.cu)を含んでいるあらゆるソースファイルは、nvccでコンパイルされる。NVCCは、コンパイラドライバであり、全ての必要なツールとcudacc、g++、clなどのようなコンパイラによって動作する。NVCCは、C code(CPUコード)、PTX(GPU擬似アセンブラ)、あるいはオブジェクトコード(GPUで直接実行可能)のいずれも出力できる。C codeは、CPU用のコードなので、他のツールを使ってアプリケーション(CPU用コードで書かれている)の他の部分と一緒にコンパイル・リンクされなければならない。CUDAコードを含んだ実行ファイルは、CUDAコアライブラリ(cuda)とCUDAランタイムライブラリ(cudart)を必要とする。
他の広く使われているライブラリは以下のものがある。
- CUBLAS: BLAS の実装
- CUFFT: FFT の実装
- CUDPP (Data Parallel Primitives): 並列プログラミングで使用する Reduction, Scan, Sort
- Thrust: 並列プログラミングで使用する Reduction, Scan, Sort
関連項目
出典
- ^ “CUDA LLVM Compiler”. NVIDIA Corporation. Apr 6, 2016閲覧。
- ^ https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-cplusplus-language-support
- David B. Kirk, and Wen-mei W. Hwu. Programming massively parallel processors: a hands-on approach. Morgan Kaufmann, 2010.
- Nvidia Documentation on nvcc. http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/
- CUDPP. http://gpgpu.org/developer/cudpp