Conda、Keras、cuDNN:不同版本显示
Conda, Keras, cuDNN: different versions showing
我正在使用 Anaconda(在 Ubuntu 18.04 中)并且我有一个安装了 Keras(和 tensorflow-gpu)的环境。以下是不同的版本:
- 凯拉斯:2.2.4
- Tensorflow-GPU:1.15.0
- CuDNN:Cuda10.0.0 的 7.6.5
- CudaToolKit: 10.0.130
这个版本是由 Conda 选择的,但我想知道为什么当 nvidia-smi 告诉我我的 cuda 应该是(或者是?)10.1 时它下载了 10.0:
NVIDIA-SMI 435.21 Driver Version: 435.21 CUDA Version: 10.1
但是,有趣的是,当我执行 nvcc --version:
Cuda compilation tools, release 9.1, V9.1.85
所以我的问题来了:我使用的是什么版本的 Cuda?我应该使用哪个版本的 Cuda? Anaconda 是否按环境处理 Cuda?
PS:(这不是我的问题,而是我为什么要问)
我问这个是因为我 运行 关注这个问题:
tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
我在寻找解决方案 (could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR),但我尝试的答案 none 有效(删除文件,运行 in sudo 等)所以我认为这是一个兼容性问题
注意:虽然我不认为这个答案是解决方案,但它让我可以继续我的项目,所以目前它已经足够好了。
- 重新安装 Cuda 10.1(在我的情况下不是 10.2,因为 Steam 驱动程序 440 存在一些问题)(检查您的 nvidia 驱动程序是什么版本,并确保为该版本安装正确的 Cuda)
- 按照post安装:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions
- 使用 whereis cuda 查找系统上是否还有其他版本(在我的例子中,我有 cuda-dev-9.1,这解释了为什么 nvcc -V 显示那个版本)
- 删除所有旧版本
- 正常情况下,nvcc -V 和 nvidia-smi 应该显示相同的 Cuda 版本
- 如果需要重新安装 cudnn
现在,这并没有修复错误:
Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
一个有效的解决方案(但仍然不是很好)是在 python 文件的顶部添加以下代码(我使用 Keras,但它也可以单独使用 TensorFlow):
from keras.backend.tensorflow_backend import set_session
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
set_session(sess)
它(显然)有效!
非常感谢 Berkay 的支持!
(从技术上讲,尝试在添加另一个之前删除旧版本,但它也有效)
我正在使用 Anaconda(在 Ubuntu 18.04 中)并且我有一个安装了 Keras(和 tensorflow-gpu)的环境。以下是不同的版本:
- 凯拉斯:2.2.4
- Tensorflow-GPU:1.15.0
- CuDNN:Cuda10.0.0 的 7.6.5
- CudaToolKit: 10.0.130
这个版本是由 Conda 选择的,但我想知道为什么当 nvidia-smi 告诉我我的 cuda 应该是(或者是?)10.1 时它下载了 10.0:
NVIDIA-SMI 435.21 Driver Version: 435.21 CUDA Version: 10.1
但是,有趣的是,当我执行 nvcc --version:
Cuda compilation tools, release 9.1, V9.1.85
所以我的问题来了:我使用的是什么版本的 Cuda?我应该使用哪个版本的 Cuda? Anaconda 是否按环境处理 Cuda?
PS:(这不是我的问题,而是我为什么要问)
我问这个是因为我 运行 关注这个问题:
tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
我在寻找解决方案 (could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR),但我尝试的答案 none 有效(删除文件,运行 in sudo 等)所以我认为这是一个兼容性问题
注意:虽然我不认为这个答案是解决方案,但它让我可以继续我的项目,所以目前它已经足够好了。
- 重新安装 Cuda 10.1(在我的情况下不是 10.2,因为 Steam 驱动程序 440 存在一些问题)(检查您的 nvidia 驱动程序是什么版本,并确保为该版本安装正确的 Cuda)
- 按照post安装:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions
- 使用 whereis cuda 查找系统上是否还有其他版本(在我的例子中,我有 cuda-dev-9.1,这解释了为什么 nvcc -V 显示那个版本)
- 删除所有旧版本
- 正常情况下,nvcc -V 和 nvidia-smi 应该显示相同的 Cuda 版本
- 如果需要重新安装 cudnn
现在,这并没有修复错误:
Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
一个有效的解决方案(但仍然不是很好)是在 python 文件的顶部添加以下代码(我使用 Keras,但它也可以单独使用 TensorFlow):
from keras.backend.tensorflow_backend import set_session
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
set_session(sess)
它(显然)有效!
非常感谢 Berkay 的支持!
(从技术上讲,尝试在添加另一个之前删除旧版本,但它也有效)