Как мне перечислить все доступные в настоящее время графические процессоры с помощью pytorch?

#python #pytorch #gpu

#python #pytorch #графический процессор

Вопрос:

Я знаю, что могу получить доступ к текущему графическому процессору torch.cuda.current_device() , но как я могу получить список всех доступных в настоящее время графических процессоров?

Комментарии:

1. что не так с import torch; num_of_gpus = torch.cuda.device_count(); print(num_of_gpus); ?

Ответ №1:

Вы можете перечислить все доступные графические процессоры, выполнив:

 >>> import torch
>>> available_gpus = [torch.cuda.device(i) for i in range(torch.cuda.device_count())]
>>> available_gpus
[<torch.cuda.device object at 0x7f2585882b50>]
  

Комментарии:

1. Это неправильный ответ. torch.cuda.device(i) возвращает диспетчер контекста, который заставляет будущие команды использовать это устройство. Помещать их все в такой список бессмысленно. Все, что вам действительно нужно torch.cuda.device_count() , Это ваши устройства cuda cuda:0 и cuda:1 т. Д. До device_count() - 1 .

2. Но это не дает вам никакой информации о графическом процессоре, который на самом деле не перечисляет графические процессоры. Я хочу увидеть имя, модель и т. Д., Чтобы я знал, что использую правильный.

3. что не так с import torch; num_of_gpus = torch.cuda.device_count(); print(num_of_gpus); ?

4. @CharlieParker: количество устройств не дает вам конкретного ИМЕНИ или ТИПА для ресурса графического процессора, как, например, в: NVIDIA 2070 GTI. Но device.property(i).name делает.

Ответ №2:

Проверьте, сколько графических процессоров доступно с помощью PyTorch

 import torch

num_of_gpus = torch.cuda.device_count()
print(num_of_gpus)
  

На случай, если вы хотите использовать первый графический процессор из него.

 device = 'cuda:0' if cuda.is_available() else 'cpu'
  

Замените 0 в приведенной выше команде другим числом, если вы хотите использовать другой графический процессор.

Комментарии:

1. Этот ответ отвечает на вопрос, сколько у вас устройств с графическим процессором, и не перечисляет явно все доступные графические процессоры (предположительно, с именами и типом). Для этого можно использовать device.property() . При желании можно просто перейти к свойству name .

Ответ №3:

Я знаю, что этот ответ немного запоздал. Я думал, что автор вопроса спросил, какие устройства на самом деле доступны для Pytorch, а не:

  • сколько из них доступно (доступно с device_count() помощью) ИЛИ
  • дескриптор диспетчера устройств (доступный с torch.cuda.device(i) помощью), который дают некоторые другие ответы.

Если вы хотите узнать, каково фактическое имя графического процессора (например, NVIDIA 2070 GTI и т. Д.), Попробуйте вместо этого следующее:

 import torch
for i in range(torch.cuda.device_count()):
   print(torch.cuda.get_device_properties(i).name)
  

Обратите внимание на использование get_device_properties(i) функции. Это возвращает объект, который выглядит следующим образом:

 _CudaDeviceProperties(name='NVIDIA GeForce RTX 2070', major=8, minor=6, total_memory=12044MB, multi_processor_count=28))
  

Этот объект содержит свойство called name . При желании вы можете перейти непосредственно к свойству name, чтобы получить понятное для человека имя, связанное с рассматриваемым графическим процессором.

Ответ №4:

Расширение предыдущих ответов свойствами устройства

 $ python3 -c "import torch; print([(i, torch.cuda.get_device_properties(i)) for i in range(torch.cuda.device_count())])"
[(0, _CudaDeviceProperties(name='NVIDIA GeForce RTX 3060', major=8, minor=6, total_memory=12044MB, multi_processor_count=28))]
  

Комментарии:

1. что не так с import torch; num_of_gpus = torch.cuda.device_count(); print(num_of_gpus); ?