在Jupyter笔记本中获取'undefined symbol:cudnnCreate',但不在命令行上

时间:2017-02-27 14:50:22

标签: tensorflow jupyter-notebook keras

我正在使用带有tensorflow和GPU的keras运行示例深度网络脚本。它在ubuntu上。从命令行开始,一切运行良好;例如,我可以将任何示例网络复制到python文件中并运行它并验证GPU正在使用。

问题:我已经启动了一个Jupyter笔记本来玩一些脚本,现在我收到一条通知,说明笔记本的内核已经死了,日志中出现以下错误:

F tensorflow/stream_executor/cuda/cuda_dnn.cc:221] Check failed: s.ok() could not find cudnnCreate in cudnn DSO; dlerror: /usr/local/lib/python2.7/dist-packages/tensorflow/python/_pywrap_tensorflow.so: undefined symbol: cudnnCreate

我有一种感觉,笔记本无法找到cuda libs。笔记本没有得到一些路径变量吗?我试图使用os库设置一些(例如LD_LIBRARY_PATH = / usr / local / cuda / lib64),所以无济于事。

2 个答案:

答案 0 :(得分:2)

正如我所怀疑的,正如Jonathan Hseu在评论中所建议的,我的Jupyter笔记本使用的不同环境变量比我在命令行中使用的不同。也就是说,我的.bashrc文件有以下行,它指向正确的cuDNN库:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64

我(误导)将Jupyter笔记本作为不同的用户运行,因此这个环境变量从未被设置过。使用我的.bashrc以自己的身份运行它解决了我的问题。

答案 1 :(得分:0)

我的猜测是你没有正确安装cuDNN。请注意,它是CUDA的单独安装步骤: https://developer.nvidia.com/cudnn

你的命令行工作可能不依赖于cuDNN(也许它不使用卷积),所以你不会失败。