私はCuda 5.5でpycudaがうまく動作していましたが、CUDA 6.0にアップグレードする必要がありました。
今、サンプルのPyCudaプログラムを実行しようとすると、次のようになります:
ImportError: libcurand.so.6.0: cannot open shared object file: No such file or directory
私はそのファイルへのパスを見つけました、どういうわけかこのライブラリをリンクすることになっていますか?もしそうなら、どのように?そしてどこへ?
これは、libのパスがLD_LIBRARY_PATH変数に存在しないために発生しています。
このパスをLD_LIBRARY_PATH変数に追加するには、次を使用して~/.bashrc
ファイルを開きます
gedit ~/.bashrc
次の行を追加します。 <path_to_your_lib>
をファイルへのパスに置き換えます。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path_to_your_lib>
解決策:$LD_LIBRARY_PATH
環境変数にCUDAライブラリへのパスを追加する必要があります。
CUDAプログラムを実行する場合、CUDAランタイムライブラリに動的にリンクする必要があります。デフォルトでは、これらのライブラリは/usr/local/cuda/lib
ディレクトリにあります。これらのライブラリを検索するとき、オペレーティングシステムは$LD_LIBRARY_PATH
環境変数で指定されたディレクトリを検索します。ここでCUDAライブラリディレクトリが指定されていない場合、プログラムは上記のエラーで失敗します。
2つのソリューションがあります(これらは、デフォルトのCS部門シェルであるbashシェルを使用していることを前提としています)。
次のコマンドを実行します。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib
この変更は永続的ではないため、ログインするたびに再実行する必要があります。
.profile
ファイル(~/.profile
にあります)を編集します。 $LD_LIBRARY_PATH
変数を設定する行を見つけます。これは次のようになります。
LD_LIBRARY_PATH="/usr/lib:/usr/openwin/lib:/usr/dt/lib:/X11.6/lib:/X11.5/lib:/uva/lib:/gnu/lib"
その行を変更して、CUDAライブラリーへのパスを追加します。
LD_LIBRARY_PATH="/usr/lib:/usr/openwin/lib:/usr/dt/lib:/X11.6/lib:/X11.5/lib:/uva/lib:/gnu/lib:/usr/local/cuda/lib"
ファイルを編集した後、ログアウトして再度ログインするか、次のコマンドを実行する必要があります。
source ~/.profile
このソリューションは永続的であり、一度だけ実行する必要があります。