1. ホーム
  2. cuda

[解決済み] nvccとNVIDIA-smiが示す異なるCUDAのバージョン

2022-04-19 04:07:41

質問

を実行して表示されるCUDAのバージョンが異なるため、非常に混乱しています。 which nvccnvidia-smi . 私の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 |

ということは、私はcuda9.2を使っているのでしょうか? which nvcc が示唆するようにcuda10を使用しているのか、それとも nvidia-smi ということでしょうか?I こんな回答がありました。 しかし、それは混乱に対する直接的な答えを提供するものではなく、ただCUDAツールキットを再インストールするよう求めているだけです。

解決方法は?

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

ドライバAPIに必要なサポート(例:linuxのlibcuda.so)は、GPUドライバのインストーラでインストールされます。

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

いずれにせよ、(インストールされた)ドライバーAPIバージョンは、(インストールされた)ランタイムAPIバージョンと必ずしも一致しません。特に、CUDA(すなわちCUDAツールキット)のインストールから独立してGPUドライバーをインストールした場合は、その限りではありません。

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

最近(Linuxの410.48と410.73の間のどこか)、NVIDIAの権力者は、ドライバによってインストールされたCUDA Driver APIバージョンの報告を、以下の出力に追加することに決めました。 nvidia-smi .

これは、インストールされているCUDAランタイムのバージョンとは関係ありません。

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

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

という方は nvcc -V は、あなたが期待していないCUDAのバージョンを表示する(例えば、あなたがインストールしたと思っているものとは別のバージョンを表示する)か、バージョンに関して全く何も表示しません。 cuda linux インストールガイド

この質問はほとんどLinuxを対象にしていますが、同じコンセプトが次の質問にも当てはまります。 ウィンドウズ CUDAのインストール。 ドライバはそれに関連したCUDAドライバのバージョンを持っています(これは、以下の方法で問い合わせることができます。 nvidia-smi など)。 CUDAランタイムには、CUDAランタイムのバージョンも関連付けられています。 この2つは必ずしもすべてのケースで一致するわけではありません。

ほとんどの場合、もし nvidia-smi が報告するCUDAバージョンと数値的に等しいか、それ以上であることを報告します。 nvcc -V これは心配することではありません。 これは、CUDAで定義された互換性パスです(新しいドライバ/ドライバAPIは古いCUDAツールキット/ランタイムAPIをサポートします)。 たとえば、次のようになります。 nvidia-smi は CUDA 10.2 を報告し nvcc -V がCUDA 10.1を報告していても、一般的には心配する必要はないでしょう。 CUDA 10.1をインストールするつもりが、実際にはCUDA 10.2をインストールしてしまったということではありません。

もし nvcc コマンドは全く何も報告しません (例. Command 'nvcc' not found... ) または予期しない CUDA バージョンが報告された場合、これは CUDA のインストールが正しくない、つまり上記の必須手順が正しく実行されていないことが原因である可能性もあります。この問題を解決するには、次のような Linux ユーティリティを使用します。 find または locate (方法はmanページで確認してください)。 nvcc を実行します。1つしかないと仮定すると、そのパスはPATH環境変数を修正するために使用することができます。 その CUDA linux インストールガイド にも設定方法が記載されています。 PATH変数のCUDAバージョンは、実際にインストールしたい/インストールしたCUDAのバージョンに合わせて調整する必要があるかもしれません。

同様に、dockerを使用する場合は nvidia-smi コマンドは一般的にベースマシンにインストールされているドライバのバージョンを報告します。 nvcc --version は、Docker コンテナ内にインストールされた CUDA のバージョンを報告します。

同様に、Anaconda などの CUDA ツールキット用の別のインストール方法を使用した場合、Anaconda によって示されるバージョンは nvidia-smi . ただし、上記のコメントはそのまま適用されます。 Anaconda によってインストールされた古い CUDA ツールキットは、以下のように報告されたより新しいバージョンで使用することができます。 nvidia-smi であること、そして nvidia-smi は Anaconda によってインストールされたものよりも新しい/高い CUDA バージョンを報告しますが、これはインストールに問題があることを意味しません。

ここで も似たような内容の質問です。 上記の扱いは、決して、複数のCUDAバージョンを意図的または非意図的にインストールした場合にのみ、この回答が適用されることを意味するものではありません。 状況は以下の通りです。 CUDAをインストールするときはいつでも . で報告されたバージョンは nvccnvidia-smi が一致しない場合があり、それは 期待される の動作は、ほとんどの場合、極めて正常です。