CUDA nvccの使い方

目 次

コマンドラインでCUDAをいじっていると、nvccのオプションを忘れてしまいがちです.忘備録として以下にまとめます. オプションの詳細はNVCC Command Optionsを参考にして下さい.
使用 Version 10.0
2019.05.09

バージョンの確認

まずはコンパイラのバージョンを確認しましょう.

実行例
nvcc -V

コンパイルと実行

コードのあるディレクトリに移動してください.LinuxならGUIで移動して,右クリックで端末を選ぶと早いです.例として,sample.cuという名前のコードをコンパイルします. Linuxならa.outというファイルが生成され,Windowsならa.exeが生成されます.Windowsでは大量の警告が出るので、非表示にする方法は「Windowsでコンパイル時に出る大量の warning C4819 を消す」を参照してください.

コンパイル実行例
Linux
nvcc sample.cu
Windows
nvcc sample.cu

プログラムの実行は以下の通り入力してエンターキーを押します.

プログラム実行例
Linux
./a.out
Windows
a.exe

生成されるa.outやa.exeでは,同一フォルダ内にある複数のプログラムをコンパイルすると上書きされてしまうので不便です. そこで,任意の名前の実行ファイルを作るには以下の方法です.今回は実行ファイル名をsampleとします.

コンパイル実行例
Linux
nvcc sample.cu -o sample
Windows
nvcc sample.cu -o sample

sampleという実行ファイルが生成されたことを確認して,プログラムの実行は以下の通り入力してエンターキーを押します.

プログラム実行例
Linux
./sample
Windows
sample.exe
ページの先頭へ

最適化

詳細はNVIDIAのNVCC Command Optionsで調べて下さい. O3のOはアルファベット大文字です.O1やO2も状況に応じて使ってみましょう.

最適化実施例
Linux
nvcc -O3 sample.cu -o sample
Windows
nvcc -O3 sample.cu -o sample
ページの先頭へ

Cコンパイラの選択

WindwosはVC++、Linuxではgccがデフォルト設定されます.もしIntel C++ Compiler(Intel C++ Compilerの使い方 )が入っていれば、下記のコマンドで設定可能です.WindowsはVC++で設定可能です.

Cコンパイラの選択
Linux
nvcc -O3 sample.cu -o sample -ccbin icpc

状況によりますが、O3を消してIntel選択だけのオプションが早いときもあります.いろいろ組み合わせを試してください.

ページの先頭へ

FFTライブラリの利用

cuFFTというFFTライブラリ(cuFFT)がNVIDIAから提供されています.自分で書くより餅は餅屋ですが,プログラムにcufft.hというヘッダーファイルだけでなく、コンパイル時にオプションでlcufftと入力しないと使えません.

FFTライブラリの利用
Linux
nvcc -O3 sample.cu -o sample -ccbin icpc -lcufft
Windows
nvcc -O3 sample.cu -o sample -lcufft

ハードを作っているところが提供するライブラリなので素直に使いましょう.

ページの先頭へ

グラフィックスボードの指定

ハード指定で計算が早くなるかどうか良くわかりませんが、このオプションで実行できるグラフィックボードが指定できます.例えばGTX1050だと、Compute Capabilityを ここのサイト(CUDA GPUs)から読み取ると、6.1と記載があります.以下のように -arch=sm_61を追記することで指定が可能です.

グラフィックスボードの指定
Linux
nvcc -O3 sample.cu -o sample -ccbin icpc -lcufft -arch=sm_61
Windows
nvcc -O3 sample.cu -o sample -lcufft -arch=sm_61
ページの先頭へ

実行時間の解析

nvprofという実行時間の解析(nvprof)がNVIDIAから提供されています.何もつけないと沢山の情報が表示されます. 当然オプション(nvprof)の付加が可能です. Visual Profiler(Visual Profiler)というGUIがありますが、コマンドラインで見たい場合に利用できます.

実行時間の解析
Linux
nvprof ./sample
Windows
nvprof sample

GUIが重いというか、NVIDIA NsightのようなIDEが苦手なのでコマンドラインで見たい方はおすすめです.

ページの先頭へ

Windowsでコンパイル時に出る大量の warning C4819 を消す

システムによってWindowsでコンパイルするとwarning C4819が200個ほど出て、非常にデバックがやりずらい場合があります.この警告を消すために、-Xcompiler "/wd 4819"を以下のように追記します.

実行時間の解析
Windows
nvcc -O3 sample.cu -o sample -lcufft -arch=sm_61 -Xcompiler "/wd 4819"

調べるとだいぶ前からのエラーのようで、ぼちぼち解消してほしいところです.

ページの先頭へ



© Measurement System Laboratory, Kyoto Institute of Technology.