Використовувати NVidia GPU від VirtualBox?


29

Як змусити гостя VirtualBox використовувати графіку NVidia?

Налаштування хоста:

  • Windows 7 x64

  • NVidia Optimus

  • У панелі управління NVIDIA я чітко вибрав високопродуктивний процесор NVIDIA для:

     C:\Program Files\oracle\VirtualBox\VirtualBox.exe
     C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
    
  • Коли VirtualBox працює, програмне забезпечення NVidia не відображає його як додаток, що використовує графічний процесор NVidia. Тому я припускаю, що VirtualBox дійсно не використовує графічний процесор Nvidia.

Гість:

  • Windows 7 x64 (тобто те саме, що і хост)

  • Гість доповнення встановлено

  • У налаштуваннях VirtualBox увімкнено 3D-прискорення: Дисплей / Відео / Увімкніть прискорення 3D

  • Що Rhinoceros , програма, яка підтримує OpenGL, повідомляє як відеоадаптер:

    Humper
    Chromium
    OpenGL version: 2.1 Chromium 1.9
    Render version: 2.0
    Shading Language: 1.40 - Intel Build 9.17.10.3517
    Driver Date: NA
    Driver Version: NA
    Maximum Texture size: 8192 x 8192
    Z-Buffer depth: 32bits
    Maximum Viewport size: 8192 x 8192
    Total Video Memory: 64 MB
    

    Мені здається, що віртуальна машина використовує апаратне прискорення тривимірного хосту, але, на жаль, Intel.


2
Відеомагнітофони не отримують прямого апаратного доступу - вони отримують віртуальний GPU. . . пов’язане питання: superuser.com/questions/395245/…
ernie

6
@ernie VirtualBox може надати гостям прямий доступ до API OpenGL GPU хосту. Наскільки я можу сказати, це працює на моїй машині. Тільки VirtualBox використовує Intel GPU замість NVidia GPU. Цитата з посібника VirtualBox : "За допомогою цієї функції, якщо програма у вашій віртуальній машині використовує 3D-функції через інтерфейси програмування OpenGL або Direct3D 8/9, замість емуляції їх у програмному забезпеченні (яке буде повільним), VirtualBox спробує використовувати 3D-обладнання вашого хоста ".
feklee

@feklee Назва запитання вводить в оману: Ви хочете використовувати nVidia GPU для VBox. "З" також можливий, але означає, що відрізняється: Апаратне забезпечення-Прохідне, тобто. доступ до GPU хоста безпосередньо з VBox.
лайки


Дізнайтеся про "перехідне відео з віртуальної скриньки".
e-info128

Відповіді:


20

Я усвідомлюю, що минуло кілька років, але хотів відповісти, оскільки ця публікація виявляється досить високою, коли ви переглядаєте Google для "virtualbox 3d multi GPU". За час, що минув, справи стали набагато простішими та кращими.

Люди, які натрапляють на цю нитку, швидше за все, приземляться сюди, оскільки у них є ноутбук або ПК з двома графічними процесорами, що є досить поширеним в наші дні - особливо на ігрових ноутбуках. Вбудований графічний процесор Intel використовується для візуалізації вікон та загальних програм, але програми, які використовують функціональні можливості 3D-процесора, повинні робити це за допомогою високопродуктивної GPU Nvidia.

Сьогодні я будував на своєму ноутбуці Ubuntu VM, щоб зробити кілька крос-платформних розробок, і все було нормально, за винятком того, що гостьовий VM був надзвичайно повільним, і пояснення цьому не було, тому що CPU, пам'ять, диск мали низький рівень використання.

Ми не зайняли багато часу, щоб зрозуміти, що саме ця проблема викликала відео. Запуск програм, максимізація / мінімізація вікон - все, що ми вважаємо належним у 2019 році, але потребує 3D-прискорення для роботи з будь-якою розумною швидкістю - використовували GPU 0.

Це було легко визначити, оскільки Windows 10 тепер має можливість бачити використання GPU за допомогою "диспетчера завдань", а потім на вкладці "продуктивність". І я міг бачити, як я переміщував вікна, максимізовані, мінімізовані, що робилося через GPU на хості. Цей графічний процесор на хості - це інтегрований графічний процесор Intel HD, і я хотів використати NVidia GTX-1050ti, який був GPU1.

Після обшуку я насправді не знайшов ніде, де можна було б вказати, який GPU використовувати. Але ця тема та деякі інші нагадали мені, що для таких налаштувань вам потрібно зайти в панель управління NVidia, потім "керувати налаштуваннями 3d", потім вкладку "Налаштування програми".

Ви, ймовірно, не знайдете "Virtualbox" у списку. Але ви можете натиснути кнопку "Додати" та додати virtualbox.exe. Можливо, вам доведеться пробурити диск / шлях, де встановлена ​​ваша віртуальна скринька. Після того, як ви додали його, у налаштуваннях нижче переконайтесь, що пункт 2. "Виберіть бажаний графічний процесор для цієї програми" встановлений для GPU, який ви хочете використовувати, який у моєму випадку був "HIgh-performance NVIDIA процесор" .

Не встановлюйте його на автоматичне і, звичайно, не встановлюйте його інтегрованим. Звичайно, вам потрібні налаштування VM, встановлені у вікні 3D прискорення, і вам потрібні додатки для гостей, встановлені на хості. Але після того, як ви встановили 3D налаштування відео-хоста, як описано вище, вимкніть гостьовий VM, вийдіть з віртуального вікна, а потім перезапустіть virtualbox та VM.

Якщо ви використовуєте диспетчер завдань | performacne і переглядаєте процес "менеджера віртуальних скриньок" і спостерігаєте за тим, до чого використовується GPU під час навігації в інтерфейсі гостьового інтерфейсу, ви повинні побачити його, використовуючи кращу GPU зараз. Дивіться зображення, вставлене нижче.

Все, що сказано, не сподівайтеся, що зможете запускати ігри в гостьовій машині. 3D пропуск прискорення через все ще не зовсім так далеко. Але ви можете розраховувати на те, що у вас в гостях будуть сучасні ОС та інтерфейс користувача та мати прийнятний досвід. Можна було б грати в старі ігри в гостьовій машині, як і все, що базується на directX9. На жаль, у міру можливості віртуалізувати GPU eveolves технологія 3d ігор розвивається швидше.

Знімок екрана


2
Я зробив невелике дослідження сьогодні щодо можливостей 3D-прискорення VirtualBox та VMWare, а станом на січень 2019 року, якщо прискорення GPU у гостьовій машині важливе для вас, то вибір VMWare - найкраща ставка - особливо якщо ваша гостьова ОС - це windows. Можливості прискорення GPU для прискорення графічного процесора дещо менш розвинені, оскільки ви можете лише надати гостьовому VM максимум 128 Мб відео оперативної пам’яті, а в VMWare дозволяє виділити до 2 Гб відеопам'яті. VMWare підтримує DirectX 10, а Virtualbox підтримує DirectX9. Як я вже говорив у дописі, directx 9 досить датований.
Томас Карлайл

1
"" Виберіть бажаний графічний процесор для цієї програми "встановлено GPU, який ви хочете, щоб воно використовувалось." Я не бачу наведеної вище опції. Я бачу Ambinetn, Ansiotropic Filtering ... і т. Д., Але нічого на "виберіть бажаний графічний процесор"
moondra

Вам потрібен PCI, хоча я ще не працював над Optimus, але, думаю, з деякими хаками це можливо
kensai

Мені вдалося зробити подібний трюк, щоб змусити ввімкнути картку nvidea для virtualbox, але жоден із 3 доступних графічних контролерів, наданих Virtualbox, прокинувся належним чином з моєю гостьовою ОС Neon KDE. У мене з'явилися великі збої в інтерфейсі, тому використання nvidea в моєму випадку не є можливим. Завдяки пропозиції @ThomasCarlisle я спробую пограти з VMware.
Arkemlar

17

Надати гостю повний доступ до GPU, ймовірно, неможливо. Якщо віртуальна машина мала прямий доступ до вашого графічного процесора, поки ваш хост користувався ним, погані речі TM трапиться, оскільки обмін пам’яттю між двома ефективно різними комп'ютерами - це не річ; покажчики та адреси, і те, що між ними було б дуже різним. (Жодна доступна для споживача картка не підтримує обслуговування двох комп’ютерів одночасно.)

Однак є кілька речей, які можна спробувати. Спочатку встановіть бажаний графічний процесор на хорошому на панелі керування NVidia ( Налаштування 3DКерування налаштуваннями 3DБажаний графічний процесор ). Це може змусити VirtualBox перейти з картою NVidia для OpenGL.

Якщо це не допомагає, спробуйте встановити додатки для гостей у безпечному режимі для гостя.

Нарешті, на хостах Linux ви можете спробувати передати GPU на віртуальну машину, але це буде працювати лише для PCI-карт, і я не зміг знайти, чи ваш PCI, і навіть так, ви маєте хороший шанс відірвати GPU від хоста або спричинити інші проблеми. Спочатку знайдіть адресу PCI (шина, пристрій та функція) для хорошої картки. Встановіть чіпсет вашого VM на ICH9; це не одразу нічого не зламало, коли я спробував це. Потім скористайтеся утилітою VBoxManage, щоб прикріпити карту:

vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f

Замініть Your VM Nameвідповідно. BBномер шини вашого GPU на хості; DD- це пристрій; Fє функцією. Після цього @введіть слот PCI, що він буде в гостях. Наприклад:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:00.0@03.01.0

Загалом, проходження графічного процесора, швидше за все, можливе на хості Linux. Див. Розділ Як налаштувати ігровий автомат із графічним процесором .


2
Припущення про те, що приєднання GPU до VM - це «погана річ», невірно; є велика спільнота людей, які хочуть зробити це для створення ігрових віртуальних машин на голі-металевих гіпервізорах. Якщо хто-небудь хотів це зробити в Linux, це вимагало б чорного списку графічного процесора PCIe, тому ядро ​​переходить лише до графіки чіпсетів; це запобігає проблемам "спільної пам'яті". Заборонити Windows забрати карту, мабуть, найскладніше вирішити це питання, і, швидше за все, знадобиться відключити пристрій або видалити оптиміз та драйвер nvidia.
Тім Г

@TimG Добре, я трохи уточнив свою посаду. Спасибі!
Ben N

@BenN Чудова відповідь, але мені потрібен момент, щоб уточнити. Ви самі пробували це на хості Windows? У посібнику сказано, що це доступно лише на хостах Linux ( virtualbox.org/manual/ch09.html#pcipassthrough ), і мені самому не пощастило працювати з хостом Windows.
Баріс Демірай

@BarisDemiray Якщо я пам'ятаю правильно, команда не повідомила про помилки, коли я її спробував, але я не думаю, що я перевірив, що VM змогла використовувати пристрій. Це було давно, правда, вибачте.
Бен N

Привіт @BenN, дякую, що знайшов час для відповіді. Саме так сталося, коли я спробував, в командному рядку жодних помилок ще немає, а у відеомашині немає графічної карти.
Баріс Демірай
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.