nvccとNVIDIA-smiによって示されるさまざまなCUDAバージョン


121

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

ubuntu16.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を使用していますか?

はこの答え見ましたが、それは混乱に対する直接の答えを提供しません、それは私がすでにしたcudatoolkitを再インストールするように私たちに頼むだけです。


29
私はこの正確な質問が過去数日間に何度も出てくるのを見たと思います。しかし、私は今、重複を見つけることができないようです。答えは次のとおりです。nvidia-smiは、ドライバーがサポートするCUDAバージョンを表示します。CUDA 10をサポートする最近の410.xドライバーの1つがインストールされています。ドライバーがサポートするバージョンは、プログラムをコンパイルしてリンクするバージョンとは関係ありません。CUDA 10.0をサポートするドライバーは、CUDA 9.2用に構築されたアプリケーションを実行することもできます…
Michael Kenzel 2018年

@MichaelKenzelなるほど。説明してくれてありがとう!私はその後、CUDA9.2を使用しているゲス...
yuqli

同様の質問がここにあります。@MichaelKenzel答えを追加したい場合は、私が賛成します。
ロバートクロベラ2018年

1
@RobertCrovellaはい、それは私が探していたものでした。私はそこであなたのコメントから答えを学んだだけなので、誰かが賛成に値するなら、それはあなた自身です;)
Michael Kenzel 2018年

回答:


178

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ドライバのインストーラによってインストールされ、そして一般的にビューのGPUドライバではなく、CUDAツールキットのインストーラによってインストールされたものを持っています。

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

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

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

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

nvcc -V予期していなかったバージョンのCUDAが表示される理由(たとえば、インストールしたと思われるバージョン以外のバージョンが表示される)、またはまったく表示されない理由がわからない場合は、バージョンごとに、表示されていない可能性があります。cuda linuxインストールガイドのステップ7(CUDA 11より前)(またはCUDA 11 linuxインストールガイドのステップ6)の必須の指示に従いました。

この質問にはほとんどLinuxが含まれていますが、同じ概念WindowsCUDAインストールにも当てはまることに注意してください。ドライバーには、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を報告する場合、それは一般的に心配する必要はありません。これは正常に機能するはずであり、必ずしも「CUDA10.1をインストールするつもりだったときに実際にCUDA10.2をインストールした」という意味ではありません。

nvccコマンドがまったく何も報告しない場合(例Command 'nvcc' not found...)、これはCUDAのインストールが正しくないことが原因である可能性もあります。つまり、上記の必須手順が正しく実行されていません。findまたはlocate(manページを使用して方法を学習してください)のようなLinuxユーティリティを使用して、nvcc実行可能ファイルを見つけることで、これを理解し始めることができます。1つしかない場合は、そのパスを使用してPATH環境変数を修正できます。



1
@RoberCrovella明快さをありがとう。私は同じ状況にあります。nvidia-smiはCUDAバージョン10.1を示し、nvccは9.1を示します。ネットワークをトレーニングしても大丈夫ですか、それともインストールは問題なく機能しますか?
DhirenHamal19年

私は、インストール後の手順に従って、それでも、NVCCとNVIDIA-SMIは異なるCUDAのバージョンを示している
BeingMIAkashs

それは完全に可能です。最新のドライバー(nvidia-smi現在、CUDA 10.2を表示している)をインストールしたが、以前のバージョンのCUDA(たとえば、10.1)をインストールした場合nvidia-smi、と比較してによって報告される違いがありますnvcc。その場合は問題ありません。
RobertCrovella20年

コメントは役に立ちますが、(たとえば10.1)nvccよりも高いバージョン(たとえば10.2)を報告した場合に何が起こるかについては説明していませんnvidia-smi。その場合、Cudaはそれを10.2としてコンパイルし、10.1で実行しようとします。これは通常"RuntimeError: CUDA error: no kernel image is available for execution on the device"、例としてランタイムエラーになります。
シソーラス

5

nvccはCUDAbinフォルダーにあります-そのため、CUDAbinフォルダーがに追加されているかどうかを確認してください$PATH

具体的には、CUDAのインストール後のアクションを実行したことを確認してください(たとえば、ここから)。

  1. CUDAビンをに$PATH追加します(つまり、次の行をに追加します~/.bashrc
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}

PS。上記の2つのパスが最初に存在することを確認してください:/usr/local/cuda-10.1/binおよび/usr/local/cuda-10.1/NsightCompute-2019.1(インストールされているNsightコンピューティングのバージョンによっては、NsightComputeパスの末尾がわずかに異なる場合があります。

  1. 更新します$LD_LIBRARY_PATH(つまり、に次の行を追加します~/bashrc)。
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

この後、nvccnvidia-smi(またはnvtop)の両方が同じバージョンのCUDAを報告します...


これは、$ PATH $がCUDA10の使用を指定しているためです。ただし、一部のソフトウェアでは、異なるバージョンのCUDAが必要です。
yuqli

NsightCompute-2019.1NsightCompute-1.0CUDA10.0で呼び出されます。
アストリッド

私は、インストール後の手順に従って、それでも、NVCCとNVIDIA-SMIは異なるCUDAのバージョンを示している
BeingMIAkashs

ターミナルを開くたびに、2つのパスコマンドを実行する必要があります(ステップ7のcuda postインストールから)。状態を永続化し、pathコマンドを繰り返し実行する必要がない方法はありますか?
モンティ

@montiはい、あなたはにコマンドを書き込むことができ.bashrcたりbash_profile、各bashのセッションのために自動的にロードして。ここを参照してください:stackoverflow.com/questions/14637979/...
yuqli

0

cuda 10.2を使用している場合:

export PATH=/usr/local/cuda-10.2/bin:/opt/nvidia/nsight-compute/2019.5.0${PATH:+:${PATH}}

私がチェックしたとき、cuda-10.2にnsight-computeのディレクトリがなかったので役立つかもしれません。これが私にとっての問題なのか、それとも公式ドキュメントで言及されないのかはわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.