Prevent TensorFlow from accessing the GPU?
You can use only CPUs by openning a session with a GPU limit of 0:
sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
See https://www.tensorflow.org/api_docs/python/tf/ConfigProto for more details.
A proof that it works for @Nicolas:
In Python, write:
import tensorflow as tf
sess_cpu = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
Then in a terminal:
nvidia-smi
You will see something like:
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 24869 C /.../python 99MiB |
+-----------------------------------------------------------------------------+
Then repeat the process: In Python, write:
import tensorflow as tf
sess_gpu = tf.Session()
Then in a terminal:
nvidia-smi
You will see something like:
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 25900 C /.../python 5775MiB |
+-----------------------------------------------------------------------------+
Have a look to this question or this answer.
To summarise you can add this piece of code:
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
import tensorflow as tf
Playing with the CUDA_VISIBLE_DEVICES
environment variable is one of if not the way to go whenever you have GPU-tensorflow installed and you don't want to use any GPUs.
You to want either
export CUDA_VISIBLE_DEVICES=
or alternatively use a virtualenv with a non-GPU installation of TensorFlow.