2016-02-25 27 views
6

GPUを使用するにはawsインスタンスでtheanoライブラリをインポートしようとしています。私は基本的に私のローカルマシンからインスタンスにsshを行い、私が "python -c 'インポートtheano" "を実行するbashスクリプトを開始するawsの設定を自動化するためにbotoを使ってPythonスクリプトを書いたGPUを開始します。私はそれが自動的にGPUを使用して起動するインスタンスのコマンドシェルで直接theanoモジュールをインポートしようとしたとき
cuda_ndarray.cuをコンパイルできませんでした:libcublas.so.7.5:共有オブジェクトファイルを開くことができません

ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.7.5: cannot open shared object file: No such file or directory

:しかし、私は次のエラーを取得します。

Using gpu device 0: GRID K520 (CNMeM is disabled)

私は、私のオートメーションのpythonスクリプトを通してインポートするときに加えなければならない他のインポートがないと思います。おそらく解決策は何でしょうか?

+2

環境に問題がある可能性があります。 python "import os; print(os.eviron [" PATH "])"を実行し、 "/ usr/local/cuda/bin"がPATHにあるかどうかを確認してください。 – zaxliu

+0

また、実行時にCUDAライブラリが見つかることを確認するために 'LD_LIBRARY_PATH'をチェックしてください。 – wildwilhelm

答えて

6

は、私は、UNIXを使用して起動するか、コンパイルとリンクに慣れていないされている人々のために本当に良い答えが見つかりませんよう、明確かつ簡潔なこの問題を解決しようとします。

問題は動的リンクと関係があり、2つの方法で解決できます。まず、LD_LIBRARY_PATH環境変数を設定します。あなたのbashrcに中

LD_LIBRARY_PATH=/usr/local/cuda/ 

それとも単に:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64/ 

このソリューションにより推奨されていないだけで、あなたの的環境ファイルに追加の/ etc /的環境は、CUDAをは/ usr/local/CUDA /にインストールされていると仮定すると、 unix gurus(私はインターネット上でそれを読んだことがありません。私はLinux gurusに従います)。ですから、私が見つけた解決策は簡単です.Linuxのソフトウェアがデフォルトでライブラリを検索するパスを変更してください。ちょうど行うことを行うには(rootとしてそれをしなければならない):同じようlib64にルートへのパスを追加し、このファイルの中

vi libc.conf 

cd /etc/ld.so.conf.d/ 

は、次に例および編集のために選ぶ

/usr/local/cuda/lib64/ 

あなたは、ファイルに次のようなものになるだろう:

\# libc default configuration 

/usr/local/lib 

/usr/local/cuda/lib64/ 

そしてだけ実行します。

sudo ldconfig 

・ホープ、この答えは、見てプログラミングを始めている人を助け、または(theanoが行うように)下のCコードを使用してPythonなどの高レベルの言語を使用して、コンパイルに慣れていませんlinkig ...クマールhereの提案に

3

私は最近同様の問題を抱えていて、何がうまくいかないのかを考え出しています(私のLinuxインストールが壊れていて、新しくインストールしなければならなかった)。このエラーの

潜在的な解決策は(おそらく)自分のホームディレクトリに配置され.theano/ディレクトリ削除にある:

​​

再び起きてからこのエラーを防ぐには、あなたを実行しないでくださいrootユーザーとして(すなわち、sudoなしで)スクリプトを実行します。

スクリプトをルートとして実行すると、ルート権限を持つ隠しディレクトリが作成され、他のプロセスからアクセスできない状態になります。

4

私はCUDA 7.5でのUbuntu 16.04で同じエラーに直面し、解決策hereが見つかりました:

  1. 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++ 
    
  2. glibcのバグに対処するには - 次の設定でホームディレクトリに.theanorc作成:

    [global] 
    device=gpu 
    floatX=float32 
    
    [nvcc] 
    flags=-D_FORCE_INLINES 
    

をとそうでありません環境変数を確認することを忘れないでください: PATHにはあなたのcuda binフォルダの場所が含まれていて、CUDA_HOMEにはcuda homeの場所が含まれているはずです

私はそれは私にこのようにファイルの.bashrc:

export PATH="/usr/local/cuda/bin:$PATH" 
export CUDA_HOME="/usr/local/cuda:$CUDA_HOME" 
0

は、私が

sudo ldconfig /usr/local/cuda/lib64 

を行なったし、それは魔法のように仕事を始めました。ありがとうクマール!

関連する問題