VirtualBoxからNVidia GPUを使用しますか?


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 GPUを使用するアプリケーションとしてリストしません。したがって、VirtualBoxは確かにNvidia GPUを使用しないと思います。

ゲスト:

  • Windows 7 x64(つまり、ホストと同じ)

  • インストールされたゲスト追加

  • VirtualBox設定で有効化された3Dアクセラレーション:Display / Video / Enable 3D Acceleration

  • サイ、ビデオアダプタなどの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
    

    私には、仮想マシンはホストの3Dハードウェアアクセラレーションを使用しているように見えますが、残念ながらIntelのものを使用しています。


2
VMはハードウェアに直接アクセスできません-仮想GPUを取得します。。。関連する質問:superuser.com/questions/395245/...
アーニー

6
@ernie VirtualBoxを使用すると、ゲストはホストのGPUのOpenGL APIに直接アクセスできます。それが私のマシンで動作することを知ることができる限り。VirtualBoxのみがNVidia GPUの代わりにIntel GPUを使用しています。VirtualBoxマニュアルからの引用:「この機能を使用すると、仮想マシン内のアプリケーションがOpenGLまたはDirect3D 8/9プログラミングインターフェイスを介して3D機能を使用する場合、ソフトウェアでエミュレートするのではなく(低速になります)、VirtualBoxはホストの3Dハードウェア。」
feklee 14

質問の@fekleeタイトルは誤解を招くです:あなたは、NVIDIA GPUを使用するためのVBox。「差出人」も可能ですが、ハードウェアパススルー、つまり VBox内からホストのGPUに直接アクセスします。
larkey


「virtualbox passthrough video」についてご覧ください。
e-info128

回答:


20

「virtualbox 3d multiple GPU」をグーグルで検索すると、この投稿がかなり高く表示されるので、数年が経ちましたが答えたいと思いました。時間が経つにつれて、物事はずっと簡単で良くなりました。

このスレッドにつまずく人は、2つのGPUを備えたラップトップまたはPCを持っているため、ここに着く可能性が高いでしょう。これは、最近では特にゲーム用ラップトップでよく見られます。オンボードのIntel GPUは、ウィンドウや一般的なアプリケーションのレンダリングに使用されますが、GPU 3D機能を利用するアプリケーションは、高性能のNvidia GPUを介してそれを行う必要があります。

今日、私はラップトップ上でUbuntu VMを構築してクロスプラットフォーム開発を行っていましたが、ゲストVMが非常に遅いことを除いてすべてがうまくいきました.CPU、メモリ、ディスクはすべて低い使用率を示していたため、それについての説明はありませんでした。

問題を引き起こしているのはビデオのパフォーマンスであると理解するのに時間がかかりませんでした。アプリケーションの起動、ウィンドウの最大化/最小化-2019年に当たり前のことですが、妥当な速度で動作するために3Dアクセラレーションが必要なものはすべて、GPU 0を使用していました。

Windows 10では、「タスクマネージャー」、次に「パフォーマンス」タブを使用してGPU使用率を確認できるため、これを判断するのは簡単でした。そして、ホスト上のGPUを介して行われているウィンドウの移動、最大化、最小化を確認できました。ホスト上のそのGPUは統合されたIntel HD GPUであり、NVidia GTX-1050ti(GPU1)を使用したかったのです。

周りを検索した後、使用するGPUを指定できる場所は実際には見つかりませんでした。しかし、このスレッドと他のいくつかは、これらの種類のセットアップでは、NVidiaコントロールパネルに移動し、「3D設定を管理」、次に「プログラム設定」タブに移動する必要があることを思い出しました。

リストには「Virtualbox」はおそらくないでしょう。ただし、「追加」ボタンを押して、virtualbox.exeを追加できます。virtualboxがインストールされているドライブ/パスをドリルダウンする必要がある場合があります。追加したら、以下の設定で、項目2「このプログラムに適したグラフィックプロセッサを選択する」が使用するGPUに設定されていることを確認します。これは、私の場合は「高性能NVIDIAプロセッサ」です。 。

自動に設定しないでください。統合するように設定しないでください。もちろん、3Dアクセラレーションボックスにチェックマークを付けてVM設定を設定し、ホストにゲスト追加をインストールする必要があります。ただし、上記のようにホストビデオの3D設定を設定したら、ゲストVMをシャットダウンし、仮想ボックスを終了してから、仮想ボックスとVMを再起動します。

task manager | performacneを使用して「virtualbox manager」プロセスを見て、ゲストVMのUIをナビゲートするときに使用されるGPUを見ると、より良いGPUを使用して表示されるはずです。以下に貼り付けた画像を参照してください。

とはいえ、ゲストVMでゲームを実行できるとは思わないでください。3Dアクセラレーションパススルーはまだそれほど遠くありません。ただし、ゲストに最新のOSとUIを用意し、許容できるエクスペリエンスを期待できます。directX9に基づいたもののように、ゲストVMで古いゲームをプレイできます。残念なことに、GPUを仮想化する機能が進化するにつれて、3Dゲームテクノロジーはより迅速に進化します。

スクリーンショット


2
本日、VirtualBoxとVMWareの3Dアクセラレーション機能について少し調査しました.2019年1月の時点で、ゲストVMのGPUアクセラレーションが重要な場合、VMWareを選択することが最善の策です(特にゲストOSがWindowsの場合)。VirtualBoxのサポートGPUアクセラレーション機能は、ゲストVMに最大128MBのビデオRAMしか提供できず、VMWareでは最大2GBをビデオメモリに割り当てることができるため、少し開発が遅れています。VMWareはDirectX 10をサポートし、VirtualboxはDirectX9をサポートします。投稿で述べたように、directx 9はかなり古くなっています。
トーマスカーライル

1
「「このプログラムに適したグラフィックプロセッサを選択してください」が使用するGPUに設定されています」上記のオプションが表示されません。Ambinetn、Ansiotropic Filteringなどが表示されますが、「select grapics processor」の選択はありません
moondra

私はそれがまだオプティマスに取り組んで取得できませんでしたが、あなたはそれが可能である、まだ私はいくつかのハックと考えて、PCIパススルーを必要とする
kensai

Virtualboxでnvideaカードを強制的に有効にするために同様のトリックを実行することはできましたが、Virtualboxが提供する3つの利用可能なグラフィックコントローラーはどれも、Neon KDEゲストOSで正しく起動しませんでした。私は大規模なUIの不具合を抱えていたので、私の場合にnvideaを使用することはアヘンではありません。@ThomasCarlisleの提案のおかげで、VMwareを試してみます。
アルケムラー

17

ゲストに完全なGPUアクセスを許可することはおそらく不可能です。仮想マシンがホストの使用中にGPUに直接アクセスできた場合、2つの事実上異なるコンピューター間でメモリを共有することは問題ではないため、Bad Things TMが発生します。ポインターとアドレス、その他はそれらの間で大きく異なります。(消費者が利用できるカードは、2台のコンピューターのサービスを同時にサポートしていません。)

ただし、試すことができることがいくつかあります。まず、NVidiaコントロールパネルで適切なグラフィックプロセッサを適切なものに設定します3D設定3D設定の管理優先グラフィックプロセッサ)。これにより、VirtualBoxがOpenGLのNVidiaカードに対応する可能性があります。

それでも解決しない場合は、ゲストにゲスト追加機能をセーフモードでインストールしてみてください。

最後に、Linuxホストでは、GPUを仮想マシンに渡すことができますが、これはPCIカードでのみ機能し、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

一般に、GPUパススルーはLinuxホストで可能になる可能性が高くなります。GPUパススルーを使用してゲーム機をセットアップする方法を参照してください。


2
GPUをVMに接続することは「悪いこと」であるという前提は間違っています。ベアメタルハイパーバイザー上でゲームVMを作成するためにそれをしたい人々の大規模なコミュニティがあります。Linuxでこれを行いたい場合、PCIe GPUをブラックリストに登録して、カーネルがチップセットグラフィックスのみにアクセスするようにする必要があります。これにより、「共有メモリ」の問題が防止されます。Windowsがカードを取得できないようにすることは、おそらくこの質問で解決するのが最も難しい問題であり、デバイスを無効にするか、optimusとnvidiaドライバーをアンインストールする必要があります。
ティムG

@TimG良い点、私の投稿を少し明確にした。ありがとう!
ベンN

@BenNすばらしい答えですが、明確にする必要があります。Windowsホストでこれを自分で試しましたか?マニュアルには、これはLinuxホスト(virtualbox.org/manual/ch09.html#pcipassthrough)でのみ利用可能であり、私自身はWindowsホストで動作するという運がなかったと述べています。
バリスデミライ

@BarisDemiray正しく覚えていれば、コマンドを実行してもエラーは報告されませんでしたが、VMがデバイスを使用できることをテストしたとは思いません。しかし、ずいぶん前のことでした。
ベンN

こんにちは、@ BenN、返信に時間を割いてくれてありがとう。それはまさに私が試したときに起こったことであり、コマンドラインにエラーはなく、VMにはグラフィックカードはありません。
バリスデミライ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.