Vulkan vkEnumeratePhysicalDevices возвращает неожиданное количество устройств

8

В машине я бегу у меня два GTX 980 Tis. Когда я запрашиваю счетчик физических устройств, vkEnumeratePhysicalDevicesон всегда возвращает 1, несмотря на наличие двух физических дискретных видеокарт. Когда я использую vulkaninfoединственное устройство в списке, GPU0которое является DISCRETE_GPU/ GTX 980 Ti.

Это происходит в Windows 10, а также в GNU / Linux 4.5 с использованием Vulkan API 1.0.11 с проприетарными драйверами Nvidia.

Это нормальное поведение, и я не правильно использую API или это ошибка? Я чувствую, что совершил явную очевидную ошибку, но не могу найти в спецификации Vulkan ничего об этом.

Для ясности, именно так я запрашиваю счетчик физических устройств:

auto deviceCount = uint32_t{0};
instance.enumeratePhysicalDevices(&deviceCount, nullptr);
// At this point deviceCount is 1

Также для подтверждения того, что ОС видит карты:

Windows 10:

C:\Users\matt>wmic path win32_VideoController get name
Name
NVIDIA GeForce GTX 980 Ti
NVIDIA GeForce GTX 980 Ti

Графические процессоры в настройках драйверов Nvidia

Linux 4.5:

+------------------------------------------------------+                       
| NVIDIA-SMI 364.19     Driver Version: 364.19         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 980 Ti  Off  | 0000:01:00.0      On |                  N/A |
|  0%   56C    P8    34W / 300W |    444MiB /  6140MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 980 Ti  Off  | 0000:02:00.0     Off |                  N/A |
|  0%   43C    P8    25W / 300W |     22MiB /  6143MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Графические процессоры в настройках Nvidia XServer


источник
Интегрированная видеокарта часто (?) Деактивируется материнской платой, если обнаруживается дискретная видеокарта. Это видно в диспетчере устройств?
Андреас
Здесь это не имеет значения, меня не волнует встроенный графический процессор, только отдельные графические процессоры.
Хорошо. Вы можете отобразить что-нибудь, используя оба дискретных графических процессора: s?
Андреас
1
Да, конечно, я приложил больше информации, чтобы показать, что и Win10, и Linux собирают карты. Я использовал обе карты для CUDA, а также SLI с Direct3D и OpenGL.
1
@Andreas nullptr и NULL отличаются только тем, что NULL может быть неверно истолкован как целочисленный литерал, оба они интерпретируются как константы нулевого указателя в контексте указателя.
Ларс Виклунд

Ответы:

5

Из LunarG FAQ :

В версии 1.0 нет поддержки нескольких GPU. К сожалению, это была особенность, которую Хронос пришлось сократить, чтобы сохранить график. Ожидается, что он будет в верхней части списка для Vulkan 1.1. Для реализации Vulkan вполне возможно выставить несколько графических процессоров. В настоящее время Vulkan не может разрешить совместное использование ресурсов между ними. Так, с точки зрения, например, системного менеджера Windows, можно распознать несколько способов рендеринга на поверхность, а затем использовать хуки операционной системы для передачи этого на экран. Чего нет у Вулкана, так это возможности совместно использовать текстуру или цель рендеринга между несколькими графическими процессорами.

Я бы списал этот вопрос как нечто, что не было реализовано, потому что не требовалось, чтобы они его реализовали. Когда Vulkan добавляет в свои спецификации лучшую поддержку нескольких графических процессоров, эти проблемы, скорее всего, будут исправлены. Странно, что он по-прежнему не отображает доступные графические процессоры, но даже если бы он это сделал, Vulkan 1.0.x не готов использовать несколько графических процессоров таким образом, чтобы это приносило пользу играм.

Обновление от 23.07.2016: С драйвером Nvidia GeForce v368.69 Vulkan видны несколько графических процессоров.

Ничего не меняя (все еще используя Vulkan API v1.0.11) и обновляя до последней версии драйвера Nvidia, у меня есть полный доступ к обоим физическим устройствам на моей машине, это не значит, что поддержка Multi-GPU здесь, но это первый шаг в Vulkan, даже будучи жизнеспособным выбором при разработке игры.


источник
0

Вы должны были отключить / удалить мост SLI.
Это явная очевидная ошибка, которую я вижу здесь, AFAIK.

bit2shift
источник
Это не имеет никакого отношения к этому, смотрите мой ответ, это было решено.
@MattJensJensen Во время этого вопроса реализация NVIDIA показала комбинацию SLI, а не отдельные карты, это то, что я имею в виду.
bit2shift
Нет, это было не для меня, без моста SLI, была видна только одна карта.