WSL2上でGPU版guppyを使う

WindowsでGPU版のguppyを動かそうとして、まだ動かせていないけど、(管理者権限でパワーシェルを実行しておいて、その中でguppy_basecaller.exeを実行したら動いた。Windows用のNvidiaドライバーと「Windows」用のCUDAのインストールが前もって必要。)

WSL上でguppyをGPU使って動かせたので手順をメモ。下記の手順でOK。https://hackmd.io/@Miles/rkYKDHPsO の方の記事のほうが詳しいけど、一応最新の手順&日本語情報ということで。

  1. WindowsにNvidiaのドライバーをインストール
  2. WSL2のインストール
  3. WSL2のUbuntuにCUDAをインストール
  4. guppyをインストール
  5. guppyにGPUのオプションを付けて実行

1. WindowsにNvidiaのドライバーをインストール

https://www.nvidia.co.jp/Download/index.aspx?lang=jp

から自分のGPUにあったドライバーをダウンロードしてインストール。

2. WSL2のインストール

Windows TerminalかコマンドプロンプトかPower Shellを開いて、

wsl --install

と入力して、wslをインストール。OS再起動が必要。また、BIOSにて仮想化支援機能がオフになっている場合はオンにする必要あり。半分くらいのケースでは仮想化支援機能がオフになっている印象。上記コマンドによってインストールされるUbuntuのバージョンは2年ごとに(たぶん)変わる。(2023/3/26の時点ではUbuntu 22)

3. WSL2のUbuntuにCUDAをインストール

https://developer.nvidia.com/cuda-downloadsからLinux->x86_64->WSL-Ubuntu->2.0->runfile (local)をダウンロード。


下記のコマンドでCUDAをインストール

sudo apt update
sudo apt install -y build-essential
sudo sh /mnt/c/Users/XXX/Downloads/cuda_12.1.0_530.30.02_linux.run #XXXは自分のユーザ名
#あとは指示に従う

4. guppyをインストール

NanoporeのCommunityサイト(https://community.nanoporetech.com/downloads)から「Linux 64-bit GPU」をダウンロード。ログインが必要。

下記のコマンドでguppyを解凍して配置する

sudo tar --directory=/usr/local/ -xvf /mnt/c/Users/XXX/Downloads/ont-guppy_6.4.6_linux64.tar.gz

5.guppyにGPUのオプションを付けて実行

あとはguppyを実行するときに-x autoオプションを付けて実行するだけ。つけないとCPUになってしまう。WindowsのデスクトップにR10.4.1のフローセルで読んだfast5ファイルが入ったディレクトリ(input)がある場合は、例えば下記のようにに実行する。

 /usr/local/ont-guppy/bin/guppy_basecaller -x auto -i /mnt/c/Users/XXX/Desktop/input -s /mnt/c/Users/XXX/Desktop/ --config /usr/local/ont-guppy/data/dna_r10.4.1_e8.2_400bps_sup.cfg

デスクトップ版のRTX3050 (8GB)で500 Mbpほどコールするのに40分ほど。https://hackmd.io/@Miles/rkYKDHPsO#Native-Linux-vs-WSL2によれば、LinuxネイティブよりもWSL2は倍ほど遅くなるみたい。Windows上でguppyが動かなければWindowsを消すべきか。 管理者権限で実行したらguppyがWindowsネイティブで動くようになったけど、WSL2と比べて10%程度しかスピードアップしなかった。WSL2優秀だなぁ。

コメントする