Ubuntu 22.10中CUDA12环境运行mnistCUDNN提示缺失libcublas.so.11
问题原因与解决办法
核心原因
你遇到的问题本质是cuDNN版本与CUDA Toolkit版本不兼容:
- 你通过包管理器安装的cuDNN 8是针对CUDA 11编译的版本,它的
libcudnn_ops_infer.so.8硬依赖旧版本的libcublas.so.11; - 而你当前系统仅安装了CUDA 12的
libcublas.so.12,两者的应用二进制接口(ABI)不兼容,无法直接替代; - 注意:
nvidia-smi显示的是显卡驱动支持的最高CUDA版本,和你实际安装的CUDA Toolkit版本是两个独立概念,驱动支持CUDA 12不代表cuDNN就能直接适配CUDA 12的库文件。
解决方法
方法1:安装适配CUDA 12的cuDNN版本(推荐)
- 先卸载当前不兼容的cuDNN包:
sudo apt remove --purge libcudnn8* - 下载对应CUDA 12的cuDNN 8.9.x及以上版本deb包(需匹配Ubuntu 22.10的系统架构);
- 重新安装cuDNN包:
sudo dpkg -i libcudnn8_*.deb sudo dpkg -i libcudnn8-dev_*.deb sudo dpkg -i libcudnn8-samples_*.deb - 重新编译mnistCUDNN示例,运行即可正常加载依赖。
方法2:临时软链接 workaround(不推荐长期使用)
如果暂时无法更换cuDNN版本,可以手动创建软链接让系统识别到libcublas.so.11:
cd /usr/local/cuda-12.0/lib64 sudo ln -s libcublas.so.12 libcublas.so.11 sudo ln -s libcublasLt.so.12 libcublasLt.so.11
但这种方法可能引发潜在兼容性问题(比如部分函数行为差异),仅适合临时测试场景。
方法3:提前核对版本兼容性
后续安装前务必确认:cuDNN 8.8.x开始部分支持CUDA 12,cuDNN 8.9.x及以上全面支持CUDA 12,避免再次出现版本不匹配的问题。
内容的提问来源于stack exchange,提问作者Alexander Hörl
相关产品推荐
相关产品推荐

