当数据集变大时“未检测到 g++”,GPU 中的矩阵大小是不是有限制?
Posted
技术标签:
【中文标题】当数据集变大时“未检测到 g++”,GPU 中的矩阵大小是不是有限制?【英文标题】:"g++ not detected" while data set goes larger, is there any limit to matrix size in GPU?当数据集变大时“未检测到 g++”,GPU 中的矩阵大小是否有限制? 【发布时间】:2016-02-13 18:40:18 【问题描述】:我在使用 Keras 为具有大 3D 张量的语言模型训练 RNN 时收到此消息(从文本生成,热编码,结果形状为 (165717, 25, 7631)):
WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to
execute optimized C-implementations (for both CPU and GPU) and will default to
Python implementations. Performance will be severely degraded. To remove this
warning, set Theano flags cxx to an empty string.
ERROR (theano.sandbox.cuda): nvcc compiler not found on $PATH. Check your nvcc
installation and try again.
但是当我将数据集的大小限制为较小时,一切都很顺利。因此,我想知道 Theano 或 CUDA 是否限制了矩阵的大小?
此外,我有更好的方法来做一个热门的表示吗?我的意思是,在大型 3D 张量中,由于 one-hot 表示,大多数元素都是 0。但是,我没有找到接受单词索引表示的层。
【问题讨论】:
对我来说这似乎是一条非常清晰的错误消息,它与 CUDA 无关。您的 theano 配置不正确,它找不到主机或 GPU 编译器。修复它,问题就会消失 @talonmies 我没有说清楚。我的代码在小数据集上运行良好(仅用于调试我的代码),这样的错误只在大数据集上发生。 是的,但错误消息也会告诉您为什么会发生这种情况。在小尺寸下,使用纯 Python 实现,因为尝试使用 GPU 没有性能优势 【参考方案1】:conda install mingw libpython
确保已安装。从手册中指出的另一篇帖子https://***.com/a/31109547/3598832 中获取此答案。
【讨论】:
UnsatisfiableError: 发现以下规范存在冲突:-mingw - python 3.5* 我用 python 2.7 代替。【参考方案2】:您的 Theano 安装未完成。
问题粘贴结果中提到了两个问题:
警告(theano.configdefaults):未检测到 g++! Theano 将 无法执行优化的 C 实现(对于 CPU 和 GPU) 并将默认为 Python 实现。性能将是 严重退化。要删除此警告,请将 Theano 标志 cxx 设置为 空字符串。
我怀疑即使数据量很小,你也会看到这个,但这是一个警告,所以事情会继续成功运行(自动使用纯 Python 实现)。
错误(theano.sandbox.cuda):在 $PATH 上找不到 nvcc 编译器。查看 您的 nvcc 安装,然后重试。
这是在数据大小增加时发生的情况,因为现在正在尝试使用 GPU。
两条消息都表明 Theano 安装不完整。第一个表明您没有正确设置 C++ 编译器。第二个表示您没有正确设置 CUDA。您需要按照installation documentation 的相应部分来解决这些问题。请注意,当您想要使用纯 Python 实现以外的任何东西时,仅执行 pip install Theano
是不够的。
【讨论】:
以上是关于当数据集变大时“未检测到 g++”,GPU 中的矩阵大小是不是有限制?的主要内容,如果未能解决你的问题,请参考以下文章