TensorFlow 未编译为使用 SSE(等)指令,但这些指令可用

Posted

技术标签:

【中文标题】TensorFlow 未编译为使用 SSE(等)指令,但这些指令可用【英文标题】:TensorFlow wasn't compiled to use SSE (etc.) instructions, but these are available 【发布时间】:2017-08-25 09:00:48 【问题描述】:

我第一次使用一些示例代码运行 TensorFlow。运行我的代码时收到以下警告。有谁知道为什么会发生这种情况,以及如何解决?

2017-03-31 02:12:59.346109: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.
2017-03-31 02:12:59.346968: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE2 instructions, but these are available on your machine and could speed up CPU computations.
2017-03-31 02:12:59.346975: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow libbrary wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
2017-03-31 02:12:59.346979: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\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.
2017-03-31 02:12:59.346983: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\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.
2017-03-31 02:12:59.346987: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\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.
2017-03-31 02:12:59.346991: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-03-31 02:12:59.346995: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.

【问题讨论】:

w 是warning 的缩写...你是如何运行它的...? 发行 2 个不同版本会杀死 TF 吗? (这只是它们的构建设置问题,现在我应该安装(并学习)800% 的开销来从源代码重新编译)。 我已经按照这些说明编译了 TF。你可以从github.com/lakshayg/tensorflow-build下载二进制文件 How to compile Tensorflow with SSE4.2 and AVX instructions?的可能重复 这个答案有有用的相关信息:***.com/questions/41293077/… 【参考方案1】:

这些是警告(如冒号后的W 所示。错误有一个E)。

警告是指您的 CPU 支持 SSE Instructions,这允许一些快速的硬件并行操作。启用这些操作是一个编译时操作(即,要使用 SSE,您需要从源构建库以启用您所针对的特定 SSE 版本),在这种情况下,您可以take a look at this question。

但请注意,SSE 支持仅影响计算速度。 Tensorflow 可以在有或没有 SSE 的情况下工作,但您的代码可能需要更长的时间才能运行。 另请注意,这仅影响 CPU。如果您使用的是 GPU 构建的 Tensorflow,则在 GPU 上运行的所有操作都不会受益于 SSE 指令。

【讨论】:

谢谢!这真的很有帮助。我会确保查看这些链接!【参考方案2】:

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

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

详细讨论请参考这里https://github.com/tensorflow/tensorflow/issues/7778

我希望,它可以对他人有所帮助。 :)

【讨论】:

抱歉,我的问题来自一个老问题,但你能具体解释一下这是做什么的吗?谢谢! (我想在我赞成之前理解它) 基本上它是使用python在您的系统上设置环境变量,而不是手动设置它。例如在 cmd 上(如果你是 Windows 用户)这样做set TF_CPP_MIN_LOG_LEVEL=2 就可以了。关键是,如果你想隐藏警告,你可以这样做。 **这里是关于该环境变量的更详细说明:** TF_CPP_MIN_LOG_LEVEL 是负责日志的 TensorFlow 环境变量,将 INFO 日志静音设置为 1,过滤掉 WARNING 2 并另外静音 ERROR 日志(不推荐)设置它to 3. 希望对你有帮助:) 谢谢,这更有意义! 他不会对所有警告保持沉默吗?在输出中仅隐藏一个警告是相当过分的。另外,环境变量与tf.logging.set_logging_level() 有什么关系?该函数是覆盖变量还是相反?【参考方案3】:

这不是错误,只是警告说如果您从源代码构建 TensorFlow,它可以在您的机器上更快。

就像警告所说的那样,如果您需要使 TF 更快,您应该只使用这些标志编译 TF。

您可以使用TF环境变量TF_CPP_MIN_LOG_LEVEL,它的工作原理如下:

默认为0,显示所有日志 要过滤掉 INFO 日志,请将其设置为 1 WARNINGS 另外,2 并额外过滤掉 ERROR 日志,将其设置为 3

因此您可以执行以下操作来消除警告:

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

更多详细讨论请见How to compile tensorflow using SSE4.1, SSE4.2, and AVX.

【讨论】:

以上是关于TensorFlow 未编译为使用 SSE(等)指令,但这些指令可用的主要内容,如果未能解决你的问题,请参考以下文章

SCSS 文件在使用 Webpack 做出反应时未编译为 CSS

Sass watch 正在检测更改但未编译为 css

用于 mac AVX 的 TensorFlow

Apache 正在运行线程 MPM,但您的 PHP 模块未编译为线程安全的。您需要重新编译 PHP。 AH00013:预配置失败

TensorFlow关于 SSE AVX的Warning问题

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