How do I use TensorFlow GPU?
PythonTensorflowGpuPython Problem Overview
How do I use TensorFlow GPU version instead of CPU version in Python 3.6 x64?
import tensorflow as tf
Python is using my CPU for calculations.
I can notice it because I have an error:
> Your CPU supports instructions that this TensorFlow binary was not > compiled to use: AVX2
I have installed tensorflow and tensorflow-gpu.
How do I switch to GPU version?
Python Solutions
Solution 1 - Python
Follow this tutorial Tensorflow GPU I did it and it works perfect.
Attention! - install version 9.0! newer version is not supported by Tensorflow-gpu
Steps:
- Uninstall your old tensorflow
- Install tensorflow-gpu
pip install tensorflow-gpu
- Install Nvidia Graphics Card & Drivers (you probably already have)
- Download & Install CUDA
- Download & Install cuDNN
- Verify by simple program
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
Solution 2 - Python
The 'new' way to install tensorflow GPU if you have Nvidia, is with Anaconda. Works on Windows too. With 1 line.
conda create --name tf_gpu tensorflow-gpu
This is a shortcut for 3 commands, which you can execute separately if you want or if you already have a conda environment and do not need to create one.
-
Create an anaconda environment
conda create --name tf_gpu
-
Activate the environment
conda activate tf_gpu
-
Install tensorflow-GPU
conda install tensorflow-gpu
You can use the conda environment.
Solution 3 - Python
Follow the steps in the latest version of the documentation. Note: GPU and CPU functionality is now combined in a single tensorflow package
pip install tensorflow
# OLDER VERSIONS pip install tensorflow-gpu
https://www.tensorflow.org/install/gpu
This is a great guide for installing drivers and CUDA if needed: https://www.quantstart.com/articles/installing-tensorflow-22-on-ubuntu-1804-with-an-nvidia-gpu/
Solution 4 - Python
First you need to install tensorflow-gpu, because this package is responsible for gpu computations. Also remember to run your code with environment variable CUDA_VISIBLE_DEVICES = 0 (or if you have multiple gpus, put their indices with comma). There might be some issues related to using gpu. if your tensorflow does not use gpu anyway, try this
Solution 5 - Python
I tried following the above tutorial. Thing is tensorflow changes a lot and so do the NVIDIA versions needed for running on a GPU. The next issue is that your driver version determines your toolkit version etc. As of today this information about the software requirements should shed some light on how they interplay:
NVIDIA® GPU drivers —CUDA 9.0 requires 384.x or higher.
CUDA® Toolkit —TensorFlow supports CUDA 9.0.
CUPTI ships with the CUDA Toolkit.
cuDNN SDK (>= 7.2) Note: Make sure your GPU has compute compatibility >3.0
(Optional) NCCL 2.2 for multiple GPU support.
(Optional) TensorRT 4.0 to improve latency and throughput for inference on some models.
And here you'll find the up-to-date requirements stated by tensorflow (which will hopefully be updated by them on a regular basis).
Solution 6 - Python
For conda
environment.
conda search tensorflow
to search the available versions of tensorflow. The ones that havemkl
are optimized for CPU. You can choose the ones withgpu
.- Then check the version of your cuda using
nvcc --version
and find the proper version of tensorflow in this page, according to your version of cuda. - For example, for cuda/10.1,and python3.8, you can use
conda install tensorflow=2.2.0=gpu_py38hb782248_0
Solution 7 - Python
Strangely, even though the tensorflow website 1 mentions that CUDA 10.1 is compatible with tensorflow-gpu-1.13.1, it doesn't work so far. tensorflow-gpu gets installed properly though but it throws out weird errors when running.
So far, the best configuration to run tensorflow with GPU is CUDA 9.0 with tensorflow_gpu-1.12.0 under python3.6.
Following this configuration with the steps mentioned in https://stackoverflow.com/a/51307381/2562870 (the answer above), worked for me :)
Solution 8 - Python
Uninstall tensorflow and install only tensorflow-gpu; this should be sufficient. By default, this should run on the GPU and not the CPU. However, further you can do the following to specify which GPU you want it to run on.
If you have an nvidia GPU, find out your GPU id using the command nvidia-smi
on the terminal. After that, add these lines in your script:
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = #GPU_ID from earlier
config = tf.ConfigProto()
sess = tf.Session(config=config)
For the functions where you wish to use GPUs, write something like the following:
with tf.device(tf.DeviceSpec(device_type="GPU", device_index=gpu_id)):