TensorFlow创建Session失败求助:CUDA_ERROR_INVALID_DEVICE错误
解决TensorFlow Session创建失败(CUDA_ERROR_INVALID_DEVICE)的思路
看起来你遇到的核心问题是TensorFlow无法正确初始化CUDA设备,报错CUDA_ERROR_INVALID_DEVICE——虽然你的CUDA示例能正常运行,但TensorFlow的设备访问逻辑可能需要调整,这里给你几个可行的解决方向:
1. 手动指定可用的GPU设备
你的环境里有4个Tesla P100 GPU(序号0-3),可能TensorFlow默认尝试使用的设备0存在上下文冲突或权限问题,你可以尝试指定其他GPU规避:
- 在代码中指定:
import tensorflow as tf # 配置只使用GPU 1(可替换为0、2、3中的任意一个) config = tf.ConfigProto( device_count={'GPU': 1}, gpu_options=tf.GPUOptions(visible_device_list="1") ) sess = tf.Session(config=config)
- 通过环境变量指定:
在运行Python脚本前,先设置环境变量限制TensorFlow可见的GPU:
export CUDA_VISIBLE_DEVICES=1 # 同样可替换为0、2、3
2. 验证TensorFlow对GPU设备的识别能力
先让TensorFlow列出所有可识别的本地设备,确认是否能正确检测到GPU:
from tensorflow.python.client import device_lib print(device_lib.list_local_devices())
如果输出里没有GPU设备信息,说明TensorFlow的GPU版本安装有问题,或者CUDA/cuDNN的路径未被正确加载。此时可以检查:
- 确保cuDNN 5.1的头文件(
cudnn.h)放在/usr/local/cuda/include目录下 - 确保cuDNN的库文件(
libcudnn.so.5)放在/usr/local/cuda/lib64目录下 - 确认环境变量
LD_LIBRARY_PATH包含/usr/local/cuda/lib64
3. 重置CUDA设备上下文+优化内存分配
有时候CUDA设备的上下文残留会导致初始化失败,同时内存预分配过多也可能引发问题,可以尝试以下代码:
import tensorflow as tf from tensorflow.python.framework import ops ops.reset_default_graph() # 按需分配GPU内存,避免一次性占用过多显存 config = tf.ConfigProto() config.gpu_options.allow_growth = True sess = tf.Session(config=config)
关于CPU指令警告的说明
那些SSE/AVX相关的警告只是性能提示,不会导致Session创建失败——如果想优化CPU性能,可以从源码编译TensorFlow并开启这些指令优化,但这不是当前问题的必要操作。
内容的提问来源于stack exchange,提问作者呂宗穎
相关产品推荐
相关产品推荐

