Vulkan vkEnumeratePhysicalDevices Devuelve un recuento inesperado de dispositivos

8

En la máquina que estoy ejecutando tengo dos GTX 980 Tis. Cuando consulto el dispositivo físico, el recuento vkEnumeratePhysicalDevicessiempre devuelve 1 a pesar de tener 2 tarjetas gráficas discretas físicas. Cuando uso vulkaninfoel único dispositivo listado es el GPU0que es DISCRETE_GPU/ GTX 980 Ti.

Esto sucede en Windows 10, así como en GNU / Linux 4.5 usando Vulkan API 1.0.11 con controladores propietarios de Nvidia.

¿Es este comportamiento normal y no estoy usando la API correctamente o es un error? Siento que he cometido un error evidente pero no puedo encontrar nada en la especificación de Vulkan al respecto.

Para mayor claridad, así es exactamente como consulto el conteo de dispositivos físicos:

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

Además, para confirmar que el sistema operativo ve las tarjetas:

Windows 10

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

GPU en la configuración del controlador 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 |
+-------------------------------+----------------------+----------------------+

GPU en la configuración de Nvidia XServer


fuente
La placa base a menudo desactiva (?) La GPU integrada si se encuentra una GPU discreta. ¿Es visible en el administrador de dispositivos?
Andreas
Eso no es un factor aquí, no me importa la GPU integrada, solo las GPU discretas.
Okay. ¿Puede mostrar algo usando ambas GPU discretas?
Andreas
1
Sí, por supuesto, he adjuntado más información para mostrar que tanto Win10 como Linux están recogiendo las tarjetas. He usado ambas tarjetas para CUDA y SLI con Direct3D y OpenGL.
1
@Andreas nullptr y NULL solo difieren en que NULL puede malinterpretarse como un entero literal, ambos se interpretan como constantes de puntero nulo en un contexto de puntero.
Lars Viklund

Respuestas:

5

De las preguntas frecuentes de LunarG :

No hay soporte para múltiples GPU en la versión 1.0. Desafortunadamente, esa fue una característica que Khronos tuvo que cortar para preservar el horario. Se espera que esté cerca de la parte superior de la lista para Vulkan 1.1. Es perfectamente posible que una implementación de Vulkan exponga múltiples GPU. Lo que Vulkan actualmente no puede hacer es permitir el intercambio de recursos entre ellos. Entonces, desde un punto de vista de, por ejemplo, un administrador de sistemas de Windows, es posible reconocer múltiples formas de renderizar en una superficie y luego usar ganchos del sistema operativo para transferir eso a la pantalla. Lo que Vulkan no tiene es la capacidad de compartir una textura o un objetivo de renderizado entre múltiples GPU.

Escribiría este problema como algo que no se implementó porque no era necesario que lo implementaran todavía. Cuando Vulkan agrega un mejor soporte multi-GPU para ser requerido en sus especificaciones, estos problemas probablemente se solucionarán. Es extraño que aún no exponga las GPU disponibles, pero incluso si lo hiciera, Vulkan 1.0.x no está listo para utilizar múltiples GPU de una manera que beneficie a los juegos.

Actualización a partir del 23/07/2016: con el controlador Nvidia GeForce v368.69, Vulkan puede ver varias GPU.

Sin cambiar nada (todavía usando Vulkan API v1.0.11) y actualizar al último controlador de Nvidia, tengo acceso completo a ambos dispositivos físicos en mi máquina, esto no significa que el soporte Multi-GPU esté aquí, pero es el primer paso en Vulkan incluso siendo una opción viable al desarrollar un juego.


fuente
0

Deberías haber deshabilitado / eliminado el puente SLI.
Ese es el evidente error obvio que estoy viendo aquí AFAIK.

bit2shift
fuente
Eso no tiene absolutamente nada que ver, vea mi respuesta, se ha resuelto.
@MattJensJensen En el momento de esta pregunta, la implementación de NVIDIA mostraba el combo SLI y no tarjetas individuales, a eso me refiero.
bit2shift
No, no era para mí, sin el puente SLI, solo una tarjeta era visible.