【記事】Windows Subsystem for Linux 2(WSL2)のGPUサポートについて【3/3】

【ご確認ください】こちらは以下の記事の続編記事となります

Windows Subsystem for Linux 2 (WSL2) のGPUサポートについて【1/3】
Windows Subsystem for Linux 2 (WSL2) のGPUサポートについて【2/3】

前回までの記事では、Windows Subsystem for Linux 2(WSL2)上でのGPGPUのパフォーマンスについて検証を行いましたが、最終回となる今回は、より実践的なWSL2の利用方法について検証を行っていきます。

 

WSL2のサポート状況

第1回の記事公開時点(2020年8月)では、WSL2はWindow Insider Programに参加しなければ利用することができない機能でしたが、その後のオペレーティングシステムのサポートの拡大によりWindows Insider Programに参加せずともWSL2を利用できるようになりました。

Windows Insider Programに参加し、簡単な手順でWSL2に環境を構築する方法と、手動インストールにてWSL2環境を構築する(Windows Insider Program非参加)より選択可能です。構築手順は、インストールガイドを参照してください。

Windows 10 用 Windows Subsystem for Linux のインストール ガイド
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#step-2–check-requirements-for-running-wsl-2

さてあらためてWSL2がサポートされるプラットフォームについてみていきます(2021年5月現在の情報です)。

WSL2の正式リリース時はWindows 10 バージョン2004以降での対応でしたが、現在ではバックポートされ、バージョン1903以降であればWSL2を利用できるようになっています。

Windows Insider Programへの参加も必須ではなくなり、より一般的な環境でWSL2の利用が可能になったと言えるでしょう。なおWSL2上でGPGPUを利用する場合は引き続きWindows Insider Programへの参加が必要です。

 

WSL2上でのGPGPU利用について

WSL2上でのGPGPU利用はWindows 10の次期リリース(開発コード名:21H1)以降で正式にサポートされる見込みです。21H1は2021年5月現在ベータチャネルにて公開されており、Windows Update の「seeker」エクスペリエンスを通じて、「バージョン19043.844」をダウンロードできます。※最新のWindows 更新プログラムと機能はベータチャネルで確認いただけます。

Releasing Windows 10 Build 19043.899(21H1) to Beta Channel
https://blogs.windows.com/windows-insider/2021/03/15/releasing-windows-10-build-19043-899-21h1-to-beta-channel/

 

WSL のプレビュービルドについて

Windows 10 Insider プレビュービルド 21364 では、GUI アプリが入手可能となりました。2021年4月21日米国時間に公開されたマイクロソフト社のブログでは、Windows上でのLinux GPUアプリケーションの実行について紹介されています。

Announcing Windows 10 Insider Preview Build 21364
https://blogs.windows.com/windows-insider/2021/04/21/announcing-windows-10-insider-preview-build-21364/

 

WindowsでのDocker対応

WSL2上のLinux環境で直接的に(厳密には直接ではありません)GPGPU を利用するメリットはもちろんありますが、GPGPU の利用であれば今までもWindows環境上で実行することができました。GPGPU に関心のある方にとって、これまでにLinuxを選択する強い動機の一つになっていたのが Docker への対応ではないかと思います。

Windows対応のDocker実装自体も以前からありましたが、開発プロセスの都合上情報が多方面に分散しており導入に難がありました。このような状況下にWSL2が登場したことで状況が変わりました。

WSL2をベースとしたコンテナの起動がサポートされ、WindowsへのDockerの導入が非常にスムーズになり、使い慣れたWindows環境からDockerコンテナの運用・管理が行えるようになっています。また実験的なサポートにとどまるものの、最新版ではGPUサポートが追加されており、DockerコンテナからのGPGPU実行が可能になったのは最大のメリットともいえるかもしれません。

 

Dockerとは

Dockerはコンテナ型仮想化技術をベースとしたオープンソースソフトウェアです。Linux、macOS、Windows上で動作する開発環境のコンテナ(ソースコードや環境の入れ物)で、他のOSへのコンテナの移動も容易です。またホストOS上でそのコンテナ単位で区切られたプロセスを実行できるため、仮想化ソフトウェアもゲストOSも必要ありません。

イメージ作成、コンテナ起動、アプリケーション開発や複数のコンテナの組み合わせてサービスを構築する際にとても便利です。軽量化を図る、開発環境の構築や共有、ファイルの管理などにも長けており、業務の効率化にも役立つツールです。

 

Docker Desktop for Windowsのインストール

本項でWindows版Dockerの位置づけとなるDocker Desktop for Windowsのインストールを簡単に解説します(※以下WSL2のGPU実行が行える環境がすでに構築されていることを前提とします)。

Docker Desktop for Windowsのインストールには特に難しい設定は必要ありません。公式サイトから入手したインストーラーを実行し、順を追って進むことでDockerコンテナの実行環境が構築されます。このときWSL2が有効になっていれば、自動的にWSL2をベースとしたコンテナ実行環境も有効になります(インストール中、ダイアログで有効/無効を設定できます)。

Docker Desktop for Windows
https://hub.docker.com/editions/community/docker-ce-desktop-windows/

インストールが完了すると、WindowsのコマンドからDockerコンテナの実行が可能です。このときWSL2サポートを有効にしていると、WSL2側でデフォルトに設定しているディストリビューションとDocker実行環境が統合され、WSL2上のLinuxディストリビューションからもDockerの操作が可能になります。

 

Dockerコンテナの動作検証

 NVIDIA公開のDockerコンテナを起動し、第2回と同じくNVIDIA CUDA Toolkitのサンプルプログラム*として提供されている NBody (N体シミュレーション) が動作することを確認いたしました。

 
※画像クリックで拡大します

前述の通り現状ではWindows版DockerでのGPUサポートは実験的な段階に留まっております。弊社で行いました検証テストでも、公式サイトの公開手順のままでは動作しない場合がございました。今後の開発によりこのような事象は解消していくと思われますが、お試しいただく際はお客さまご自身の責任にて行っていただくようご留意いただきますようお願いいたします。

CUDA Toolkitのセットアップ、サンプルプログラムの実行については、こちら(1回目の記事) を参照してください。

 

今後の展望、まとめ

第3回に渡りWindows Subsystem for Linux 2(WSL2)の概要について解説いたしました。これまでコンピュータのOS環境を2つ用意しなければならなかったケースでも、WSL2を活用することでシームレスかつ効率的に処理を行うことが現実的になってきました。

WSL2はGUIアプリケーションの起動をサポートしていませんが、マイクロソフト社のロードマップによると、今後のアップデートでLinux版GUIアプリケーションの実行もサポートする見込みです。Linux環境向けに開発した専門的なアプリケーションを(仮想的に)Windows上で実行する事ができることが期待されます。

WSL2のGPUサポートはいまだ開発の途上です。今後さらに機能が安定し拡大することで、ようやく一般向けにGPUサポートが公開されることになると思われます。その前段階として現在の状況の簡単なレポートとして、みなさまの参考になりましたら幸いです。

この記事を書いた人 : 技術部 和田
この記事を書いた日 : 2021.4.30