CPU instructions not compiled with TensorFlow

2020-02-24 04:07发布

问题:

MacBook Air: OSX El Capitan

When I run TensorFlow code in terminal (python 3 tfpractice.py), I get a longer than normal waiting time to get back output followed by these error messages:

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. W 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. W 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.

I have no clue how to fix this. I would like to get TensorFlow to just work on this pip3 install. So I followed the path to: tensorflow/core/platform/cpu_feature_guard

Do I need to edit the code here? Or is there an alternate way to get TensorFlow to compile with these instructions?

I installed TensorFlow using sudo pip3 install tensorflow.

回答1:

NOTE : These are not error messages but mere warning messages.

The best way to maximise TF performance (apart from writing good code !!), is to compile it from the sources

When you do that, TF would ask you for a variety of options which will also involve options for these instructions.

In my own experience, compilation from the source is better in performance on an average.

If you are doing some intensive processing that could be done on a GPU then that might also explain your waiting time. For GPU support you would need to do pip3 install tensorflow-gpu



回答2:

These are warning which mean it may be faster to build tensorflow on your pc from source.

However if you want to disable them, you may use the code below

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

this should silence the warnings. 'TF_CPP_MIN_LOG_LEVEL' represents the Tensorflow environment variable responsible for logging. Also if you are on Ubuntu you may use this code below

export TF_CPP_MIN_LOG_LEVEL=2 

I hope this helps.



回答3:

You can also compile using bazel with opt arguments:

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-msse4.1 --copt=-msse4.2 //tensorflow/tools/pip_package:build_pip_package

I think you can find something in this discussion: How to compile Tensorflow with SSE4.2 and AVX instructions?

Good luck!



回答4:

Those are simply warnings. They are just informing you if you build TensorFlow from source it can be faster on your machine. Those instructions are not enabled by default on the builds available I think to be compatible with more CPUs as possible. If you have any other doubts regarding this please feel free to ask, otherwise this can be closed.

Try export TF_CPP_MIN_LOG_LEVEL=2

https://github.com/tensorflow/tensorflow/issues/7778