我的 Cuda 5.5 和 pycuda 運作得很好,但後來我需要升級到 CUDA 6.0。
現在,當我嘗試執行範例 PyCuda 程式時,我得到以下結果:
ImportError: libcurand.so.6.0: cannot open shared object file: No such file or directory
我找到了該文件的路徑,我是否應該以某種方式連結該庫?如果是這樣,怎麼辦?去哪裡?
答案1
發生這種情況是因為 LD_LIBRARY_PATH 變數中不存在 lib 的路徑。
若要將此路徑新增至 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 庫目錄,程式將失敗並出現上述錯誤。
有兩種解決方案(假設您使用的是 bash shell,這是預設的 CS 部門 shell):
運行以下命令:
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
該解決方案是持久性的,只需執行一次。