which nvcc
とnvidia-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の再インストールを要求するだけです。
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つの異なることを反映しているため、必ずしも一致しません。