python - 从源代码构建 Tensorflow 时出现非法指令错误

标签 python gcc tensorflow

我正在使用 bazel 从源代码构建 tensorflow,如下所述: https://www.tensorflow.org/install/install_sources

按照安装文档,我成功编译了以下内容:

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both \
--cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"--config=cuda \
-k //tensorflow/tools/pip_package:build_pip_package

已接受答案的组合 here以及安装文档中的注释“将 --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" 添加到 gcc 5 及更高版本的构建命令中"。

然而,import tensorflow as tf 导致错误

illegal instruction (core dumped), exiting python.

我还尝试过:conda update libgcc 无济于事。

如何使用 gcc 5.0 从源代码构建 tensorflow?

最佳答案

错误消息告诉我你的程序是用你的处理器没有的指令编译的,看看你的构建字符串让我怀疑 -mavx2-mfma其中 AFAIK 仅在较新的(和高端)CPU 中实现。 请注意,对于您的 CPU 不支持的指令,gcc 可以使用标志进行编译,但程序不会在您的机器上运行

为确保您的 CPU 支持这些标志,请在 bash 中运行 gcc -march=native -Q --help=target | grep enabled 并检查输出是否包含您要使用的所有构建标志(-mfpmath 除外,它不显示为已启用或已禁用,因为它允许输出列表. 为此,您需要检查完整的 gcc -march=... 命令输出)。

要回答您最后的评论,没有办法“启用”这些指令,它们是在硬件中实现的,它们要么在您的 CPU 上可用,要么不可用。

关于python - 从源代码构建 Tensorflow 时出现非法指令错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45877158/

相关文章:

python - 应用 pos_hint 后获取小部件 XY 位置

c++ - 链接器错误;找不到结构中的静态变量

c++ - 为什么默认构造函数和空构造函数在 C++ 中生成不同的机器代码?

python - 使用 Keras VGG 模型的预期输入范围是多少?

python - 为什么tensorflow中的 `tf.nn.nce_loss`无法在GPU上运行?

Python Requests/urllib — 监控带宽使用

Python - 从子类方法访问父属性很奇怪

python - 在 python 中使用 lxml iterparse 解析大型 .bz2 文件 (40 GB)。未压缩文件不会出现的错误

objective-c - 编译选项 -fPIC 时出现 Gcc 错误

python - keras 分类和二元交叉熵