“您的 CPU 支持未编译此 TensorFlow 二进制文件以使用的指令:AVX2”错误

Posted

技术标签:

【中文标题】“您的 CPU 支持未编译此 TensorFlow 二进制文件以使用的指令:AVX2”错误【英文标题】:"Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2" error 【发布时间】:2018-07-26 06:33:07 【问题描述】:

我在我的机器上安装了 tensorflow gpu。 我在我的机器上安装了 CUDA 工具包 9.0 和 cuDNN 7.0。

当我完成这些步骤时 从https://www.tensorflow.org/install/install_windows 测试我的安装。 通过进入程序

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()

但我收到以下错误。

你能告诉我如何解决它吗?

>>> sess = tf.Session()
2018-07-25 23:27:54.477511: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2018-07-25 23:27:55.607237: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1392] Found device 0 with properties:
name: Quadro M2000 major: 5 minor: 2 memoryClockRate(GHz): 1.1625
pciBusID: 0000:03:00.0
totalMemory: 4.00GiB freeMemory: 3.34GiB
2018-07-25 23:27:55.612178: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1471] Adding visible gpu devices: 0
2018-07-25 23:27:55.977046: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:952] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-07-25 23:27:55.980238: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:958]      0
2018-07-25 23:27:55.982308: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:971] 0:   N
2018-07-25 23:27:55.984488: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1084] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 3069 MB memory) -> physical GPU (device: 0, name: Quadro M2000, pci bus id: 0000:03:00.0, compute capability: 5.2)
>>> print(sess.run(hello))
b'Hello, TensorFlow!'
>>> print(sess.run(hello))
b'Hello, TensorFlow!'

【问题讨论】:

这不是一个错误。这只是一个警告 【参考方案1】:

我也一直想知道这个警告是什么意思。快速浏览后,我发现了以下内容: Adveance Vector Extensions 是将整数运算扩展到浮点数的指令。 例如:FUSE MULTIPLY ADD.

来自上述来源 “融合乘加(有时称为 FMA 或 fmadd)是一步执行的浮点乘加运算,采用单次舍入。 也就是说,未融合乘加将计算乘积 b×c,将其舍入到 N 个有效位,将结果加到 a,然后舍入到 N 个有效位,融合乘加将计算整个表达式 a+在将最终结果向下舍入到 N 个有效位之前,将 b×c 精确到它的全精度。"

如果您的编译器中未启用 AVX,则操作 a+bxc 将按顺序执行,而 avx 指令将其执行到一个操作单元中。

默认情况下,tensorflow 的构建标志似乎不包括对 AVX 指令的支持,因为 configuration section 在从源页面安装时声明。

为了能够抑制此警告,您必须从 source 构建 tensorflow,并在配置部分使用额外的这些附加标志

bazel build -c opt --copt=-mavx --copt=-mavx2

我怀疑这些标志是默认省略的,因为并非所有 cpu 都支持这些指令。

更多详情,请看这个answer和这个githubissue。

编辑

Here 是一份详尽的构建列表,您可以根据收到的警告(包括这个警告)来使用。

【讨论】:

感谢您的回答。我怎样才能知道我的 cpus 是否支持这些指令。 在 windows 中可能带有英特尔芯片,英特尔 sde 仿真器可能是正确的工具,但可能系统信息也可能包括 cpu 部分的此类信息..遗憾的是我不使用 windows 所以有我无法确认,对于 linux cat /proc/cpuinfo | grep avx 会告诉你安装的 avx 的类型,如何在 windows 10 simplehow.tips/a/44/how-to-view-system-information-on-windows10 和 intel sde 模拟器上使用系统信息 software.intel.com/en-us/articles/… @Eliethesaiyan 我已经使用 Homebrew 安装了 bazel 并在运行它时得到了 this ,但它仍然给我同样的警告。另外,我如何确保我已经摆脱了这个问题?

以上是关于“您的 CPU 支持未编译此 TensorFlow 二进制文件以使用的指令:AVX2”错误的主要内容,如果未能解决你的问题,请参考以下文章

硬Gpu:配置

张量流有问题吗?