過去記事 windows/Windows Subsystem for Linux
PC搭載のNVIDIAカードが Windows Subsystem for Linux 2から利用できるようになった
だが、それには現状 WindowsInsiderProgram に参加してOSのビルド番号を上げる必要がある。
具体的には https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-index
から
「WSL 2 は、Windows 10、バージョン 2004、ビルド 19041 以上」
(20.08)現行では無理なので「WindowsInsiderProgram」を使ってバージョンアップする.
*WindowsInsiderProgramは無保証です。問題が発生したら自分で解決する必要があります
*WindowsInsiderProgram に掲示された機能はいずれ一般向けにも反映されます。それまで待つのもいいかも
修正
現行の 1903 でも「KB4566116」をインストールして、OSビルド番号が「*.1049」以上ならWSL2を使えるみたい.
WindowsInsiderProgramに入らなくてもWSL2へのパスが開けた模様
https://support.microsoft.com/ja-jp/help/4566116/windows-10-update-kb4566116
WSL2向けnvidiaドライバ:https://docs.nvidia.com/cuda/wsl-user-guide/index.html
windows/WSL2/CentOS
Installing the latest builds from the Microsoft Windows Insider Program †
参照windows#v0c95754
Installing the NVIDIA preview driver for WSL 2 †
https://developer.nvidia.com/cuda/wsl
よりCUDAドライバーを入手する.
上記URLの「Get CUDA Driver]リンクをクリックして、「NVIDIA Drivers for CUDA on WSL」ページから
windowsPCに搭載の NVIDIA カードの種類毎にドライバーを取得する。
ここではGeForceなカードを使っているので、「GEFORCE DRIVER」側を取得します。

「GEFORCE DRIVER」側の「DOWNLOAD NOW」リンクをクリックするとブラウザに新しいウィンドウが表示されます。
「NVIDIA Developer Program」にログインしていないと表示されるページのようで、ここでプログラムに
既に参加しているなら「Login」そうでないなら「Join now」で参加手続きを開始する
その後、元の「NVIDIA Drivers for CUDA on WSL」ページで再度「DOWNLOAD NOW」をクリックするとダウンロードが開始されます。
取得したファイルは「455.41_gameready_win10-dch_64bit_international.exe(553MB)」です。
っでこのドライバをインストールします
インストールの途中で選択肢が表れるが、
「GeForce Experience」が含まれない「NVIDIAグラフィックスドライバー」->高速で進めた.
Windows Subsystem for Linux 2を有効にさせてLinuxを乗せる †
「ここに入力して検索」欄に「コントロールパネル」と入力して「コントロールパネル」を表示させ、
そこから「プログラムと機能」を選択する。表示された「プログラムと機能」の左縦メニューの「Windowsの機能の有効化または無効化」を選択します。
そこで「Windows Subsystem for Linux」と「仮想マシン プラットホーム」を有効にして「OK」ボタンを押下します。

この後再起動します。
正しく反映されたかを確認するため、
再起動後、「スタート」->「設定」->「更新とセキュリティ」から「Windows Update」の「更新の履歴を表示する」を開き
更新の履歴ツリーの「その他の更新プログラム」を展開します。
ここに「Windows Subsystem for Linux Update...」があればいいのですが、、、

このように表示がなければ「Windows Update」画面にて「詳細オプション」を開きます。
ここで「Windowsの更新時に他のMicrosoft製品の更新プログラムを受ける」を有効にして

「Windows Update」画面にて「更新プログラムのチェック」リンクを押下します。

ここではこれが正解のようで、必要なパッケージがダウンロードされました。

その後、再度「更新の履歴を表示する」を開くと1件追加され、目的のパッケージがインストールされました。

PowerShellを立ち上げてLinuxカーネルのバージョンを確認します。
PS C:\Users\supervisor> wsl --update --status
Linux 用 Windows サブシステムの最終更新日: 2020/08/10
WSL の自動更新が有効になっています。
カーネル バージョン: 4.19.121.1
PS C:\Users\supervisor>
WindowsOSなのですが、WSL2を介して、kernel[4.19.121.1]を内部に持っていることが分かる。
次にLinuxをインストールします
Linuxをインストール †
windowsの「Microsoftストア」を開きます。手始めに検索欄で「Linux」と実行すると対象がリストアップされます。
「CentOS」を入力したら有料だった...いやそれ以上に怪しい...なのでubuntuを選びました
ここではUbuntu20.04 LTSを選択しました。右の「入手」ボタンを押下します。

インストールが完了すると、「スタート」のメニューに「Ubuntu 20.04 LTS」が登録される。これを選択して起動させると

と表示され、Ubuntu20.04LTSの「アカウント」作成並びにそのパスワードの定義が行われる。
*これはインストールしたUbuntu20.04LTSのアカウントであって、windowsPCのアカウントではない。
あえてwindowsPCのアカウントと揃えも構わない
ここではこんな感じにした

PowerShellからWSL2で動いているかを下記コマンドで確認できます
PS C:\Users\supervisor> wsl.exe --list -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
PS C:\Users\supervisor>
Setting up CUDA Toolkit †
っでCUDAライブラリをインストールします。
インストール方法はhttps://developer.nvidia.com/cuda-downloads
の方法でいいみたいだが、最後のインストールパッケージ選択が大事な様子.
作ったUbuntu20.04LTSから下記を実行します
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda-toolkit-11-0 **「cuda」とは指定しない**
終わって/usr/localを確認すると
illya@f:~$ ls -ld /usr/local/cuda*
lrwxrwxrwx 1 root root 9 Aug 10 19:22 /usr/local/cuda -> cuda-11.0
drwxr-xr-x 15 root root 4096 Aug 10 19:22 /usr/local/cuda-11.0
illya@f:~$
となる。
っが、、cuda-11.0ではなくもう一つ古いcuda-10.1を使いたい
その場合は下記のように
wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
sudo apt-get install cuda-libraries-dev-10-1
っで取り合えず Gautomatch を動かしてみる
illya@f:/tmp$ ldd ./Gautomatch_v0.56_sm30-75_cu10.1
linux-vdso.so.1 (0x00007ffc1cf0d000)
libnpps.so.10 => /usr/local/cuda-10.1/targets/x86_64-linux/lib/libnpps.so.10 (0x00007f201cbc0000)
libcufft.so.10 => /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcufft.so.10 (0x00007f2014586000)
libcublas.so.10 => /lib/x86_64-linux-gnu/libcublas.so.10 (0x00007f20107eb000)
libcurand.so.10 => /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcurand.so.10 (0x00007f200c78a000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f200c77f000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f200c75c000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f200c754000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f200c573000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f200c424000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f200c409000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f200c217000)
/lib64/ld-linux-x86-64.so.2 (0x00007f201d653000)
libnppc.so.10 => /usr/local/cuda-10.1/targets/x86_64-linux/lib/libnppc.so.10 (0x00007f200bf9c000)
libcublasLt.so.10 => /lib/x86_64-linux-gnu/libcublasLt.so.10 (0x00007f200a0f6000)
illya@f:/tmp$
illya@f:/tmp$ ./Gautomatch_v0.56_sm30-75_cu10.1 | head
***************************************************************************************************
Version: ./Gautomatch_v0.56_sm30-75_cu10.1 v0.56, updated on 2017-07-30
Author: Kai Zhang@MRC Laboratory of Molecular Biology
Contact: kzhang@mrc-lmb.cam.ac.uk
Description: This is a GPU accelerated program for fully automatic particle picking.
Note: Still under development, to be released soon ...
***************************************************************************************************
Usage:
./Gautomatch_v0.56_sm30-75_cu10.1 [options] <micrographs>
illya@f:/tmp$
っとなる
削除 †
インストールしたものを削除するには、「スタート」->「設定」から「アプリ」を開きます。
左縦メニューの「アプリと機能」を選び、その右側に存在する「Ubuntu 20.04 LTS」をクリックして、「アンインストール」を選択します。
