WSL2 Ubuntu22.04下TensorFlow无法加载libnvinfer.so.7及GPU问题
解决WSL2 Ubuntu 22.04中TensorFlow 2.11.0无法调用GPU及TensorRT库加载警告问题
问题背景
- WSL2 Ubuntu 22.04环境,按TensorFlow官方pip指南完成TensorFlow 2.11.0安装
- Windows端已安装NVIDIA驱动,其他WSL2实例可正常运行GPU仿真程序
- 安装过程无报错,但导入TensorFlow时出现TensorRT库加载警告,且TensorFlow无法调用GPU
导入TensorFlow时的警告信息
2023-02-12 14:49:58.544771: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvrtc.so.11.0: cannot open shared object file: No such file or directory 2023-02-12 14:49:58.544845: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory 2023-02-12 14:49:58.544874: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.
已尝试的操作
- 通过命令
sudo find / -name libnvinfer.so.7 2> /dev/null定位到库文件位于/usr/lib/x86_64-linux-gnu/ - 将该目录添加到
LD_LIBRARY_PATH,但问题未解决
系统环境信息
nvidia-smi输出
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 515.65.01 Driver Version: 516.94 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... On | 00000000:01:00.0 Off | N/A | | N/A 43C P0 22W / N/A | 0MiB / 6144MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
nvcc --version输出
nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2023 NVIDIA Corporation Built on Fri_Jan__6_16:45:21_PST_2023 Cuda compilation tools, release 12.0, V12.0.140 Build cuda_12.0.r12.0/compiler.32267302_0
解决方案
1. 匹配CUDA版本与TensorFlow版本
TensorFlow 2.11.0官方要求的CUDA版本为11.2,当前环境nvcc显示CUDA 12.0、nvidia-smi显示CUDA 11.7,版本不匹配是GPU无法调用的核心原因。需卸载现有CUDA 12.0,安装CUDA 11.2:
- 卸载CUDA 12.0:
sudo apt-get --purge remove cuda* sudo apt-get autoremove sudo apt-get autoclean - 安装CUDA 11.2:
安装时取消勾选Driver选项(WSL2依赖Windows端驱动),仅安装Toolkit。wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run sudo sh cuda_11.2.0_460.27.04_linux.run --override
2. 修复TensorRT库依赖
警告中缺失的libnvrtc.so.11.0属于CUDA 11.x组件,安装CUDA 11.2后会自动补齐。同时安装与CUDA 11.2兼容的TensorRT 7.x版本:
sudo apt-get install libnvinfer7 libnvinfer-plugin7
- 配置环境变量,将以下内容添加到
~/.bashrc:
执行export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH export PATH=/usr/local/cuda-11.2/bin:$PATHsource ~/.bashrc使配置生效。
3. 验证GPU可用性
重启WSL2实例后,在Python中执行以下代码验证:
import tensorflow as tf print(tf.test.is_gpu_available()) print(tf.config.list_physical_devices('GPU'))
若输出True及GPU设备信息,说明问题已解决。
内容的提问来源于stack exchange,提问作者BARIS KURT
相关产品推荐
相关产品推荐

