TensorFlow 报错 failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_INVALID_DEVICE

今天使用python virtualenv安装TensorFlow gpu版,一直报错

各种配置版本按官网来的https://www.tensorflow.org/

cuda8.0 cudnn5.1

错误如下

2017-06-16 13:53:53.632070: W tensorflow/stream_executor/cuda/cuda_driver.cc:523] A non-primary context 0x3f287f0 exists before initializing the StreamExecutor. We haven't verified StreamExecutor works with that.
2017-06-16 13:53:53.632367: E tensorflow/core/common_runtime/direct_session.cc:138] Internal: failed initializing StreamExecutor for CUDA device ordinal 1: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_INVALID_DEVICE
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/zw/jy/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1292, in __init__
    super(Session, self).__init__(target, graph, config=config)
  File "/home/zw/jy/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 562, in __init__
    self._session = tf_session.TF_NewDeprecatedSession(opts, status)
  File "/usr/lib/python3.5/contextlib.py", line 66, in __exit__
    next(self.gen)
  File "/home/zw/jy/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py", line 466, in raise_exception_on_not_ok_status
    pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.InternalError: Failed to create session.


后来参考一下连接解决错误

https://stackoverflow.com/questions/37893755/tensorflow-set-cuda-visible-devices-within-jupyter

https://stackoverflow.com/questions/44375177/tensorflow-unusual-cuda-related-error

http://www.cnblogs.com/darkknightzh/p/6591923.html


原因是在创建session时没有使用我想让它用的gpu

所以需要设置

CUDA_VISIBLE_DEVICES

方法1 在python程序中

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
 
方法2
运行时 
CUDA_VISIBLE_DEVICES=1 python **.py

方法3
直接在环境变量中 export 

Local rendezvous is aborting with status: INTERNAL: 'cuLaunchKernel(function, gridX, gridY, gridZ, blockX, blockY, blockZ, 0, reinterpret_cast<CUstream>(stream), params, nullptr)' failed with 'CUDA_ERROR_INVALID_HANDLE' Traceback (most recent call last): File "/home/bioinfo/zsl/gvp-master/gvp-master/src/train_cpd.py", line 55, in <module> main() File "/home/bioinfo/zsl/gvp-master/gvp-master/src/train_cpd.py", line 27, in main optimizer = tf.keras.optimizers.Adam() File "/home/bioinfo/zsl/anaconda3/envs/gvp/lib/python3.10/site-packages/keras/src/optimizers/adam.py", line 62, in __init__ super().__init__( File "/home/bioinfo/zsl/anaconda3/envs/gvp/lib/python3.10/site-packages/keras/src/backend/tensorflow/optimizer.py", line 21, in __init__ super().__init__(*args, **kwargs) File "/home/bioinfo/zsl/anaconda3/envs/gvp/lib/python3.10/site-packages/keras/src/optimizers/base_optimizer.py", line 158, in __init__ iterations = backend.Variable( File "/home/bioinfo/zsl/anaconda3/envs/gvp/lib/python3.10/site-packages/keras/src/backend/common/variables.py", line 173, in __init__ initializer = self._convert_to_tensor(initializer, dtype=dtype) File "/home/bioinfo/zsl/anaconda3/envs/gvp/lib/python3.10/site-packages/keras/src/backend/tensorflow/core.py", line 73, in _convert_to_tensor return convert_to_tensor(value, dtype=dtype) File "/home/bioinfo/zsl/anaconda3/envs/gvp/lib/python3.10/site-packages/keras/src/backend/tensorflow/core.py", line 152, in convert_to_tensor return tf.cast(x, dtype) File "/home/bioinfo/zsl/anaconda3/envs/gvp/lib/python3.10/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler raise e.with_traceback(filtered_tb) from None File "/home/bioinfo/zsl/anaconda3/envs/gvp/lib/python3.10/site-packages/tensorflow/python/framework/ops.py", line 6006, in raise_from_not_ok_status raise core._status_to_exception(e) from None # pylint: disable=protected-access tensorflow.python.framework.errors_impl.InternalError: {{function_node __wrapped__Cast_device_/job:localhost/replica:0/task:0/device:GPU:0}} 'cuLaunchKernel(function, gridX, gridY, gridZ, blockX, blockY, blockZ, 0, reinterpret_cast<CUstream>(stream), params, nullptr)' failed with 'CUDA_ERROR_INVALID_HANDLE' [Op:Cast] name:
最新发布
06-20
<think>我们正在处理一个关于CUDA错误的用户查询。用户遇到了CUDA_ERROR_INVALID_HANDLE错误,特别是在使用TensorFlowCUDA进行GPU计算时发生的内部错误。我们需要提供解决方案。根据引用[1],用户提到了一些配置信息,包括CUDA11.1,以及虚拟环境下的设置。同时,引用[1]中还提到了CUDA向后兼容,可以兼容较早版本的其他软件(如cudatoolkit)。这提示我们版本兼容性可能是问题的一个原因。另外,引用[2]和[3]虽然主要讨论的是nodejs和Stable-Baselines3的问题,但其中引用[2]提到了使用特定工具链(如windows-build-tools)和设置环境变量(如设置python解释器和MSVS版本)来解决编译问题。这给我们的启示是:环境配置(包括编译工具链)可能也是导致CUDA错误的一个因素。因此,我们可以从以下几个方面进行排查和解决:1.检查CUDA、cuDNN、TensorFlow版本兼容性。2.检查GPU驱动是否支持当前CUDA版本。3.检查是否有多个CUDA版本冲突。4.检查环境变量设置(如PATH、LD_LIBRARY_PATH等)是否正确指向所需的CUDA版本。5.检查是否有其他进程占用GPU资源(如僵尸进程)。6.尝试重置GPU状态(如使用nvidia-smi重置)。7.更新或重新安装TensorFlowCUDA工具包。下面我们将详细展开解决方案。</think>### CUDA_ERROR_INVALID_HANDLE 错误解决方案 遇到 `CUDA_ERROR_INVALID_HANDLE` 错误(特别是伴随 `cuLaunchKernel internal error`)通常表示 CUDA 运行时与 TensorFlow 的交互出现问题。以下是系统化的解决方案: #### 1. **验证版本兼容性** TensorFlowCUDA/cuDNN 有严格的版本对应关系: - 检查 [TensorFlow 官方文档](https://www.tensorflow.org/install/source#gpu) 确认版本匹配 - 示例兼容组合: - TensorFlow 2.4-2.7 → CUDA 11.0, cuDNN 8.0 - TensorFlow 2.8+ → CUDA 11.2, cuDNN 8.1 - **关键操作**: ```bash conda list | grep -E 'cudatoolkit|cudnn|tensorflow' # 检查虚拟环境内版本 nvcc --version # 验证系统CUDA版本 ``` #### 2. **解决句柄冲突** 该错误常因 GPU 资源未释放导致: - **重启 GPU 驱动**: ```bash sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm # Linux ``` - **终止僵尸进程**: ```bash nvidia-smi # 查看占用GPU的进程 kill -9 <PID> # 终止残留进程 ``` #### 3. **环境配置检查** - **PATH 优先级**: ```bash echo $PATH # 确保虚拟环境的bin路径优先于系统路径 ``` - **库链接验证**: ```bash ldconfig -p | grep cuda # 检查库文件指向 ``` #### 4. **虚拟环境重置** 重新创建隔离环境: ```bash conda create -n tf_env python=3.8 conda activate tf_env conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1 pip install tensorflow-gpu==2.8 ``` #### 5. **硬件诊断** - 测试基础 CUDA 功能: ```bash cd /usr/local/cuda/samples/1_Utilities/deviceQuery sudo make && ./deviceQuery # 验证CUDA基础功能 ``` - 检查 GPU 温度: ```bash nvidia-smi -q -d TEMPERATURE ``` #### 6. **备选方案** 若仍失败: - 降级到 TensorFlow 稳定版本 - 使用 Docker 容器: ```bash docker pull tensorflow/tensorflow:2.8.0-gpu ``` > **根本原因**:此错误多由版本冲突或资源未释放导致,参考案例显示 CUDA 11.1 与某些 TensorFlow 版本存在兼容性问题[^1],同时环境变量配置不当会加剧冲突[^2]。 --- ### 相关问题 1. 如何检测 TensorFlow 是否成功使用了 GPU 加速? 2. CUDA 与 cuDNN 版本不兼容会导致哪些具体错误现象? 3. 在 Docker 容器中配置 TensorFlow-GPU 环境有哪些最佳实践? 4. 多 GPU 训练时出现资源竞争错误应如何排查?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值