tensorflow在电脑的gpu和cpu上均可运行:
-
"/cpu:0"
:机器的 CPU。
-
"/device:GPU:0"
:机器的 GPU(如果有一个)。
-
"/device:GPU:1"
:机器的第二个 GPU(以此类推)。
当想要知道指令和张量在哪个设备上运行时,可以这样设置session:
sess = tf.Session(config=tf.ConfigProto(log_device_placemnet=True))
手动分配设备
with tf.device('/cpu:0'):
...
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
当使用GPU时,需要设置允许GPU增加内存,有两种设置方式:
(1)设置allow_grouth,根据运行时的需要来分配GPU内存
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config,...)
(2)设置per_process_gpu_memory_fraction,可以设置 GPU 应分配到的内存占总内存量的比例,如分配40%
sess = tf.Session(config=tf.ConfigProto(gpu_options.per_process_gpu_memory_fraction=0.4))
当指定设备运行时,为防止指定设备不存在,可以设置allow_soft_placement为true,这样tensorflow会选择现有的设备来运行程序。
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=True))
如果安装的是GPU版本的tensorflow,机器上有支持的GPU,也正确安装了显卡驱动、CUDA和cuDNN,默认情况下,Session会在GPU上运行,若要强制使用CPU,参考https://blog.csdn.net/silent56_th/article/details/72628606