Как проверить и распределить распределение GPU в Tensorflow? - PullRequest
0 голосов
/ 30 апреля 2019

Мой ноутбук - Thinkpad T470P, который, кажется, имеет два графических процессора - один с интегрированной графикой Intel HD 630, а другой с GeForce 940MX.

Я установил CUDA вер. 10.1 на этой машине успешно, и теперь я хочу провести тренинг в Tensorflow. Я хочу знать, какой GPU использует тренировка, поэтому я попробовал это:

from tensorflow.python.client import device_lib

device_lib.list_local_devices()

и вот что я получил:

[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 17770480900406893487, name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 1462163865
 locality {
   bus_id: 1
   links {
   }
 }
 incarnation: 5306128727345722238
 physical_device_desc: "device: 0, name: GeForce 940MX, pci bus id: 0000:02:00.0, compute capability: 5.0"]

Мне просто любопытно, почему существует два воплощения? один имеет имя /device:GPU:0, а другой - GeForce 940MX.

Насколько мне известно, правда ли, что CUDA и тензор потока могут работать только на GeForce, потому что CUDA даже не поддерживает встроенный графический процессор?

В этом случае, как мне указать тензорный поток для запуска на GeForce 940MX? Поскольку есть два имени, я не уверен, относятся ли они к разным графическим процессорам. Большое спасибо за ваш вклад!

1 Ответ

2 голосов
/ 30 апреля 2019

Во-первых, CUDA совместима только с графическими картами NVIDIA, поэтому ваша интегрированная графическая карта Intel HD 630 не будет использоваться TensorFlow или быть перечислена с использованием device_lib.list_local_devices().

. Единственное используемое устройство графического процессора - это перечисленный элемент.с device_type: "GPU", который представляет вашу карту GeForce 940MX.Я полагаю, что другой элемент в списке относится к той же видеокарте - я обычно обращаю внимание только на элементы с типом устройства = GPU.Чтобы распечатать эти элементы специально, вы можете использовать этот скрипт из https://stackoverflow.com/a/38580201/9672143:

from tensorflow.python.client import device_lib

local_device_protos = device_lib.list_local_devices()
print([x.name for x in local_device_protos if x.device_type == 'GPU'])

. Полезный инструмент - nvidia-smi в командной строке.Здесь перечислены доступные графические процессоры NVIDIA, а также какие процессы используют каждый графический процессор.Когда вы запустите программу TensorFlow / Keras, вы увидите, что процесс python появляется в нижней части вывода nvidia-smi.

Чтобы ответить на ваш последний вопрос, вы можете заставить TensorFlow использовать определенный GPU, используяследующий код ПЕРЕД импортом TF / Keras:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'  # gpu ID

Идентификатор GPU можно найти на выходе nvidia-smi, который отображает каждый GPU и связанный с ним ID.

...