如何使用 SSE4.2 和 AVX 指令编译 Tensorflow?

Posted

技术标签:

【中文标题】如何使用 SSE4.2 和 AVX 指令编译 Tensorflow?【英文标题】:How to compile Tensorflow with SSE4.2 and AVX instructions? 【发布时间】:2016-12-22 23:21:14 【问题描述】:

这是从运行脚本以检查 Tensorflow 是否正常工作时收到的消息:

I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcurand.so.8.0 locally
W tensorflow/core/platform/cpu_feature_guard.cc:95] 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:95] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:910] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero

我注意到它提到了 SSE4.2 和 AVX,

    什么是 SSE4.2 和 AVX? 这些 SSE4.2 和 AVX 如何改进 Tensorflow 任务的 CPU 计算。 如何让Tensorflow使用这两个库编译?

【问题讨论】:

我喜欢在 Xeon E5 v3 上使用这些标志 bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --config=cuda -k //tensorflow/tools/pip_package:build_pip_package 构建,与官方版本相比,8k matmul CPU 速度提高了 3 倍(0.35 -> 1.05 T ops/sec) 别忘了NOTE on gcc 5 or later: the binary pip packages available on the TensorFlow website are built with gcc 4, which uses the older ABI. To make your build compatible with the older ABI, you need to add --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" to your bazel build command. ABI compatibility allows custom ops built against the TensorFlow pip package to continue to work against your built package.从这里tensorflow.org/install/install_sources 我有一些为 TF 编译的二进制文件,支持这些指令github.com/lakshayg/tensorflow-build。您可能会觉得这很有帮助。 @IvanKush 添加了该标志,我仍然无法成功导入 tensorflow(编译良好)。如果你用 gcc 5 编译成功,请看:***.com/questions/45877158/… 如果使用 Ubuntu 16.04,我们在github.com/mind/wheels为您可能需要的几乎所有变体提供构建 【参考方案1】:

我刚刚遇到了同样的问题,Yaroslav Bulatov 的建议似乎不包括 SSE4.2 支持,添加 --copt=-msse4.2 就足够了。最后,我成功构建了

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --config=cuda -k //tensorflow/tools/pip_package:build_pip_package

没有收到任何警告或错误。

对于任何系统来说,最好的选择可能是:

bazel build -c opt --copt=-march=native --copt=-mfpmath=both --config=cuda -k //tensorflow/tools/pip_package:build_pip_package

更新:the build scripts may be eating -march=native,可能是因为它包含=。)

-mfpmath=both 仅适用于 gcc,不适用于 clang。 -mfpmath=sse 可能同样好,如果不是更好的话,它是 x86-64 的默认值。 32 位构建默认为-mfpmath=387,因此更改这将有助于 32 位。 (但如果您想要高性能的数字运算,您应该构建 64 位二进制文​​件。)

我不确定 TensorFlow 对 -O2-O3 的默认设置是什么。 gcc -O3 启用了包括自动矢量化在内的全面优化,但这有时会使代码变慢。


这是做什么的:--copt for bazel build 将一个选项直接传递给 gcc 以编译 C 和 C++ 文件(但不链接,因此您需要一个不同的选项来进行跨文件链接时间优化)

x86-64 gcc 默认只使用 SSE2 或更旧的 SIMD 指令,因此您可以在 any x86-64 系统上运行二进制文件。 (见https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html)。那不是你想要的。你想制作一个利用你的 CPU 可以运行的所有指令的二进制文件,因为你只在你构建它的系统上运行这个二进制文件。

-march=native 启用您的 CPU 支持的所有选项,因此它使-mavx512f -mavx2 -mavx -mfma -msse4.2 成为冗余。 (另外,-mavx2 已经启用了-mavx-msse4.2,所以雅罗斯拉夫的命令应该没问题)。此外,如果您使用的 CPU 不支持这些选项之一(如 FMA),则使用 -mfma 会生成因非法指令而出错的二进制文件。

TensorFlow's ./configure defaults to enabling -march=native,因此使用它应该避免需要手动指定编译器选项。

-march=native 启用-mtune=native,因此it optimizes for your CPU 用于诸如哪种 AVX 指令序列最适合未对齐加载。

这都适用于 gcc、clang 或 ICC。 (对于 ICC,您可以使用 -xHOST 而不是 -march=native。)

【讨论】:

确实有效> +1!所以看起来-march=native 没有它的工作。此外,删除 --config=cuda(如果不需要 CUDA 支持)和 -k(因为在编译期间没有发生错误)也可以。 卸载并重新安装新的编译版本后,我仍然收到有关 AVX、AVX2 和 FMA 的警告。 我不得不删除 --copt=-mfpmath=both 以使其在 macOS 上与 clang 一起使用。它会影响生成的二进制文件吗? 只是为了澄清:当我创建配置文件时......我是否只使用--copt=-march=native?或者我是否将在原始帖子中看到的所有优化都放在我可以选择进行优化的地方? 我收到一条错误消息,说“构建”命令仅支持工作区?怎么办?【参考方案2】:

让我们先解释一下为什么会首先看到这些警告


很可能您没有从源代码安装 TF,而是使用了 pip install tensorflow 之类的东西。这意味着您安装了未针对您的体系结构优化的(由其他人)预构建的二进制文件。这些警告准确地告诉你:你的架构上有一些东西是可用的,但它不会被使用,因为二进制文件不是用它编译的。这是来自documentation的部分。

TensorFlow 在启动时检查它是否已使用 CPU 上可用的优化。如果没有优化 包括在内,TensorFlow 将发出警告,例如AVX、AVX2 和 FMA 不包括说明。

好消息是,很可能你只是想学习/实验 TF,所以一切都会正常工作,你不必担心


什么是 SSE4.2 和 AVX?

***对SSE4.2 和AVX 有很好的解释。这些知识不需要擅长机器学习。您可能会将它们视为一组额外的instructions,供计算机使用针对单个指令的多个数据点来执行可能自然并行化的操作(例如添加两个数组)。

SSE和AVX都是SIMD(单指令多数据)抽象思想的实现,即

弗林分类法中的一类并行计算机。它描述了 具有执行相同功能的多个处理元件的计算机 同时对多个数据点进行操作。因此,此类机器 利用数据级并行性,但不利用并发性:有 同时(并行)计算,但只有一个进程 (指令)在给定的时刻

这足以回答您的下一个问题。


这些 SSE4.2 和 AVX 如何提高 TF 任务的 CPU 计算能力

它们允许更有效地计算各种向量(矩阵/张量)运算。你可以在these slides阅读更多内容


如何使用这两个库让Tensorflow编译?

您需要有一个经过编译的二进制文件以利用这些说明。最简单的方法是compile it yourself。正如 Mike 和 Yaroslav 所建议的,您可以使用以下 bazel 命令

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --config=cuda -k //tensorflow/tools/pip_package:build_pip_package

【讨论】:

这个命令行是什么意思?在这种情况下我应该安装bazel 吗? 有人用 MSYS2 或 Visual Studio 2017 社区版在 64 位 windows 下构建吗?可以分享一下步骤吗? 这个pip包可以安装到本地机器的conda环境吗? 3 多个小时后(经过的时间:11984.258s)我得到了FAILED: Build did NOT complete successfully。自己编译也没那么简单。 这里也一样。我的构建也失败了,然后在日志中我可以看到: cl:命令行警告 D9002:忽略未知选项'-mavx' cl:命令行警告 D9002:忽略未知选项'-mavx2' cl:命令行警告 D9002:忽略未知选项'-mfma' cl:命令行警告 D9002:忽略未知选项'-mfpmath=both' cl:命令行警告 D9002:忽略未知选项'-msse4.2' cl:命令行警告 D9002:忽略未知选项'- fno-strict-aliasing' cl : 命令行警告 D9002 : 忽略未知选项 '-fexceptions' 所以这些选项是未知的【参考方案3】:

让我先回答你的第三个问题:

如果您想在 conda-env 中运行自编译版本,您可以。这些是我运行 tensorflow 以在我的系统上安装的一般说明以及附加说明。注意:此版本适用于运行 Ubuntu 16.04 LTS 的 AMD A10-7850 版本(检查您的 CPU 以了解支持的指令......它可能会有所不同)。我在我的 conda-env 中使用 Python 3.5。归功于 tensorflow 源安装页面和上面提供的答案。

git clone https://github.com/tensorflow/tensorflow 
# Install Bazel
# https://bazel.build/versions/master/docs/install.html
sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel
# Create your virtual env with conda.
source activate YOUR_ENV
pip install six numpy wheel, packaging, appdir
# Follow the configure instructions at:
# https://www.tensorflow.org/install/install_sources
# Build your build like below. Note: Check what instructions your CPU 
# support. Also. If resources are limited consider adding the following 
# tag --local_resources 2048,.5,1.0 . This will limit how much ram many
# local resources are used but will increase time to compile.
bazel build -c opt --copt=-mavx --copt=-msse4.1 --copt=-msse4.2  -k //tensorflow/tools/pip_package:build_pip_package
# Create the wheel like so:
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
# Inside your conda env:
pip install /tmp/tensorflow_pkg/NAME_OF_WHEEL.whl
# Then install the rest of your stack
pip install keras jupyter etc. etc.

关于你的第二个问题:

在我看来,具有优化的自编译版本非常值得。在我的特定设置中,过去需要 560-600 秒的计算现在只需要大约 300 秒!虽然确切的数字会有所不同,但我认为您可以预期在您的特定设置下总体速度会提高 35-50%。

最后你的第一个问题:

上面已经提供了很多答案。总结一下:AVX、SSE4.1, SSE4.2、MFA 是 X86 CPU 上不同类型的扩展指令集。许多包含用于处理矩阵或向量运算的优化指令。

我将强调我自己的误解,希望能为您节省一些时间:并不是说 SSE4.2 是取代 SSE4.1 的更新版本的指令。 SSE4 = SSE4.1(一组47条指令)+SSE4.2(一组7条指令)。

在 tensorflow 编译的上下文中,如果你的计算机支持 AVX2 和 AVX,以及 SSE4.1 和 SSE4.2,你应该把这些优化标志全部放入。不要像我做的那样,只使用 SSE4.2,认为它更新并且应该取代 SSE4.1。这显然是错误的!我不得不重新编译,因为这花了我 40 分钟。

【讨论】:

.whl 文件存储在哪里,因为我也想在 Windows 上安装它? 它存储在这里:/tmp/tensorflow_pkg(在您的 linux 驱动器上) 你能告诉我这需要多长时间吗?大约 2 小时,我的笔记本电脑死机了。它运行 ububtu,具有 4gb 内存和 i5 处理器 嗯,编译tensorflow确实需要很长时间。在我的 8 GB 笔记本电脑上,大约需要 1.5 小时。但是,您的安装时间可能会有所不同,并且会受到可用内存的严重影响。众所周知,这些编译会占用大量 RAM。为了减少资源需求并可能防止冻结,您可以通过在“bazel build”之后添加以下标志来运行编译: --local_resources 2048,.5,1.0 这通常有助于冻结,但可能会使编译时间加倍。例如:在我的一个更快的系统上,没有标志的编译需要 2200 秒,标志 4500 ! 总的来说,我发现在 windows 上做 ML 是一个很大的痛苦。如果你在 linux 环境中工作,你最终会花费大量时间来尝试让那些工作正常工作。我相信需要为每个操作系统编译张量流。此外,如果你去这里:link,你会看到 tensorflow 不受官方支持。这里确实有一些关于如何为 Windows 编译 tensorflow 的指南:link。虽然我不得不承认,我还没有尝试过。我只是在使用 ubuntu。【参考方案4】:

这些是SIMDvector processing instruction sets。

在许多任务中使用向量指令更快;机器学习就是这样一项任务。

引用tensorflow installation docs:

为了与尽可能广泛的机器兼容,TensorFlow 默认仅在 x86 机器上使用 SSE4.1 SIMD 指令。大多数现代 PC 和 Mac 支持更高级的指令,因此,如果您要构建只能在您自己的机器上运行的二进制文件,您可以通过在 bazel 构建命令中使用 --copt=-march=native 来启用这些指令。

【讨论】:

为什么 Tensorflow 二进制文件不使用 CPU 调度? GCC 对它的支持很差吗? 链接“tensorflow 安装文档”不起作用。所以我想知道这个答案是否仍然有效。请回复! @ChrisPushbullet 您可以编译 Tensorflow 以支持 GPU 的多种不同计算能力,但它们会大大增加二进制大小。我的猜测是 CPU 也是如此。【参考方案5】:

感谢所有这些回复和一些尝试和错误,我设法将它安装在带有clang 的 Mac 上。所以只是分享我的解决方案,以防它对某人有用。

    按照Documentation - Installing TensorFlow from Sources 上的说明进行操作

    当提示输入时

    当指定 bazel 选项“--config=opt”时,请指定要在编译期间使用的优化标志 [默认为 -march=native]

然后复制粘贴这个字符串:

-mavx -mavx2 -mfma -msse4.2

(默认选项导致错误,其他一些标志也是如此。上述标志没有错误。顺便说一句,我对所有其他问题都回复了n

安装后,我在训练深度模型时验证了大约 2 倍到 2.5 倍的加速比基于默认***的另一个安装 - Installing TensorFlow on macOS

希望对你有帮助

【讨论】:

如果您的编译器正确支持 -march=native 应该会更好。它还设置-mtune=native 为您的CPU 做出好的指令选择。例如在 Haswell 及更高版本上,它会禁用 -mavx256-split-unaligned-store-mavx256-split-unaligned-load,它们默认为 -mtune=generic 启用,并且当数据不知道对齐但结果是在运行时时会损害性能。 谢谢!就我而言,-march=native 导致了错误,而其他选项则没有。也许是特定的编译器。我分享这个只是为了以防其他人遇到同样的障碍。 什么错误?除非构建系统在带有= 的字符串上阻塞,或者您没有使用gccclang,否则它应该可以工作。 -mtune=native -mavx2 -mfma 对你有用吗?还是-mtune=skylake? (或您拥有的任何 CPU)。顺便说一句,-mavx2 意味着 -mavx-msse4.2。将它们全部包含在一个配方中并没有伤害,而且我想人们可以更容易地忽略他们的 CPU 不支持的那些。 前段时间我已经编辑了这个问题的最佳答案,但我自己不使用 tensorflow。如果-march=native 的构建系统有问题,我想知道。 (和/或您应该向上游报告,以便他们修复构建脚本)。 非常感谢您的建议。为了检查这一点,我只使用-march=native 重新运行 .configure 脚本,这是错误:/Users/jose/Documents/code/tmptensorflow/tensorflow/tensorflow/core/BUILD:1442:1:规则 '//tensorflow/core:lib_internal_impl' 的 C++ 编译失败(退出 1)。在 tensorflow/core/platform/denormal.cc:37 包含的文件中:/Library/Developer/CommandLineTools/usr/bin/../lib/clang/7.0.2/include/pmmintrin.h:28:2: 错误: “未启用 SSE3 指令集”#error “未启用 SSE3 指令集”使用 Apple LLVM 版本 7.0.2 (clang-700.1.81)【参考方案6】:

我最近从源代码安装了它,下面是从源代码安装它所需的所有步骤,并提供上述说明。

其他答案已经描述了显示这些消息的原因。我的回答给出了如何安装的分步说明,这可能会帮助像我一样在实际安装中苦苦挣扎的人们。

    安装 Bazel

从他们可用的releases 之一下载它,例如0.5.2。 解压,进入目录并配置:bash ./compile.sh。 将可执行文件复制到/usr/local/binsudo cp ./output/bazel /usr/local/bin

    安装 TensorFlow

克隆张量流:git clone https://github.com/tensorflow/tensorflow.git 进入克隆目录进行配置:./configure

它会提示你几个问题,下面我建议了对每个问题的回答,你当然可以根据自己的喜好选择自己的回答:

Using python library path: /usr/local/lib/python2.7/dist-packages
Do you wish to build TensorFlow with MKL support? [y/N] y
MKL support will be enabled for TensorFlow
Do you wish to download MKL LIB from the web? [Y/n] Y
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: 
Do you wish to use jemalloc as the malloc implementation? [Y/n] n
jemalloc disabled
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N
No Google Cloud Platform support will be enabled for TensorFlow
Do you wish to build TensorFlow with Hadoop File System support? [y/N] N
No Hadoop File System support will be enabled for TensorFlow
Do you wish to build TensorFlow with the XLA just-in-time compiler (experimental)? [y/N] N
No XLA JIT support will be enabled for TensorFlow
Do you wish to build TensorFlow with VERBS support? [y/N] N
No VERBS support will be enabled for TensorFlow
Do you wish to build TensorFlow with OpenCL support? [y/N] N
No OpenCL support will be enabled for TensorFlow
Do you wish to build TensorFlow with CUDA support? [y/N] N
No CUDA support will be enabled for TensorFlow
    pip 包。要构建它,您必须描述您想要哪些指令(您知道,那些 TensorFlow 通知您的指令丢失了)。

构建 pip 脚本:bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.1 --copt=-msse4.2 -k //tensorflow/tools/pip_package:build_pip_package

构建 pip 包:bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

安装刚刚构建的 TensorFlow pip 包:sudo pip install /tmp/tensorflow_pkg/tensorflow-1.2.1-cp27-cp27mu-linux_x86_64.whl

现在下次启动 Tensorflow 时,它不会再抱怨缺少指令了。

【讨论】:

仅使用-c opt --copt=-march=native 构建应该至少与--copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-msse4.1 --copt=-msse4.2 一样好。 (两者都会使警告静音,但-march=native 可能会通过专门针对您正在构建的系统上的 CPU 进行调整来编写更快的代码)。另请注意,--copt=-mavx2 --copt=-mfma 暗示了所有早期的 AVX 和 SSE 选项,因此这一长串选项显然是由不了解 gcc 选项的人编写的。 @PeterCordes,看看这个问题 (github.com/tensorflow/tensorflow/issues/7449),即使是 bazel 的维护者也不确定为什么 March=native 没有按预期工作。正如您似乎确实“了解 gcc 选项”,那么您可能可以帮助他们修复它,因为他们已将问题标记为需要“社区支持”。 谢谢,我去看看……嗯,有人说--copt=-mavx2 没用。 如果 --copt=-mfma 有效,--copt=-march=native 应该有效,除非 = 的解析有问题。对于 gcc/clang/icc,您肯定希望构建脚本最终将 -march=native 传递给编译器。通过构建脚本实现这一点就成了诀窍。【参考方案7】:

这是最简单的方法。只有一步。

它对速度有很大影响。就我而言,训练步骤所用的时间几乎减半。

参考 custom builds of tensorflow

【讨论】:

Windows 版本包括 AVX2 github.com/fo40225/tensorflow-windows-wheel @SreeraghAR 你的方法降级了我的 tensorflow 和 keras。 请确保根据您的 TensorFlow、Python 版本和硬件安装正确的文件。 @SreeraghAR TensFlow 版本为 1.10.0 并使用 MacOS Sierra。帮我找到文件。 嗯.. 找不到与您的版本相对应的版本。有些人必须制造一个定制的***。 github.com/yaroslavvb/tensorflow-community-wheels 即时解决方案可以使用 Tensorflow 1.9.0【参考方案8】:

我为 Mac 编译了一个小的 Bash 脚本(可以很容易地移植到 Linux)来检索所有 CPU 功能并将其中一些功能应用于构建 TF。我在 TF master 上并且经常使用(一个月几次)。

https://gist.github.com/venik/9ba962c8b301b0e21f99884cbd35082f

【讨论】:

【参考方案9】:

用SSE4.2和AVX编译TensorFlow,可以直接使用

bazel 构建 --config=mkl --config="选择" --copt="-march=broadwell" --copt="-O3" //tensorflow/tools/pip_package:build_pip_package

来源: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/docker/Dockerfile.devel-cpu-mkl

【讨论】:

最近有什么变化吗?最后我检查了--copt="-march=native" 正在吃=。 (顺便说一句,那些双引号没有任何作用;它们会在 bazel 看到你的命令行之前被 shell 删除。)【参考方案10】:

2.0 兼容解决方案:

在终端 (Linux/MacOS) 或命令提示符 (Windows) 中执行以下命令以使用 Bazel 安装 Tensorflow 2.0:

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

#The repo defaults to the master development branch. You can also checkout a release branch to build:
git checkout r2.0

#Configure the Build => Use the Below line for Windows Machine
python ./configure.py 

#Configure the Build => Use the Below line for Linux/MacOS Machine
./configure
#This script prompts you for the location of TensorFlow dependencies and asks for additional build configuration options. 

#Build Tensorflow package

#CPU support
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package 

#GPU support
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

【讨论】:

这部分指定-march=native,或其他GCC/clang选项?我没有看到任何提及 AVX、FMA 或 SSE4.2 的内容。 (Bazel 或 Tensorflow 的构建脚本是否仍然以只有 -mavx 之类的选项有效,而不是 -march=native 的方式被破坏?如果这确实是这个问题的最佳答案中的问题) 对于 tf 版本 2.1.0 的 CPU 支持,选项 --config=opt 对我不起作用,我用 --config=v2 解决了它。另外值得一提的是,构建它的正确 bazel 版本是 29.0。【参考方案11】:

从源代码构建 TensorFlow 时,您将运行 configure 脚本。 configure 脚本提出的问题之一如下:

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]

configure 脚本会将您指定的标志附加到构建 TensorFlow pip 包的 bazel 命令。一般来说,您可以通过以下两种方式之一来响应此提示:

如果您在与运行 TensorFlow 的 CPU 类型相同的 CPU 类型上构建 TensorFlow,那么您应该接受默认值 (-march=native)。此选项将针对您机器的 CPU 类型优化生成的代码。 如果您在一种 CPU 类型上构建 TensorFlow,但将在不同 CPU 类型上运行 TensorFlow,则考虑提供更具体的优化标志,如 the gcc documentation 中所述。

按照前面的项目符号列表中所述配置 TensorFlow 后,您应该能够构建针对目标 CPU 完全优化的 TensorFlow,只需将--config=opt 标志添加到您正在运行的任何 bazel 命令。

【讨论】:

【参考方案12】:

要隐藏这些警告,您可以在实际代码之前执行此操作。

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf

【讨论】:

静默运行速度比在您的硬件上运行得慢似乎是个坏主意。 我总体上同意@Peter Cordes - 但有时隐藏警告并专注于任务会很好(以一种有纪律、有意识的方式)。 @westsider:是的,在某些情况下它可能很有用,但这不是一个好的答案,除非它指出了含义:如果你只是隐藏警告而不是隐藏警告,则会失去真正的性能重新编译。 (除非您使用 GPU 进行繁重的工作,它可能仍会警告 CPU 选项?)

以上是关于如何使用 SSE4.2 和 AVX 指令编译 Tensorflow?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SSE4.2 和 AVX 指令编译 Tensorflow?

使用 SSE4.2 编译 TensorFlow,AVX 因 bazel 失败

如何计算avx和avx2指令集的数量

not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA

是否所有支持 AVX2 的 CPU 也支持 SSE4.2 和 AVX?

如何生成sse4.2 popcnt机器指令