#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()
, Это ваши устройства cudacuda: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);
?