質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • VMware

    256questions

    VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

VMware上の仮想マシンでGPUを使いたい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 19K+

kaisen

score 19

実現したいこと

VMwareを使った仮想マシンに
GPUを認識させたいです。

試したこと

対象とする仮想マシンの「仮想マシンの設定の編集」を開き、
「ハードウェア」タブの「追加」からグラフィックボードを追加できそうな設定を
探しましたが、見つかりませんでした。
今は色々検索して調べています。知識も足りないので勉強しながらです。

補足情報

Windows10にて、VMware Workstation 12 Playerを使っています。
仮想OSはLinuxです。グラボはnvidiaです。

知恵をお貸しいただきたければ幸いです。
よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+7

仮想マシン上でホストに接続されたGPUを認識させて使う方法があるかどうかと言うとあります。ただし、かなりハードルが高いです。

まずは、下記の記事を読んでください。

ESXi でGPUパススルーしてみた - Qiita

質問でやりたかったことを実現できていると思います。では、質問者さんの環境ですぐにできるのかというと、それはできません

上の機能はVMware ESXiのVMDirectPath I/Oという機能を使っています。通常のGPUはPCIe経由ですが、任意のPCIeを仮想マシンに割り当てるという機能です。また、この他に、対応しているGPUであれば、複数の仮想マシンでシェアするという機能もvGPUという機能もあります。どちらも、仮想マシンからホストを通さずに直接GPUを利用することになります。

お気づきかも知れませんが、VMware Workstation 12 PlayerではなくVMware ESXiでの話です。調べる限り、VMware Workstation 12 PlayerにESXiと同様のような機能は見受けられませんでした。仕組み上、仮想マシンに接続されるGPUはOSから切り離す必要がありますが、一般的なOS上で動作させる仮想化ソフトウェアはそのOSから切り離しがかなり厳しいと思われます(実際は切り離せますが、他にGPUが無ければディスプレイがないという状態になってしまいます。少なくともタスクマネージャーでGPUが二つ見える環境でないと無理でしょう)。ESXiのようなOS自体がHypervisorであれば、後付けのGPUをホスト側で使わずに起動できるので、実現ができるのでしょう。他には、XenDesktopでもできるという情報がありました。

ということで、どうしてもしたいのであれば、VMware ESXiをインストールしてください。いくつか制限はありますが、無償で使用できます(記事でも無償版を使用しています。なお、無償版の製品名としてはVMware vSphere Hypervisorです。ESXiはOSの名前で製品名ではありません)。ただし、次のことに注意してください。

  • OSを入れ直すことになりますので、今動いているWindows 10は無くなります。WindowsとESXiのデュアルブート構成もできません(少なくとも私はやり方を知りませんし、できるという情報も見たことがありません。そもそもESXiインストール時に「ディスクの中身が全て消えますが良いですか?」の意味の英語のメッセージが出ます)。(Windows 10のライセンスはなくなるわけではありません。しかし、仮想マシンにWindows 10をいれられるかどうかですが、それはよくわかりません。Windowsのライセンスは購入方法によってかなり複雑であるため、Microsoftに問い合わせしてください。OEMとかですとライセンスキーもどうするかも一緒に聞く必要があると思います。)
  • ESXiのコンソール画面で仮想マシンを管理することはできません。別途管理用にWindowsマシンが必要になります
  • 一部の仮想化環境専用GPU(GRID向けがほとんど)を除き、ほとんどのGPUは動作がサポートされていません。何もしなくてもそのまま動く場合もあれば、記事のように色々して動く場合もあれば、どうやっても動かない場合もあります。サポートされていないハードをESXi上で動作させるにはかなり敷居は高く、ESXiに関する高度な知識が必要です。かなりの覚悟を持って行ってください。試している人がほとんどいないため、完全な人柱です。

正直に言うと、仮想マシン上でGPUを確実に動かしたいというのであれば、仮想化をサポートしたサーバーとGPUとESXiをセットで購入した方が早いです。100万円はくだらないので個人で買うレベルではないと思いますが…。


【追記】

ESXiとXenDsektop以外でもPCI Passthrouh(上記のVMDirectPath I/Oに相当する機能)ができる物があるようです。参考:State of GPU Virtualization for CUDA Applications 2014 | Acceleware Ltd.

  • Oracle VirtualBox
    ただし、2014年の段階ではホストはLinuxのみでExtension Pack(個人・教育向けは無償だが、商用利用は有償)が必要のようです。ホストがWindows 10の場合はうまくいかなかったという報告ばかりで、できたというのは見つけられませんでした。
  • Hyper-V
    2014年の段階ではできていませんでしたが、最新のWindows Server 2016であれば可能です。しかし、Windows 10については機能が無効にされていてできないようです。

Hyper-VについてはRemoteFX vGPUというGPUを共有して使う機能もあり、こちらはホストがWindows 10もサポートしているようです。ただし、ゲストはWindowsクライアントのEnterprise版(企業向けなので個人への販売はありません)またはWindows Serverになります。Linux等は不明ですが、厳しいと思われます。

なお、仮想化とは異なりますが、WSLでのUbuntu上で認識できるかどうかですが、こちらもできないという報告があります。

ホストがどうしてもWindowsであってほしいというのであれば、Windows Server 2016に乗り換えるのが一番現実的かも知れません。

当たり前ですが、仮想マシンでGPUを使う場合は、ホスト側からそのGPUは切り離されます。CPU・チップセット内蔵、PCIe接続、外付け(Thunderbolt3経由)等をあわせて二つ以上のGPUが存在しなければそもそも不可能になります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/25 00:08 編集

    raccy様、回答ありがとうございます。

    技術的な説明に関しては
    あまり多くは理解できていないと思うのですが、
    確かに、私が調べた限りでもVMware ESXiに関する情報が多かったです。
    そして、VMware ESXiについても、
    あまり理解できていなかったのですが、
    これは素人には扱えない方法だと思ってました。。。
    raccy様の回答を受けて、なんとなく確証を得た気分です。

    ただ、VMwarePlayerにて、
    GPUが使えないという情報が
    知識がなくても理解できるレベルで転がっていないので、
    気になってしまっていました。
    質問しといてあれですが、今回の質問はあきらめようかと思い始めてます。。。

    キャンセル

  • 2018/02/25 00:28 編集

    ありがとうございました。

    あきらめて、
    新しいPCなどにLinuxを入れて、
    GPUを使う形になりそうです。

    必要な知識をわかりやすくまとめて下さり、助かりました。
    また機会があればよろしくお願いします。

    キャンセル

  • 2018/02/25 22:16

    >>[追記]
    気づくのが遅れました。
    付け加えていただきありがとうございます。

    現時点では、[追記]のような感じなのですね。
    近い将来にこれを試す人が増えて、
    情報が増え、使えるようになればいいな(いずれは無償で。。。)、と思います。

    それまでは色々可能な範囲で試していきます。

    キャンセル

checkベストアンサー

+1

VMwareというか仮想化ソフト一般には、そういう機能は無いと思います。
あくまで、仮想化ソフトで実現されたデバイスだけです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/24 22:25 編集

    otn様、回答ありがとうございます。

    たとえば、
    ディスプレイやUSB無線LANデバイスなどは、
    認識されて使えますが、
    これと同じように使うことはできないのですか?

    これには、
    ライセンスなどの問題でもあるのでしょうか?
    それとも、仮想化ソフト一般には
    GPUを扱う技術がないということでしょうか?
    変な二択でしたらごめんなさい。

    そして、もしよろしければ、
    この話題に関する情報のソースなどありましたら、
    教えていただけますでしょうか。お願いします。

    キャンセル

  • 2018/02/24 23:11

    ディスプレイは、VMwareが提供する仮想的なディスプレイデバイスです。
    ネットワークアダプタは、普通はVMwareが提供するネットワークアダプタ(ホストのネットワークアダプタとはブリッジ接続とか、NAT接続とか)を使いますが、USB接続のデバイスを直接使っているという事でしょうか?

    > 仮想化ソフト一般にはGPUを扱う技術
    作れば作れると思いますよ。

    キャンセル

  • 2018/02/24 23:26 編集

    回答ありがとうございます。

    >USB接続のデバイスを直接使っているという事でしょうか?
    いえ、USBコントローラというもので多分使えているのだと思います。
    多少、仕組みの雰囲気が掴めてきました。

    >作れば作れると思いますよ。
    そうですか。

    たとえば、USBコントローラだとかと同じように、
    GPUコントローラ(仮名)でもあれば使える
    ということですね。
    そして現状ではそれが無い、と。
    この認識でよろしければ、解決済みにしてしまいます。

    キャンセル

  • 2018/02/24 23:38

    > USBコントローラというもので多分使えているのだと思います。
    再度確認しますが、VMwareの設定で追加できるネットワークアダプタを使わずに、USBの先のデバイスを直接使っていると言うことですか?

    > たとえば、USBコントローラだとかと同じように、
    > GPUコントローラ(仮名)でもあれば使える
    USBとはまた違いますね。USBコントローラーという物は物理PCに存在しますが、それを仮想的に実現しているのがVMwareのUSBコントローラーです。
    GPUコントローラーのような物は物理PCに存在しません。

    キャンセル

  • 2018/02/25 00:00

    回答ありがとうございます。

    >再度確認しますが、VMwareの設定で追加できるネットワークアダプタを使わずに、USBの先のデバイスを直接使っていると言うことですか?
    どうやら私が勘違いしていたようです。
    初歩的な知識もなくて申し訳ありません。
    USB無線LANデバイスをUSBコントローラを使って認識させたうえで
    ネットワークアダプタを使ってネットに接続しているのだと思います。
    なにか、個人的に技術的なことをしてUSBの先のデバイスを直接使っているのではないと思います。

    >GPUコントローラーのような物は物理PCに存在しません。
    そうですか、GPUのデバイスドライバとかは似ているように思うのですが。。。
    少し、私は知らなすぎるようです。

    キャンセル

  • 2018/02/25 00:11

    VMwareの設定画面のネットワークアダプタを使っているので有れば、USB無線LANデバイスを認識しているのは、ホストOSで、VMwareでもゲストOSでもありません。
    この場合、VMwareの設定画面のUSBコントローラーは全く関係ありません。

    キャンセル

  • 2018/02/25 00:26 編集

    回答ありがとうございます。

    >この場合、VMwareの設定画面のUSBコントローラーは全く関係ありません。
    そうですか。
    やはり、一度勉強しなおそうと思います。
    このままでは手取り足取り教えてもらわなくてはならなくなりそうです。


    今回の質問内容に関することはあきらめて、
    新しいPCなどにLinuxを入れて、
    GPUを使う形になりそうです。

    詳しくありがとうございました。とても助かりました。
    また機会がありましたらよろしくお願いします。

    キャンセル

  • 2018/02/25 08:52

    このままだと誤解されていそうなので。

    古いパソコンやCPU・チップセット組み込みでなければ、GPUが接続されるのはPCIe(PCI Express)です。USBと同じようにPCIeにもコントローラはあります。デバイスマネージャーで表示を「デバイス(接続別)」でみるとGPUがPCIe経由で接続されているのがわかるはずです。仮想マシンにも、技術的には、同じようにPCIeのコントローラーは実現できますし、USBのように接続を仮想マシン側のPCIeコントローラーに結びつけることもできます。ただ、VMware Workstaiton Playerにはその機能が無いと言うだけです。

    キャンセル

  • 2018/02/25 13:52

    なるほど。そうですね。言葉に捕らわれて狭く考えていました。
    仮想PCIeコントローラーがあればいいのか。
    (需要が少なそうな気がするので、搭載されないでしょうけど)

    キャンセル

  • 2018/02/25 14:42 編集

    > 需要が少なそうな気がする

    エンタープライズ向けでは需要は決して少なくありません。仮想マシン上でのGPUを使った機械学習・AI、デスクトップ仮想化における仮想マシン上で3Dグラフィック処理(CADやグラフィックス分野で)、仮想通貨のマイニングと個人ではないレベルでは必要とされています。それに合わせてESXi、XenDesktop、サーバー向けHyper-Vでは既に実装されています。AMDもNVIDIA社も専用のグラフィックボードを発売しています。

    キャンセル

同じタグがついた質問を見る

  • VMware

    256questions

    VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。