WSLでcudaを動かしたい

 久しぶりにcudaを使おうと思うことがあって、windows環境で使ってたんだけど、やっぱLinuxの方がいいんだけど、諸事情によりOSはLinuxにできないので、Dockerで使うべって思ったら、WSL2でcudaを使えばいいことが分かった。

 ところで、何かの勘違いでDocker Desktopを入れたらWSLがわけわからんことになったので、まずWSLから入れなおす。どうやらWindowsの人柱的なのを使わないといけないので、Windows10Insider Programに入って、WindowsUpdateをする。

 すごい、時間がかかる。なんか半日くらいUpdateしてた。

 そのあとでWSL用のNVIDIAのドライバを入れて、UbuntuをWSLに入れて、cudaを入れると使えるようになるっぽい。nvidia-smi -lが使えないのだけど、なんか一応GPUは認識してるっぽいからまあいいことにする。

  とりあえず行列の足し算でもしてみるか。

 

 ↓のリンク先を参考にした。

www.kkaneko.jp

 

laptrinhx.com

あたらしいパソコン

 やりたいことは色々とあるのだけど、検出器は沼があるので、あとにしよう。

 本当はsemantic segmentationでなにがしかネットワーク組んで、モデルを作りたいが、面倒くさい。OpenCVでできる程度で検出器を作って、そこからデータセットを作って、それを学習データにして色々な認識用のモデルを作るのが先だ。いまさらそんなモデルはたくさんあるがなあ。

あたらしいパソコン

 どうにもこうにもWindowsで"deep"なやりかたは鬼門というか、茨の道のようで、CUDA 10.1でTensorflow-gpuを使おうとすると、僕はこんなドMじゃないです見たいなやり方でいれないといけない。

https://dev.infohub.cc/tensorflow2-alpha-gpu/#CUDA_101

 

 仕方がないので、CUDA10.0をいれて、Tensorflow 2.0.0をpipで入れたよ。

qiita.com

 

 ちなみに、一からコンパイルしてもいけるみたいだけど、まだそこまでドMじゃない。これで一応Tensorflow入れれて、かつGPUを認識しているところまで確認した。長い環境構築であった。

あたらしいパソコン

 恐ろしいことにgccが入ってなかったので、MinGWから入れる。

yohshiy.blog.fc2.com

 あと入れたつもりになっていたCUDAが入ってなかった。ので、何も考えずにまずは10.2を入れておく。

qiita.com

docs.nvidia.com

www.kkaneko.jp

あたらしいパソコン

 Windowsで開発しなければならなくなったけど、エディタどうするってなって、今更emacsキーバインドから抜け出せないからemacs使いたいんだけど、Windowsemacsは茨の道なのでVSCにemacsキーバインド使うことにした。本当はVSCなんて封建的なものは使いたくないけど、面倒なので仕方ない。

qiita.com

 そしてvenvで仮想環境作ろうとしてスクリプトを実行しようとしたら、PowerShellスクリプトは実行できませんとか出てきたので、氏ねとばかりに、

qiita.com

をやる。

 そして、仮想環境立てて、色々とpip installしているところ。

qiita.com

 

あたらしいパソコン

 っていうか、WSLってLinuxカーネル入ってねえから、Lunix用のNVIDIAのドライバ入れても意味なくね?そもそもWSLってGPU認識しないんだって。

 あたらしく内蔵SSD買ってきて、Linuxとマルチブートにしつつ、しばらくWindowsでtensorflow使う感じですかね。面倒くさいし、Windowsで開発は色々とあれだが、まあしゃあねえな。

electric-blue-industries.com

superuser.com

 そしてそうなるとemacsWindowsで使うという地獄が待っている。。。

あたらしいパソコン

 WSLはなんとなく使えるようになった。

 WSLでCUDA使ってKeras動かしたいので、CUDAとかをWSLに入れる。

 Python環境自体は仮想環境で動かさないと後で爆死するので、仮想環境使えるようにする。

qiita.com

 

 WSLにCUDAを入れるやり方は、いろんな人がいろんなことを言ってるからよくわからない。wgetとかcurlで何かを落としてきて、インストールするらしい。謎のパソコン部品メーカーにはWSL向けにCUDAを提供していますというようなことは乏しい英語能力では書いてないように見えたので、多分オフィシャルにはだしてないのだろう。WSLがなぜ動くとかよくわからないけど、とりあえずDNNができればいいんだよ。Kerasが動けばいいんだよ。

 ドライバはWSLならRTX2070は440らしいが、apt使うと失敗するって書いてあって悲しい。

 

  $ nvidia-smi -l

 

しても知らねえよって言われる。しゃーねーからNVIDIAからドライバDLしてインストールするしかねえ。面倒くさい。