Vulkan vkEnumeratePhysicalDevices Mengembalikan Hitungan Perangkat Tak Terduga


8

Di mesin saya menjalankan saya punya dua GTX 980 Tis. Ketika saya meminta hitungan perangkat fisik dengan vkEnumeratePhysicalDevicesitu selalu mengembalikan 1 meskipun memiliki 2 kartu grafis diskrit fisik. Ketika saya menggunakan vulkaninfosatu-satunya perangkat yang terdaftar GPU0adalah a DISCRETE_GPU/ GTX 980 Ti.

Ini terjadi pada Windows 10 dan juga GNU / Linux 4.5 menggunakan Vulkan API 1.0.11 dengan driver Nvidia.

Apakah ini perilaku normal dan saya tidak menggunakan API dengan benar atau ini bug? Saya merasa telah membuat kesalahan yang mencolok tetapi saya tidak dapat menemukan apa pun dalam spesifikasi Vulkan tentang hal itu.

Untuk lebih jelasnya, beginilah cara saya menghitung jumlah perangkat fisik:

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

Juga, untuk mengonfirmasi bahwa OS melihat kartu:

Windows 10:

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

GPU dalam Pengaturan 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 dalam Pengaturan Nvidia XServer

vulkan 

GPU terintegrasi sering (?) Dinonaktifkan oleh motherboard jika GPU terpisah ditemukan. Apakah terlihat di pengelola perangkat?
Andreas

Itu bukan faktor di sini, saya tidak peduli dengan GPU terintegrasi, hanya GPU diskrit.

Baik. Apakah Anda dapat menampilkan sesuatu menggunakan GPU diskrit: s?
Andreas

1
Ya, tentu saja, saya telah melampirkan lebih banyak informasi untuk menunjukkan bahwa Win10 dan Linux mengambil kartu. Saya telah menggunakan kedua kartu untuk CUDA dan juga SLI dengan Direct3D dan OpenGL.

1
@Andreas nullptr dan NULL hanya berbeda dalam NULL yang dapat disalahartikan sebagai integer literal, keduanya diinterpretasikan sebagai konstanta pointer nol dalam konteks pointer.
Lars Viklund

Jawaban:


5

Dari FAQ LunarG :

Tidak ada banyak dukungan GPU di versi 1.0. Sayangnya itu adalah fitur yang harus dipotong Khronos untuk menjaga jadwal. Diharapkan berada di dekat bagian atas daftar untuk Vulkan 1.1. Sangat mungkin bagi implementasi Vulkan untuk mengekspos beberapa GPU. Apa yang Vulkan saat ini tidak bisa lakukan adalah memungkinkan berbagi sumber daya di antara mereka. Jadi dari sudut pandang, misalnya, seorang manajer sistem Windows, mungkin untuk mengenali beberapa cara untuk membuat permukaan dan kemudian menggunakan kait sistem operasi untuk mentransfer ke layar. Apa yang tidak dimiliki Vulkan adalah kemampuan untuk berbagi tekstur atau membuat target antara banyak GPU.

Saya akan menulis masalah ini sebagai sesuatu yang tidak diimplementasikan karena mereka belum diwajibkan untuk mengimplementasikannya. Ketika Vulkan menambahkan dukungan multi-GPU yang lebih baik untuk dibutuhkan dalam spesifikasi mereka, masalah ini kemungkinan besar akan diperbaiki. Sungguh aneh bahwa itu masih tidak akan mengekspos GPU yang tersedia, tetapi bahkan jika itu terjadi, Vulkan 1.0.x tidak siap untuk menggunakan beberapa GPU dengan cara yang akan menguntungkan game.

Pembaruan pada 7/23/2016: Dengan driver Nvidia GeForce v368.69 beberapa GPU dapat dilihat oleh Vulkan.

Tanpa mengubah apa pun (masih menggunakan Vulkan API v1.0.11) dan memperbarui ke driver terbaru Nvidia, saya memiliki akses penuh ke kedua perangkat fisik di komputer saya, ini tidak berarti bahwa dukungan Multi-GPU ada di sini, tetapi ini adalah langkah pertama di Vulkan bahkan menjadi pilihan yang layak saat mengembangkan game.


0

Anda harus menonaktifkan / menghapus jembatan SLI.
Itulah kesalahan yang sangat mencolok yang saya lihat di sini AFAIK.


Itu sama sekali tidak ada hubungannya, lihat jawaban saya, itu telah dipecahkan.

@MattJensJensen Pada saat pertanyaan ini, implementasi NVIDIA menunjukkan kombo SLI dan bukan kartu individual, itulah yang saya maksud.
bit2shift

Tidak, itu bukan untuk saya, tanpa jembatan SLI, hanya satu kartu yang terlihat.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.