Ubuntu安装ThunderGBM后导入报错libcusparse.so.10.0不存在
ThunderGBM 导入报错
libcusparse.so.10.0 缺失解决方案 报错根因
你安装的 ThunderGBM 0.3.16 官方预编译 pip 包基于 CUDA 10.0 版本构建,运行时必须依赖 CUDA 10.0 提供的 libcusparse 动态库,当前系统未安装对应版本 CUDA 或 CUDA 环境变量未正确配置就会触发该 OSError。
解决方案
方案一:安装匹配的 CUDA 10.0(最稳定,推荐生产环境使用)
- 先卸载系统中已存在的不兼容 CUDA 版本(无则跳过该步骤)
- 安装 CUDA 10.0 版本,Ubuntu 18.04.5 LTS 对该版本的兼容性良好
- 配置 CUDA 10.0 环境变量,打开
~/.bashrc文件,在末尾添加如下两行:export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} - 执行
source ~/.bashrc让配置生效 - 验证动态库是否可被识别:执行
ldconfig -p | grep libcusparse.so.10.0,有输出即说明配置完成,此时重新导入 ThunderGBM 即可正常运行
方案二:基于现有 CUDA 版本源码编译 ThunderGBM(适配高版本 CUDA 场景)
如果系统已安装更高版本 CUDA(如 CUDA 11.x)不想降级到 10.0,可以选择从源码编译适配当前环境:
- 确认当前 CUDA 版本与 NVIDIA 驱动版本匹配,已安装对应版本 cuDNN、cmake 等编译依赖
- 下载 ThunderGBM 源码,进入源码的 python 包目录
- 执行
python setup.py install完成编译安装,编译过程会自动适配当前 CUDA 版本,不会再依赖 CUDA 10.0 相关动态库
方案三:软链接临时兼容(仅适合测试场景,不推荐生产使用)
如果只是临时测试不想改动CUDA环境,可以通过软链接用高版本libcusparse兼容:
- 先查找系统中已存在的高版本
libcusparse路径:find /usr/local/ -name "libcusparse.so.*" - 为高版本库创建指向 10.0 版本的软链接,示例命令(替换为你实际的库路径):
sudo ln -s /usr/local/cuda/lib64/libcusparse.so.xx.x /usr/local/cuda/lib64/libcusparse.so.10.0 - 执行
sudo ldconfig更新动态库缓存即可,该方案可能因版本接口差异出现运行时异常,不要用于生产环境
内容的提问来源于stack exchange,提问作者arilwan
相关产品推荐
相关产品推荐

