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 パススルーを備えたゲームマシンの設定方法。