ZeroLoom

NVCC コマンドについて

November 12, 2024
3 min read
Table of Contents

基本的なオプション


オプション概要使用例
-o [filename]出力ファイル名を指定(指定がない場合はデフォルトで xxx.out が生成される)nvcc -o source source.cu
-I [path]インクルードディレクトリのパスを指定nvcc -I /usr/local/cuda/include source.cu
-L [path]ライブラリディレクトリのパスを指定nvcc -L /usr/local/cuda/lib64 source.cu
-l [library]リンクするライブラリを指定nvcc source.cu -lcudart
-arch=[compute_capability]GPUアーキテクチャを指定nvcc -arch=sm_60 source.cu

Compute Capability


アーキテクチャ
sm_20Fermi(GeForce GTX 400シリーズ)
sm_21Fermi(GeForce GTX 500シリーズ)
sm_30Kepler(GeForce GTX 600シリーズ)
sm_32Kepler(GeForce GT 720)
sm_35Kepler(Tesla K40)
sm_37Kepler(Tesla K80)
sm_50Maxwell(GeForce GTX 750)
sm_52Maxwell(GeForce GTX 970)
sm_53Maxwell(Tegra X1)
sm_60Pascal(Tesla P100)
sm_61Pascal(GeForce GTX 1080)
sm_62Pascal(Tegra X2)
sm_70Volta(Tesla V100)
sm_72Volta(Xavier)
sm_75Turing(GeForce RTX 2080)
sm_80Ampere(A100)
sm_86Ampere(GeForce RTX 30シリーズ)
sm_87Ampere(Jetson AGX Orin)
sm_89Ada Lovelace(GeForce RTX 40シリーズ)
sm_90Hopper(H100)

最適化オプション


オプション概要使用例
-O[number]最適化レベルを指定(0から3までのレベルがあり、-O3 が最も高い最適化レベル)nvcc -O2 source.cu
-use_fast_mathより高速な数学関数(例えば、標準精度ではなく近似精度の関数)を使用(パフォーマンスは向上するが、精度が多少犠牲になる場合がある)nvcc -use_fast_math source.cu

デバッグオプション


オプション概要使用例
-Gデバッグ情報を埋め込むオプションで、カーネル内でのデバッグが可能になる(パフォーマンスが低下するため開発時にのみ使用)nvcc -G source.cu
-gホストコード部分のデバッグ情報を埋め込むnvcc -g source.cu

コンパイル・リンクオプション


オプション概要使用例
-cコンパイルのみを行い、リンクは行わない(オブジェクトファイル(xxx.o ファイル)が生成される)nvcc -c source.cu
-Xcompilerホストコードのコンパイル時に特定のオプションを渡す際に使用(GCCに特定のフラグを渡す際に便利)nvcc source.cu -Xcompiler -fopenmp
-XptxasPTXアセンブラにオプションを渡すために使用nvcc source.cu -Xptxas -v

その他の便利なオプション


オプション概要使用例
—ptxPTX中間コード(アセンブリのようなもの)を出力(CUDAコードがどのように最適化されているかを確認できる)nvcc —ptx source.cu
-lineinfoコンパイル時にコード行情報を生成し、プロファイリング時に行レベルで情報を提供nvcc -lineinfo source.cu
-maxrregcount=[number]カーネルで使用するレジスタの最大数を制限nvcc -maxrregcount=32 source.cu