web-dev-qa-db-ja.com

Nvidia CUDA Toolkit 9.2のサポート

Tensorflow-gpuがNvidiaのCUDA Toolkitの特定のバージョンにバインドされている理由は何ですか?現在のバージョンは9.0を特に探しているように見え、それ以上のものでは動作しません。たとえば、最新のToolkit 9.2をインストールしてパスに追加しましたが、Tensorflow-gpuは動作せず、9.0を探していると文句を言います。

メジャーバージョンの更新はサポートされていませんが、マイナーリリースは表示されますか?

6
cjibo

それは良い質問です。 NVidiaのWebサイト によると、

CUDAドライバーは下位互換性があります。つまり、CUDAの特定のバージョンに対してコンパイルされたアプリケーションは、後続の(後の)ドライバーリリースで引き続き動作します。

技術的には、CUDAドライバーの以降の反復をサポートすることは問題になりません。そして実際には、ネット上でCUDAとCuDNNの新しいバージョンで動作する非公式のビルド済みバイナリを見つけることができます [1][2] 。さらに簡単にインストール、tensorflow-gpu condaからインストールされたパッケージは現在、CUDA 9.2にバンドルされています。

トピックについて尋ねられたとき、dev answered

理由の答えは、9.1に必要なドライバーの問題、cuda 9.1に必要な新機能の多く、およびいくつかのマイナーな問題です。

そのため、理由はかなりあいまいに見えます-CUDA 9.1(および9.2)には、非常に便利であるために少し最近のグラフィックカードドライバーが必要であることを意味するかもしれません。

NVidiaのバイナリ互換性が正しい場合は、CUDA 9.2ライブラリをCUDA 9.0ライブラリとして単純に名前変更またはリンクしようとすると、動作するはずです。しかし、私はこれを試みる前にすべての作業を保存します...そして、人々がテンソルフローを再コンパイルして最新のCUDAバージョンをサポートするという事実は、これがどのように終わるかのヒントかもしれません。

4
P-Gn

TFをダウンロードすると、ビルド済みのバイナリファイルがダウンロードされます。ビルドプロセスでは、TFはCudaの特定のバージョンにハードリンクされているため、異なるcudaバージョンで使用することはできません。

Cudaの新しい(または古い)バージョンを使用したい場合は、ソースからTFをインストールする必要があります( こちらを確認してください )または、本当に自分でビルドしたくない場合は、チェックしてくださいこれらのレポジトリには、特定のTFバイナリを公開する他のものがありますが、いくつかの例があります。

あなたの便宜のために、事前に構築された各Tensorflowバージョンに必要なCUDA + cuDNNバージョンをここに追加します。

(ここでは、作業したTFバージョンについてだけ書いていますが、古いTFバージョンは古いバージョンのCUDAも使用している可能性があります)

  • tF v1.5 cuda 8.0およびcuDNN 6より前
  • 開始:1.5-CUDA 9およびcuDNN 7に対してビルド済みのバイナリがビルドされるようになりました。
3
Kings85

問題はNVIDIAドライバーではなく、Tensorflow自体にあります。私はそれを機能させるために1時間を費やし、googleapi.comから事前に構築されたバイナリをダウンロードすると、libcudart.so.9.0をロードするためにハードコーディングであることに最終的に気付きました! cuda 9.0と9.2の両方をインストールしている場合、tensorflowは機能します(ただし、実際には9.0から動的ライブラリをロードしています)。 (ところで、anacondaを使用してTFをインストールしました。)

よりクリーンなアプローチは、ソースからTFを構築することです。それほど複雑ではありません。

1
theCat