方法一 :使用深度学习工具提供的 API指定
1.1 Tesorflow
with tf.device("/gpu:%d"%i): with tf.device("cpu:0")
还可以设置GPU的使用率:
ConfigProto()类提供有对GPU使用率的函数方法:
config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.9 # 占用GPU90%的显存 session = tf.Session(config=config)
还可以指定GPU的数量是否增长:
config = tf.ConfigProto() config.gpu_options.allow_growth = True session = tf.Session(config=config)
个人认为最好的方式:
import os # 建议使用这种方式 import tensorflow as tf os.environ["CUDA_VISIBLE_DEVICES"] = "2" # python 的方式指定GPU from keras.backend.tensorflow_backend import set_session config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.3 # 指定GPUl利用率 set_session(tf.Session(config=config))
1.2 Pytorch
import torch torch.cuda.set_device(id)
这种方式只能制定一个GPU,不太建议使用
1.3 Keras
keras的后端如果是Tensorflow的话,可以使用Tensorflow的方式指定;
如果是theano的话,就是用theano的方式;
方法二: 在终端指定
这种方法与深度学习工具无关了,无论是Keras tensorflow 还是Pytorch都是可以使用的
CUDA_VISIBLE_DEVICES=0,2,3 python your_file.py
这里的0,1,3是通过nvidia-smi 命令查看的GPU编号.
方法三 在Python代码中指定
这种方法也是与深度学习工具无关的方法。仔细看看这种方式其实和方法二类似,关键字都是一样的
import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "0" # 多个GPU下使用的方法是“0,1,2,3”