私はテアノディープラーニングのベンチマークである を、新しくインストールした Ubuntu Mate 16.04 マシンで実行しました。Theano は GPU アクセラレーションを使用して計算を高速化できます。私は CUDA 対応の NVIDIA K2200M ビデオ カードを持っており、nvidia-smi
コマンドが示すように正しくインストールされています。
+------------------------------------------------------+
| NVIDIA-SMI 361.42 Driver Version: 361.42 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro K2200M Off | 0000:01:00.0 Off | N/A |
| N/A 31C P8 N/A / N/A | 212MiB / 2047MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1090 G /usr/lib/xorg/Xorg 200MiB |
| 0 7931 G /usr/lib/firefox/firefox 1MiB |
+-----------------------------------------------------------------------------+
背景を少し説明します。Theano は、 などのいくつかの環境変数を定義するようにセットアップする必要があります$CUDA_ROOT
。これらは を参照しますが、公式の Ubuntu Mate リポジトリから/usr/local/cuda
インストールしても、nvidia-cuda-*
これらのフォルダーは作成されません。ただし、Theano は、計算が CPU で行われているのか GPU で行われているのかを判断するのに役立つ Python コードを提供しており、驚くべきことに、Theano は CUDA インストールを検出します。
ここで問題が発生します。CUDA はシステムによって認識されますが、CUDA が GPU を見つけられないようで、エラーが発生しますWARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not available (error: cuda unavailable)
。
私はaskubuntu.com
Theano開発者にではなく、この問題を発見したのでアンインストールしnvidia-cuda-*
、NVIDIAが提供する公式パッケージからCUDAをインストールしたので、ここに書いています。これガイドに従って、前述のもの/usr/local/cuda
が作成されましたが、Theano コードは CUDA インストールを認識しましたが、それでも GPU を見つけることができませんでした。これが、Theano 側の実装の欠陥ではなく、Ubuntu の問題である可能性があると考える理由です。
答え1
私は、OP で言及したソースから CUDA を再度インストールし、NVIDIA が提供する CUDA パッケージからサンプル データを正しく実行できたため、これは Ubuntu の問題ではなく、Theano の問題であるとわかりました。これにより、(経験の浅い私の意見では) NVIDIA-cuda-toolkit と NVIDIA ドライバー間の統合の問題は排除されました。
将来、私と同じ問題に遭遇する人のために、問題はモジュールにあるようです。 がtheano.sandbox.cuda
168行目から 175 行目 (ファイルを少し変更しただけだと思います) で__init__.py
コンパイルしようとするcuda_ndarray.cu
と、そのファイルが関数 を呼び出します。このファイルcompiler.compile_str(...)
は Theano の開発チームによって作成されたものだと思います。NVCC は正しく実行されますが、 のコンパイルに問題がありますcuda_ndarray
。
したがって、askubuntu が許可したらすぐにこの質問を回答済みとしてマークします。
答え2
CUDA 7.5 を使用している場合は、必ず公式の指示に従ってください。
CUDA 7.5 はデフォルトの g++ バージョンをサポートしていません。サポートされているバージョンをインストールして、それをデフォルトにしてください。
sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
theano GPU テスト コードにエラーがある場合:
エラー (theano.sandbox.cuda): cuda_ndarray.cu のコンパイルに失敗しました: libcublas.so.7.5: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません 警告 (theano.sandbox.cuda): CUDA はインストールされていますが、デバイス GPU が利用できません (エラー: cuda は使用できません)
ldconfig
コマンドを使用して CUDA 7.5 の共有オブジェクトをリンクするだけです:
sudo ldconfig /usr/local/cuda-7.5/lib64