42

I have aldready spent a considerable of time digging around on stack overflow and else looking for the answer, but couldn't find anything

Hi all,

I am running Tensorflow with Keras on top. I am 90% sure I installed Tensorflow GPU, is there any way to check which install I did?

I was trying to do run some CNN models from Jupyter notebook and I noticed that Keras was running the model on the CPU (checked task manager, CPU was at 100%).

I tried running this code from the tensorflow website:

# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

And this is what I got:

MatMul: (MatMul): /job:localhost/replica:0/task:0/cpu:0
2017-06-29 17:09:38.783183: I c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\common_runtime\simple_placer.cc:847] MatMul: (MatMul)/job:localhost/replica:0/task:0/cpu:0
b: (Const): /job:localhost/replica:0/task:0/cpu:0
2017-06-29 17:09:38.784779: I c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\common_runtime\simple_placer.cc:847] b: (Const)/job:localhost/replica:0/task:0/cpu:0
a: (Const): /job:localhost/replica:0/task:0/cpu:0
2017-06-29 17:09:38.786128: I c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\common_runtime\simple_placer.cc:847] a: (Const)/job:localhost/replica:0/task:0/cpu:0
[[ 22.  28.]
 [ 49.  64.]]

Which to me shows I am running on my CPU, for some reason.

I have a GTX1050 (driver version 382.53), I installed CUDA, and Cudnn, and tensorflow installed without any problems. I installed Visual Studio 2015 as well since it was listed as a compatible version.

I remember CUDA mentioning something about an incompatible driver being installed, but if I recall correctly CUDA should have installed its own driver.

Edit: I ran theses commands to list the available devices

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

and this is what I get

[name: "/cpu:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 14922788031522107450
]

and a whole lot of warnings like this

2017-06-29 17:32:45.401429: W c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.

Edit 2

Tried running

pip3 install --upgrade tensorflow-gpu

and I get

Requirement already up-to-date: tensorflow-gpu in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages
Requirement already up-to-date: markdown==2.2.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: html5lib==0.9999999 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: werkzeug>=0.11.10 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: wheel>=0.26 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: bleach==1.5.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: six>=1.10.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: protobuf>=3.2.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: backports.weakref==1.0rc1 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: numpy>=1.11.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: setuptools in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from protobuf>=3.2.0->tensorflow-gpu)

Solved: Check comments for solution. Thanks to all who helped!

I am new to this, so any help is greatly appreciated! Thank you.

valegians
  • 741
  • 1
  • 5
  • 14
  • Did you install tf with pip? – danche Jun 29 '17 at 15:21
  • Could you list the available devices using https://stackoverflow.com/documentation/tensorflow/10621/tensorflow-gpu-setup/31878/list-the-available-devices-available-by-tensorflow-in-the-local-process#t=201706291527588861941 ? – pfm Jun 29 '17 at 15:28
  • Yes, I installed Tensorflow using pip3, I'm running Python 3. – valegians Jun 29 '17 at 15:33
  • According your edit, it's likely that you haven't the GPU version installed or at least that your GPU card is not supported. – pfm Jun 29 '17 at 15:38
  • I tried running `pip3 install --upgrade tensorflow-gpu` and it tells me all the requirements are there: `Requirement already up-to-date: tensorflow-gpu in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages` – valegians Jun 29 '17 at 15:42
  • I don't know much about TensorFlow, but did you install tensorflow-gpu? https://github.com/fchollet/keras/issues/5712 – merelyMark Jun 29 '17 at 15:43
  • Pretty sure I did, and I ran the command again to be safe and it shows it's installed. Checked with NVDIA and the GTX 1050 is listed as supported (mine is on a laptop but they list is as a desktop card). – valegians Jun 29 '17 at 15:45
  • From my link, Dahlasam's comment: "Then I installed tensorflow-gpu by copy-pasting "pip3 install --upgrade tensorflow-gpu" from Tensorflow pages. This didn't work and I needed to install tensorflow-gpu with "pip install tensorflow-gpu". Then GPU is activated as expected:" – merelyMark Jun 29 '17 at 15:47
  • 2
    can you check that you do not have several tensorflow versions installed by running `pip list` and check for all lines with `tensorflow` – P-Gn Jun 29 '17 at 15:50
  • Ran `pip list` and I get `tensorflow (1.2.0) tensorflow-gpu (1.2.0)`, is that normal? or does it mean I have a normal tensorflow and a gpu one installed? If so, can I uninstall the standard one? – valegians Jun 29 '17 at 15:57
  • 4
    You should unistall tensorflow and keep tensorflow-gpu: `pip uninstall tensorflow` – Manolo Santos Jun 29 '17 at 16:08
  • Okay I uninstalled tensorflow using pip, and now pip list shows only tensorflow-gpu **but** now I get import errors "no module named tensorflow" when I run my code – valegians Jun 29 '17 at 16:16
  • Also tried to do `pip install tensorflow-gpu` instead of pip3 but it says it's all already installed. Still getting `No module named tensorlfow` however, any ideas? – valegians Jun 29 '17 at 16:58
  • 4
    Okay, I think I fixed it. I think when I uninstalled tensorflow it deleted the __init__.py file or something. So I ran `pip install --ignore-installed --upgrade ` and now this `from tensorflow.python.client import device_lib print(device_lib.list_local_devices())` shows the gpu as one of the devices. – valegians Jun 29 '17 at 17:41
  • 2
    I tried the above steps, it doesnt show gpu as a device. Tensorflow-gpu and tensorflow-tensorboard are shown in list of installed. Any help? – deadcode Jan 20 '18 at 23:10
  • I think it worth mentioning this link for ubuntu users, it was super helpful for me : [https://github.com/williamFalcon/tensorflow-gpu-install-ubuntu-16.04](https://github.com/williamFalcon/tensorflow-gpu-install-ubuntu-16.04) – Omar Aflak Feb 02 '18 at 04:32
  • Possible duplicate of [Keras with TensorFlow backend not using GPU](https://stackoverflow.com/questions/46080634/keras-with-tensorflow-backend-not-using-gpu) – Matthieu Jul 17 '19 at 22:41
  • 5
    for ver>1.15, `tensorflow-gpu` is included with `tensorflow` https://www.tensorflow.org/install/gpu – lineage Mar 03 '20 at 12:53

7 Answers7

35

To check which devices are available to TensorFlow you can use this and see if the GPU cards are available:

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

Edit Also, you should see this kind of logs if you use TensorFlow Cuda version :

I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so.*.* locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so.*.*  locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so.*.*  locally
Graham
  • 7,035
  • 17
  • 57
  • 82
pfm
  • 5,960
  • 3
  • 39
  • 44
  • They are C++ logs and are controlled by the `TF_CPP_MIN_VLOG_LEVEL` env variable, e.g.: `export TF_CPP_MIN_VLOG_LEVEL=2` should allow them to be printed when running `import tensorflow as tf`. – pfm Apr 10 '18 at 11:01
19

It may sound dumb, but try reboot. It helped me and some other folks in GitHub.

QtRoS
  • 1,095
  • 1
  • 17
  • 22
9

I was still having trouble getting GPU support even after correctly installing tensorflow-gpu via pip. My problem was that I had installed tensorflow 1.5, and CUDA 9.1 (the default version Nvidia directs you to), whereas the precompiled tensorflow 1.5 works with CUDA versions <= 9.0. Here is download page on nvidia's site to get the correct CUDA 9.0:

https://developer.nvidia.com/cuda-90-download-archive

Also make sure to update your cuDNN to a version compatible with CUDA 9.0 https://developer.nvidia.com/cudnn https://developer.nvidia.com/rdp/cudnn-download

mboss
  • 113
  • 1
  • 7
1

If you happen to using Anaconda to manage your environments => uninstall all existing versions of tensorflow

pip uninstall tensorflow
pip3 uninstall tensorflow

Install tensorflow-gpu using conda

conda install tensorflow-gpu

If you don't mind starting from a new environment tho the easiest way to do so without

conda create --name tf_gpu tensorflow-gpu 

creates a new conda environment with the name tf_gpu with tensorflow gpu installed

0

For me the following worked.

I used conda environment, as python environment meant setting LD_LIBRARY_PATH and installing Cuda manually which is an another mess.

In the mentioned blog, he have installed cudatoolkit and cudann inside conda and then installed tensorflow-gpu later which fixed the problem.

P.S, as far as I read, cudatoolkit and cudann plays huge role in getting your code running on tensorflow-gpu.

Sachin Mohan
  • 436
  • 4
  • 10
0

I ran into a similar problem I had the follwing versions of tensor flow libraries.

tensorboard               2.4.1              pyhd8ed1ab_1    conda-forge
tensorboard-plugin-wit    1.8.0              pyh44b312d_0    conda-forge
tensorflow                2.4.1            py39hf3d152e_0    conda-forge
tensorflow-base           2.4.1            py39h23a8cbf_0    conda-forge
tensorflow-estimator      2.4.0              pyh9656e83_0    conda-forge
tensorflow-gpu            2.4.1                h30adc30_0

The same version of libraries were installed in another machine where it was able to utilise the GPU. The Cuda toolkit version and driver versions were the same in both machines( the machine where it was working and the one where it wasnt).

Turns out the reason was that tensorflow-gpu=2.4.1 is compatible with python version 3.8.10. Changing my python version to 3.8.10 and keeping all other things unchanged worked for me !

kushagra deep
  • 195
  • 2
  • 9
0

If you have problems with running tensorflow on gpu you should check if you have good versions of cuda and cuDNN installed. The versions should be exactly the same as here. For example for tensorflow v2.8.0 you should have cuda v11.2 (not newer) and cuDNN v8.1.

Also, you should add cuda /bin folder and /libnvvp to path (for windows).

This answer is based on this tutorial Tensorflow 2021 install tutorial. If you still can not make it runing check for some missing steps.