Solving "Your Cpu Supports Instructions That This Tensorflow Binary Was Not Compiled To Us" Issue

TensorFlow is a powerful open-source machine learning library developed by Google. It is designed to be flexible and efficient for various platforms, including CPUs, GPUs, and TPUs. However, sometimes you may encounter issues when running TensorFlow on CPUs with unsupported instructions. This guide will walk you through the process of optimizing TensorFlow for CPUs with unsupported instructions.

Table of Contents

Identify the Issue

Before starting the optimization process, you need to identify the issue with your current TensorFlow installation. Common issues include poor performance, crashes, or error messages related to missing CPU instructions.

Common Error Messages

  1. Illegal instruction (core dumped)
  2. The TensorFlow library was compiled to use X instructions, but these aren't available on your machine
  3. Your CPU supports instructions that this TensorFlow binary was not compiled to use: X

If you encounter any of these issues, it's likely that your TensorFlow installation is not optimized for your CPU's instruction set.

Check Your CPU's Instruction Set

To optimize TensorFlow for your CPU, you first need to determine which instruction set extensions your CPU supports. You can check this by using the lscpu command on Linux or the sysctl -a | grep machdep.cpu command on macOS.

# Linux

# macOS
sysctl -a | grep machdep.cpu

Look for the Flags section in the output, which lists the supported instruction sets, such as AVX, AVX2, or AVX512.

Install the Appropriate TensorFlow Version

Once you know your CPU's instruction set, you can install a TensorFlow version that supports it. TensorFlow provides pre-built binaries for various instruction sets, which you can find on the official TensorFlow GitHub repository.

For example, if your CPU supports AVX2, you can install the TensorFlow version optimized for AVX2 using pip:

pip install --upgrade tensorflow-avx2

Replace tensorflow-avx2 with the appropriate version for your CPU's instruction set.

Optimize TensorFlow for Your CPU

If there isn't a pre-built TensorFlow binary for your CPU's instruction set or if you want to further optimize TensorFlow, you can build it from source. Follow the official TensorFlow guide for building from source and ensure you enable the appropriate instruction set flags during the build process.

For example, if your CPU supports AVX and AVX2, you can enable these flags when building TensorFlow:

bazel build --config=opt --copt=-mavx --copt=-mavx2 //tensorflow/tools/pip_package:build_pip_package

Once the build is complete, you can install the optimized TensorFlow package:

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

pip install --upgrade /tmp/tensorflow_pkg/tensorflow-*.whl


1. How do I check if my TensorFlow installation is using the correct instruction set?

You can check the TensorFlow logs when starting a session. If the logs mention that your CPU supports instructions not used by TensorFlow, you may need to install an optimized version or build it from source.

2. Can I use TensorFlow with a CPU that doesn't support any SIMD instructions?

Yes, TensorFlow will still work on CPUs without SIMD instructions, but the performance will be significantly lower. Consider upgrading your CPU or using a GPU/TPU for better performance.

3. How do I optimize TensorFlow for multiple CPUs with different instruction sets?

You can either install the lowest common denominator version for all your CPUs or build a custom TensorFlow binary that supports multiple instruction sets.

4. Can I use TensorFlow with an ARM CPU?

Yes, TensorFlow supports ARM CPUs.

5. Can I optimize TensorFlow for both CPU and GPU?

Yes, you can build TensorFlow from source with optimizations for both CPU and GPU. Follow the official GPU support guide for more information.

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.