【问题标题】:Tensorflow Compilation Speeding up CPUTensorFlow 编译加速 CPU
【发布时间】:2017-06-19 06:12:55
【问题描述】:

当我在 python 2.7 中导入 tensorflow 后使用以下命令时: sess = tf.Session()

警告/错误:

tensorflow/core/platform/cpu_feature_guard.cc:45] TensorFlow 库未编译为使用 SSE4.2 指令,但这些是 在您的机器上可用,并且可以加快 CPU 计算速度。

2017-02-02 00:41:48.616602: W tensorflow/core/platform/cpu_feature_guard.cc:45] TensorFlow 库未编译为使用 AVX 指令,但这些是 在您的机器上可用,并且可以加快 CPU 计算速度。

2017-02-02 00:41:48.616614: W tensorflow/core/platform/cpu_feature_guard.cc:45] TensorFlow 库未编译为使用 AVX2 指令,但这些是 在您的机器上可用,并且可以加快 CPU 计算速度。

2017-02-02 00:41:48.616624: W tensorflow/core/platform/cpu_feature_guard.cc:45] TensorFlow 库未编译为使用 FMA 指令,但这些是 在您的机器上可用,并且可以加快 CPU 计算速度。

请帮我解决这个问题,以便我可以以最佳功率使用我的机器。

【问题讨论】:

标签: tensorflow


【解决方案1】:

您看到的这些警告告诉您,编译后的代码没有使用您拥有的这些指令,但不是所有的 CPU。当维护人员为存储库编译代码时,他们需要对其进行编译以使其支持大多数 CPU,这意味着他们告诉编译器使用特定于架构的指令。

如果您希望软件包使用您拥有的所有指令,您需要自己编译它,或者称为从源代码安装。您可以找到有关如何执行此操作的文档 here,一旦您熟悉了从源代码编译 tensorflow,那么您应该去阅读 performance specific instructions

但是,归根结底,对于现实世界的应用程序,您可能真的需要 GPU。确实,这些 CPU 指令给您带来了一点性能提升,但这与使用 GPU 相比是无法比拟的。

【讨论】:

  • However, at the end of the day, for realworld applications you might really need a GPU 这不是真的。推理通常相反。
【解决方案2】:

这些警告只是说如果您从源代码构建 TensorFlow,它可以在您的机器上运行得更快。没有修复,因为这不是问题,而是向用户提供此信息的预期行为。

默认情况下未启用这些 CPU 指令以提供与大多数机器更广泛的兼容性。

正如文档所说:

TensorFlow 在启动时检查它是否已使用 CPU 上可用的优化进行编译。如果不包括优化,TensorFlow 将发出警告,例如不包括 AVX、AVX2 和 FMA 指令。

有关这方面的所有详细信息,请参阅Performance Guide

【讨论】:

  • @Adriano,我是从源代码构建的。
  • @va4az 在配置 TensorFlow 时,系统会提示您要启用哪些标志,目前如果您将其设为默认值,它会启用您的 CPU 支持的指令并使用它们构建 TensorFlow。或者你没有这些可用的,或者你没有用它们构建。使用gcc -march=native -Q --help=target | grep enable 获得可用的优化。有关使用这些指令进行编译的更多信息,请参阅this question
猜你喜欢
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 2019-06-11
  • 2013-03-17
  • 2019-03-25
相关资源
最近更新 更多