【问题标题】:Still getting "Your CPU supports instructions that this TensorFlow binary was not compiled to use: " while using -march=native在使用 -march=native 时仍然收到“您的 CPU 支持此 TensorFlow 二进制文件未编译使用的指令:”
【发布时间】:2020-01-12 01:36:30
【问题描述】:

我尝试编译 Tensorflow 2.0 以获得额外 cpu 指令(如 avx)的好处,但无济于事。我已经通读了How to compile Tensorflow with SSE4.2 and AVX instructions?,但我仍然感到困惑,除非你正在为另一台 PC 构建,否则 -march=native 应该可以正常工作。我已经尝试使用不同的指令构建 2 次,但仍然收到警告消息。 我想我使用了以下内容,如果有人想提供帮助,我认为我仍然保存了日志。 "bazel build //tensorflow/tools/pip_package:build_pip_package d_pip_package --config=mkl"

"bazel build -c opt --copt=-march=native --config=mkl //tensorflow/tools/pip_package:build_pip_package

这只是为了满足了解正在发生的事情。我目前不需要优化带来的好处,但我不明白为什么我使用的方法不起作用,因为我完全遵循它。

【问题讨论】:

    标签: tensorflow sse bazel


    【解决方案1】:

    正如我在您链接的问题的顶部答案中所做的编辑所指出的那样,似乎 bazel 和/或 TensorFlow 的构建脚本有问题。他们错误处理了 -march=native 并且未能传递它给编译器。我猜它名称中有 = 的 args 有问题,因为像 -mfma 这样的 args 可以工作。

    你是对的,如果他们正确地将-march=native 传递给编译器,就没有问题,也不需要任何这种复杂性。

    IDK 为什么还没人解决这个巨大的不便,而是让许多不是 x86 CPU 功能专家的用户四处寻找他们的 CPU 具有哪些功能以及如何为 gcc/clang 启用它们。这正是 -march=native 的用途,以及为您正在编译的机器适当设置 tuning 选项的另一个重要功能。

    我看过一次,但我实际上并没有使用 TensorFlow,也不知道 bazel,所以我陷入了在命令行和实际调用 g++ ... foo.cpp 之间构建机器的迷宫中

    【讨论】:

    • 好的,我看到了,但默认情况下只是假设我做错了什么。我想像我这种水平的人也无能为力了。我确实设法获得了我的 CPU 支持的所有功能的列表,但我不知道如何正确运行构建命令。
    猜你喜欢
    • 2018-04-14
    • 2018-12-28
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多