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

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

VirtualBox ゲストで NVidia グラフィックスを使用するにはどうすればいいですか?

ホストの設定:

  • Windows 7 x64

  • NVIDIA オプティマス

  • 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 アクセラレーションを有効にする: ディスプレイ / ビデオ / 3D アクセラレーションを有効にする

  • サイ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 のものを使用しています。

答え1

数年が経過していることは承知していますが、この投稿は Google で「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 であり、私は GPU1 である NVidia GTX-1050ti を使用したいと考えていました。

いろいろ検索してみましたが、使用する GPU を指定できる場所は見つかりませんでした。しかし、このスレッドや他のスレッドを見て、このような設定では、NVidia コントロール パネルを開いて「3D 設定の管理」を選択し、「プログラム設定」タブを選択する必要があることを思い出しました。

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

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

タスク マネージャー|パフォーマンスを使用して、「virtualbox manager」プロセスを確認し、ゲスト VM の UI をナビゲートするときにどの GPU が使用されているかを確認すると、より優れた GPU が使用されていることがわかります。以下に貼り付けた画像を参照してください。

とはいえ、ゲスト VM でゲームを実行できるとは思わないでください。3D アクセラレーション パススルーはまだそこまで進んでいません。ただし、ゲストに最新の OS と UI が備わり、満足のいくエクスペリエンスが得られることは期待できます。ゲスト VM では、DirectX9 ベースの古いゲームをプレイできます。残念ながら、GPU を仮想化する機能が進化するにつれて、3D ゲーム テクノロジはより速く進化します。

スクリーンショット

答え2

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

ただし、試すことができる方法がいくつかあります。まず、NVidiaコントロールパネル(3D設定3D設定を管理する推奨グラフィックプロセッサ)。これにより、VirtualBox は OpenGL 用の NVidia カードを使用するようになるかもしれません。

それでも解決しない場合は、セーフモードでGuest Additionsをインストールするゲストに。

ついに、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:[email protected]

一般的に、GPUパススルーはLinuxホストで可能になる可能性が高いです。GPU パススルーを備えたゲームマシンの設定方法

関連情報