web-dev-qa-db-ja.com

nvccとNVIDIA-smiで表示される異なるCUDAバージョン

which nvccnvidia-smiを実行することで表示される異なるCUDAバージョンに非常に混乱しています。

Ubuntu 16.04にcuda9.2とcuda10の両方がインストールされています。ここで、PATHがcuda9.2を指すように設定します。だから私が実行すると:

 $ which nvcc
 /usr/local/cuda-9.2/bin/nvcc

ただし、実行すると

$ nvidia-smi
Wed Nov 21 19:41:32 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72       Driver Version: 410.72       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   53C    P0    26W /  N/A |    379MiB /  6078MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1324      G   /usr/lib/xorg/Xorg                           225MiB |
|    0      2844      G   compiz                                       146MiB |
|    0     15550      G   /usr/lib/firefox/firefox                       1MiB |
|    0     19992      G   /usr/lib/firefox/firefox                       1MiB |
|    0     23605      G   /usr/lib/firefox/firefox                       1MiB |

which nvccが示唆するようにcuda9.2を使用していますか、それともnvidia-smiが示唆するようにcuda10を使用していますか?

I この答えを見た しかし、それは混乱に対する直接的な答えを提供するものではなく、私がすでに行ったcudatoolkitの再インストールを要求するだけです。

25
yuqli

CUDAには、ランタイムAPIとドライバーAPIの2つの主要なAPIがあります。両方に対応するバージョンがあります(例:8.0、9.0など)

ドライバーAPI(Linuxではlibcuda.soなど)に必要なサポートは、GPUドライバーインストーラーによってインストールされます。

ランタイムAPIの必要なサポート(例:Linuxのlibcudart.so、およびnvcc)は、CUDAツールキットインストーラー(GPUドライバーインストーラーがバンドルされている場合もあります)によってインストールされます。

いずれにせよ、特にCUDA(CUDAツールキット)のインストールとは別にGPUドライバーをインストールする場合、(インストールされた)ドライバーAPIバージョンは(インストールされた)ランタイムAPIバージョンと必ずしも一致しない場合があります。

nvidia-smiツールはGPUドライバーインストーラーによってインストールされ、通常、CUDAツールキットインストーラーによってインストールされるものではなく、GPUドライバーが表示されます。

最近(Linuxの410.48から410.73のドライバーバージョン)、NVIDIAの力は、nvidia-smiからの出力に、ドライバーによってインストールされたCUDAドライバーAPIバージョンのレポートを追加することを決定しました。

これは、インストールされたCUDAランタイムバージョンに接続しません。

nvcc(CUDAツールキットと共にインストールされるCUDAコンパイラドライバーツール)は、常に認識のために構築されたCUDAランタイムバージョンを報告します。インストールされているドライバーのバージョン、またはGPUドライバーがインストールされているかどうかについては何も知りません。

したがって、設計上、これらの2つの数値は、2つの異なることを反映しているため、必ずしも一致しません。

46
Robert Crovella