Cuda 5.5 では pycuda が問題なく動作していましたが、その後 CUDA 6.0 にアップグレードする必要がありました。
サンプルの PyCuda プログラムを実行しようとすると、次のメッセージが表示されます。
ImportError: libcurand.so.6.0: cannot open shared object file: No such file or directory
そのファイルへのパスを見つけましたが、このライブラリを何らかの方法でリンクする必要がありますか? そうであれば、方法は? どこにリンクすればよいですか?
答え1
これは、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>
答え2
解決:CUDA ライブラリへのパスを$LD_LIBRARY_PATH
環境変数に追加する必要があります。
説明:
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
このソリューションは永続的であり、一度だけ実行する必要があります。