使用 SSE4.1、SSE4.2 和 AVX 指令构建 tensorflow v1.X
Building tensorflow v1.X with SSE4.1, SSE4.2, and AVX instructions
我正在使用 tensorflow(不支持 GPU),我发现与预期相比,性能受到了相当大的影响。所以,我认为是时候注意这些警告了:
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
我看到一些人声称他们已经将速度提高了接近 10 倍,按照这些说明进行构建。
不过,我在执行此操作时发现的说明似乎与旧版本的 TF (v < 1.0) 有关。我想知道是否有人可以向我指出使用较新版本的 tf 进行构建的正确 bazel 命令?
按照此处的说明在 Mac OSX 上安装 python3:https://www.tensorflow.org/install/install_sources 并选择 "No" 以获得 CUDA 支持。
并使用 bazel 命令:
bazel build --linkopt='-lrt' -c opt --copt=-march=native --copt=-mavx --copt=-msse4.2 --copt=-msse4.1 //tensorflow/tools/pip_package:build_pip_package
但是,这会导致许多页面 warrnings/errors... 主要是以下形式:
target '//tensorflow/contrib/learn:learn' depends on deprecated target '//tensorflow/contrib/session_bundle:exporter': Use SavedModel Builder instead.
和
external/protobuf/python/google/protobuf/pyext/message_factory.cc:78:28: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings]
编辑
我会注意到,我从源代码中看到构建速度略有提高。
如评论中所述,这些警告不会阻止构建 TensorFlow。
关于使用 bazel 构建 TensorFlow 的命令,如果在配置期间设置了 -march=native
,则无需显式添加其他优化标志,因为 TensorFlow 已经使用您的 [=29= 中可用的所有 SIMD 指令进行编译] 建筑学。
在为您的架构 (-march=native
) 使用默认优化成功配置后,构建 TF 的命令是:
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
如果您碰巧 select 需要添加特定标志,例如:
bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma //tensorflow/tools/pip_package:build_pip_package
我正在使用 tensorflow(不支持 GPU),我发现与预期相比,性能受到了相当大的影响。所以,我认为是时候注意这些警告了:
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
我看到一些人声称他们已经将速度提高了接近 10 倍,按照这些说明进行构建。
不过,我在执行此操作时发现的说明似乎与旧版本的 TF (v < 1.0) 有关。我想知道是否有人可以向我指出使用较新版本的 tf 进行构建的正确 bazel 命令?
按照此处的说明在 Mac OSX 上安装 python3:https://www.tensorflow.org/install/install_sources 并选择 "No" 以获得 CUDA 支持。
并使用 bazel 命令:
bazel build --linkopt='-lrt' -c opt --copt=-march=native --copt=-mavx --copt=-msse4.2 --copt=-msse4.1 //tensorflow/tools/pip_package:build_pip_package
但是,这会导致许多页面 warrnings/errors... 主要是以下形式:
target '//tensorflow/contrib/learn:learn' depends on deprecated target '//tensorflow/contrib/session_bundle:exporter': Use SavedModel Builder instead.
和
external/protobuf/python/google/protobuf/pyext/message_factory.cc:78:28: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings]
编辑
我会注意到,我从源代码中看到构建速度略有提高。
如评论中所述,这些警告不会阻止构建 TensorFlow。
关于使用 bazel 构建 TensorFlow 的命令,如果在配置期间设置了 -march=native
,则无需显式添加其他优化标志,因为 TensorFlow 已经使用您的 [=29= 中可用的所有 SIMD 指令进行编译] 建筑学。
在为您的架构 (-march=native
) 使用默认优化成功配置后,构建 TF 的命令是:
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
如果您碰巧 select 需要添加特定标志,例如:
bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma //tensorflow/tools/pip_package:build_pip_package