Vulkan vkEnumeratePhysicalDevices Restituzione di un conteggio dispositivo imprevisto


8

Nella macchina in esecuzione ho due GTX 980 Tis. Quando eseguo una query, il conteggio del dispositivo fisico vkEnumeratePhysicalDevicesrestituisce sempre 1 nonostante abbia 2 schede grafiche discrete fisiche. Quando uso vulkaninfol'unico dispositivo elencato è GPU0che è un DISCRETE_GPU/ GTX 980 Ti.

Questo accade in Windows 10 e GNU / Linux 4.5 usando l'API Vulkan 1.0.11 con driver Nvidia proprietari.

È un comportamento normale e non sto usando l'API correttamente o è un bug? Mi sembra di aver fatto un evidente errore evidente ma non riesco a trovare nulla nelle specifiche Vulkan al riguardo.

Per chiarezza, questo è esattamente il modo in cui interrogo il conteggio dei dispositivi fisici:

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

Inoltre, per confermare che il sistema operativo vede le carte:

Windows 10:

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

GPU nelle impostazioni del driver 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 nelle impostazioni di Nvidia XServer

vulkan 

La GPU integrata è spesso (?) Disattivata dalla scheda madre se viene rilevata una GPU discreta. È visibile in Gestione dispositivi?
Andreas,

Questo non è un fattore qui, non mi interessa la GPU integrata, solo le GPU discrete.

Ok. Sei in grado di visualizzare qualcosa utilizzando entrambe le GPU discrete: s?
Andreas,

1
Sì, ovviamente, ho allegato ulteriori informazioni per dimostrare che sia Win10 che Linux stanno raccogliendo le carte. Ho usato entrambe le carte per CUDA e SLI con Direct3D e OpenGL.

1
@Andreas nullptr e NULL differiscono solo per il fatto che NULL può essere interpretato erroneamente come un intero letterale, entrambi sono interpretati come costanti di puntatore null in un contesto di puntatore.
Lars Viklund,

Risposte:


5

Dalle FAQ di LunarG :

Non esiste più supporto GPU nella versione 1.0. Questa era purtroppo una caratteristica che Khronos ha dovuto tagliare per preservare il programma. Si prevede che sia vicino alla cima dell'elenco per Vulkan 1.1. È perfettamente possibile per un'implementazione di Vulkan esporre più GPU. Ciò che Vulkan attualmente non può fare è consentire la condivisione delle risorse tra di loro. Quindi da un punto di vista, ad esempio, un gestore di sistema di Windows, è possibile riconoscere diversi modi per eseguire il rendering su una superficie e quindi utilizzare i ganci del sistema operativo per trasferirlo sullo schermo. Ciò che Vulkan non ha è la possibilità di condividere una trama o una destinazione di rendering tra più GPU.

Scriverei questo problema come qualcosa che non è stato implementato perché non era necessario che lo implementassero ancora. Quando Vulkan aggiunge un migliore supporto multi-GPU da richiedere nelle loro specifiche, questi problemi saranno probabilmente risolti. È strano che non esporrà ancora le GPU disponibili, ma anche se lo facesse, Vulkan 1.0.x non è pronto per l'utilizzo di più GPU in un modo che gioverebbe ai giochi.

Aggiornamento dal 23/07/2016: Con Nvidia GeForce driver v368.69 più GPU sono visibili a Vulkan.

Senza cambiare nulla (usando ancora l'API Vulkan v1.0.11) e aggiornare all'ultimo driver di Nvidia, ho pieno accesso a entrambi i dispositivi fisici sulla mia macchina, questo non significa che il supporto multi-GPU sia abbastanza qui, ma è il primo passo in Vulkan anche essere una scelta praticabile durante lo sviluppo di un gioco.


0

Avresti dovuto disabilitare / rimuovere il bridge SLI.
Questo è l' evidente errore evidente che sto vedendo qui AFAIK.


Questo non ha assolutamente alcuna influenza, vedi la mia risposta, è stato risolto.

@MattJensJensen Al momento di questa domanda, l'implementazione di NVIDIA mostrava la combinazione SLI e non le singole schede, questo è ciò a cui mi riferisco.
bit2shift

No, non era per me, senza il bridge SLI, era visibile solo una carta.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.