web-dev-qa-db-ja.com

Linuxホストで実行されているが、WindowsまたはMacOSホストでは実行できないDockerコンテナーからGPUにアクセスできるのはなぜですか?

最近のバージョンのdocker(またはnvidia-dockerの任意のバージョン)では、CUDA APIへのフルアクセスを使用して、Dockerコンテナー内からホストGPUに直接(?)アクセスできます。これは、複雑な機械学習推論サーバーをデプロイするときに非常に便利です。

ただし、現在のところLinuxのみがサポートされています。

MicrosoftとApple彼らのゲームを強化し、同じレベルのサポートを提供できないのはなぜですか?つまり、Linuxで使用されているトリックは、他のOSでは真似が難しいようです。 ?

1
Will

Linux上のDockerはホスティングカーネルを直接使用しますが、WindowsにはDockerが直接対話するためのLinuxカーネルがないため、Windows上のDockerは実際にはVM(WindowsのHyper-Vによってホストされる)で実行されます。したがって、Windows上のDockerコンテナーからホストGPUに到達するには、GPUドライバーと通信するために、ゲストのDockerコンテナーからVMをホストしているWindows OSに到達する必要があります。これらすべてを適切にサポートするには、MicrosoftおよびGPUメーカーによる特別な開発が必要です。

2
Raulinbonn

2020年2月の時点で、Windowsコンテナーを介したGPUへのアクセスがDxおよびDxに基づく計算で可能です。詳細は https://github.com/MicrosoftDocs/Virtualization-Documentation/tree/master/windows-container-samples/directx で、特に以下のセクションで読むことができます。

gPUアクセラレーションを使用したDirectXワークロードのコンテナ化と実行を示します。具体的には、WinMLRunner機械学習推論アプリを使用します

[https://techcommunity.Microsoft.com/t5/containers/bringing-gpu-acceleration-to-windows-containers/ba-p/393939]に記載されているDocker更新が付随するWindowsコンテナー、「プロセス分離」を追加VMを必要としない、または使用しないモード。

CUDAアクセスについては、Dx以外にサポートされる追加のAPIに関する将来の更新を待ちます。

2020年6月29日の更新-CUDAがWindowsのWSL2からアクセスできるようになりました。 https://docs.Microsoft.com/en-us/windows/wsl/tutorials/gpu-computehttps://developer.nvidia.com/cuda/wsl

1
Prabindh

Windows Server 2016でのみ利用可能なGPUパススルー(つまり、DDA)が必要です。

0
Bert