找不到 cusolver 库

cusolver library not found

我正在尝试在我的 python 代码中使用 skcuda,但每当我想使用它时,它都会引发以下异常:

Traceback (most recent call last):
File "/home/rohola/Projects/Python/wordnetwork/s.py", line 6, in     <module>
from skcuda import cusolver
File "/home/rohola/anaconda3/lib/python3.4/site-     packages/skcuda/cusolver.py", line 51, in <module>
raise OSError('cusolver library not found')
OSError: cusolver library not found

我刚刚尝试使用 skcuda

from skcuda import cusolver
handle = cusolver.cusolverDnCreate()

我安装了 pycuda,NVIDIA CUDA 工具包。我的代码或依赖项有什么问题?

我终于找到了解决问题的方法。首先,我用

搜索 libcusolver.so
locate libcusolver.so

然后将 cusolver.py 中的以下代码更改为:

_libcusolver = ctypes.cdll.LoadLibrary(_libcusolver_libname)

至:

_libcusolver = ctypes.cdll.LoadLibrary("/usr/local/cuda-7.5/targets/x86_64-linux/lib/"+_libcusolver_libname)

现在是以下代码:

from skcuda import cusolver
handle = cusolver.cusolverDnCreate()

工作没有任何错误。

更新:

如果你安装了cuda8.0或者9.0最好的解决办法就是在cusolver.py中找到这一行:

_libcusolver = ctypes.cdll.LoadLibrary(_libcusolver_libname)

并在其前面添加这一行: ctypes.CDLL('libgomp.so.1',模式=ctypes.RTLD_GLOBAL)

您必须确保您已经安装了 libgomp。

import ctypes
a = ctypes.cdll.LoadLibrary( "/usr/local/cuda-8.0/targets/x86_64-linux/lib/libcusolver.so" )

让我明白

OSError: /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcusolver.so: undefined symbol: GOMP_critical_end

根据 this github thread

这似乎是一个尚未解决的问题

不过,

的 7.5 版本
/usr/lib/x86_64-linux-gnu/libcusolver.so 

似乎指向效果很好。作者的修复似乎适用于它。