この前の
Win11入れてみた記事の続き。
CUDA in WSL2については、
以前も挑戦したのだけど、残念ながらHWエンコード用のモジュールが用意されておらず、NVEncを動作させることはできなかった。
Windows11ではWSLgがPreview版でなくでも利用可能になるうえ、最近WSL2でHWエンコードができるようになったらしいと聞いて、再チャレンジすることにした。
CUDA in WSL2の導入
0. 環境
今回の環境は、下記の通り。
Win11 x64 22000
Core i9 7980XE
RTX2070 + GTX1060
1. WSL2を実行する環境整備
まず、WSL2用の専用のCUDAドライバをWindows11にインストールする。専用ドライバは、
このページからダウンロードできる。
ダウンロードしたら、あとは普段のNVIDIAのドライバインストールと同じ流れでインストールするだけで完了。
次にWSL2のカーネルのバージョンを確認する。4.19.121以降必須、5.10.16.3以降推奨とのこと。
wsl --status

ここでバージョンが古い場合は、Windows Updateで「Windows更新時に他のMicrosoft製品のUpdateを受け取る」にチェックが入っていることを確認し、Windows Updateの更新チェックをしてインストールするとよいとのこと。

2. LinuxをWSL2にインストール
インストール可能なLinux OSは下記コマンドで確認できる。
wsl --list --online

ここではUbuntu 20.04を選択した。
wsl --install -d Ubuntu-20.04
インストールが完了すると別ウィンドウでUbuntu 20.04が起動する。

ひとまず、Ubuntuを更新しておく。
sudo apt update && sudo apt upgrade
3. NVEncのインストールと実行
あとは
NVEncCのパッケージをダウンロードしてインストールするだけ。なお、そのままでWSL2で動作させるにはNVEnc 5.40以降が必要(5.40より前バージョンではひと手間かかってしまう)。
sudo apt install ./nvencc_5.40_Ubuntu20.04_amd64.deb
以前は、/usr/lib/wsl/libに HWエンコードに必要な libnvidia-encode.so.1 や HWデコードに必要な libnvcuvid.so.1 がなかったので動作させられなかったが、今回はちゃんと存在していて、無事エンコードできることを確認。素晴らしい!

2枚目のGPU(GTX1060)でも動作するかな?ということでテスト(-d 1を追加)。これも問題なく正常動作。

というわけで前回は動作するところまで持っていけなかったけど、今回は無事動作させることができた。また、パッケージを作成しているおかげでCUDAをインストールしてコンパイルみたいな手間がなくなり、NVEncCのインストールも非常に簡単に可能となっている。
WSL2は本当にすぐに起動できるし、手軽にLinux版のテストができるようになって大変ありがたい。ただ、どうしてもそれなりのメモリは喰うので、もっとメモリを載せたくなるのが問題。
このPCはAlderlake(i9 12900K)に更新予定なので、そのときはメモリを64GB載せたいなあ、と思いつつ、DDR5はどうせ高いんだろうなと思うとやっぱり32GBどまりになってしまうかもしれない。
スポンサーサイト