Найден способ включить виртуализацию GPU для карт линейки GeForce

Функция искусственного разделения ресурсов видеокарты на несколько виртуальных задач в настоящее время ограничена Grid/Tesla и рабочими станциями графических процессорах Quadro. Эта функция недоступна для игровой серии GeForce. По крайней мере, такой возможности не былодо сих пор. Благодаря довольно простому модулю под названием «vgpu_unlock» эта функция теперь может быть включена в потребительских графических картах.
,nvidia,видеокарты,поделки кожаной куртки,драйвера
Виртуализация графического процессора - это способ виртуального распределения аппаратных ресурсов видеокарты между несколькими различными задачами. Это позволяет нескольким конечным пользователям использовать одну видеокарту для множества задач, таких как 3D-моделирование или научная работа. Многие пользователи пользуются подобной технологией, сами об этом не подозревая. Например, популярная игровая платформа GeForce Now работает по такому принципу. В ней компания NVIDIA использует графические процессоры GRID для виртуализации нескольких игровых сред для геймеров.
Теоретически теперь должна быть возможность включить одну видеокарту GeForce RTX 3090 для работы нескольких виртуальных машин и использовать ее для игр. Это было бы интересным решением проблемы нехватки графических карт. Особенно такая возможность может быть полезна в различных интернет-кафе и компьютерных клубах, которые могут использовать один графический процессор для работы нескольких компьютеров.
Мод на самом деле довольно прост, он обманом заставляет драйвер считывать другой идентификатор устройства PCI. Карты на архитектурах Pascal, Turing и Ampere интерпретируются драйвером, как карты Quadro или Tesla. Мод работает с программным обеспечением виртуальных машин Linux и KVM. Хотя хост-компьютер не может работать на операционной системе Microsoft Windows, виртуальные машины, которые будут подключены к основной системе, имеют такую возможность.
Таким образо, чтобы определить, поддерживает ли конкретный графический процессор функциональность vGPU, драйвер смотрит на идентификатор устройства PCI. Этот идентификатор вместе с идентификатором поставщика PCI уникален для каждого типа устройства. Чтобы включить поддержку vGPU, нужно сообщить драйверу, что идентификатор устройства PCI установленного графического процессора является одним из идентификаторов устройств, используемых графическим процессором с поддержкой vGPU.
Список всех поддерживаемых на данный момент видеокарт довольно обширен. Ознакомиться с ним можно, взглянув на изображение ниже.
static uint16_t vgpu_unlock_pci_devid_to_vgpu_capable(uint16_t pci_devid)
<
switch (pci_devid)
{
/* GP102 */
case OxIbOO: /* TITAN X (Pascal) */ case 0x1b02: /* TITAN Xp */ case 0x1b06: /* GTX 1080 Ti */ case 0x1b30: /* Quadro P6000 */
return 0x1b38; /* Tesla P40 */
/* GP104 */
case 0x1b80: