有一个未记录的方法
device_lib.list_local_devices(),该方法使您可以列出本地进程中可用的设备。(
注意,
作为一种未公开的方法,此方法可能会向后不兼容更改。)该函数返回
DeviceAttributes协议缓冲区对象的列表。您可以按以下方式提取GPU设备的字符串设备名称列表:
from tensorflow.python.client import device_libdef get_available_gpus(): local_device_protos = device_lib.list_local_devices() return [x.name for x in local_device_protos if x.device_type == 'GPU']
请注意(至少在TensorFlow1.4之前),调用
device_lib.list_local_devices()将运行一些初始化代码,默认情况下,这些初始化代码将在所有设备上分配所有GPU内存(GitHubissue)。为避免这种情况,请首先使用一个显着小的
per_process_gpu_fraction或创建一个会话
allow_growth=True,以防止分配所有内存。



