Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
20210409_setup_windows.md 4/9/2021
1 / 13
Windowsの計算環境構築︓MobaXterm+WSLWindows上での開発環境の構築についてです。2021年度向けに少し整理しなおしました。
⽬標としては、MobaXtermをターミナルとし、P研クラスタや外部スパコンなどではSSHログインして利⽤、ローカルPC上ではWSLを利⽤することで、外部でもローカルでも変わらないUnix/Linux環境を構築する。
Windows上でインストールするソフトウェアMobaXterm(Windows上で動作する X server / SSH cliant / ターミナル)Windows Subsystem for Linux (略称︓WSL。Windows10上でLinuxのバイナリ実⾏ファイルをネイティブ実⾏できるようになる。)
ターミナルからWSLにインストールするソフトウェア(必須)gfortran # Fortran コンパイラgnuplot # グラフ描画ソフト。PythonでMatplotlibを使ってもよい。make # Makefileによるプログラムのコンパイルimagemagick # 画像変換・動画作成ツールwget # WebコンテンツダウンローダMiniconda3 # Python環境
必要に応じて追加するソフトウェアParaView # 3次元可視化ソフトウェアTexLive # TeX⽂書, PDF作成Spack # ⾼性能計算向けソフトウェアパッケージ管理システム
⽬次1. WSLのインストール2. MobaXtermのインストール3. Fortranなどの環境構築(apt コマンド)4. Python環境構築1(Miniconda3のインストール)5. Python環境構築2(conda コマンドによる仮想環境作成、追加パッケージのインストール)6. Python環境構築3(Jupyter Labの動作確認)7. (必要に応じて)ParaView環境構築8. (必要に応じて)LaTeX環境構築9. (必要に応じて)Spack環境構築
1.WSLのインストール(※以下では、⽐較的簡単なWSLの設定⽅法を説明します。機能をフルに引き出そうと思うとWSL2を利⽤する⽅が良いのですが、設定がややこしい、最新のOSのみ対応など、条件が多いので割愛します。WSL2を使ってみたい⼈は⾃⼰責任でリンク先を参照。Windows 10 ⽤ Windows Subsystem for Linux のインストールガイド)
[コントロールパネル] - [プログラム] - [プログラムと機能] - [Windowsの機能の有効化または無効化] ダイアログを開き、[Linux⽤Windowsサブシステム] にチェックを⼊れてOK。PCを再起動する。
20210409_setup_windows.md 4/9/2021
2 / 13
Microsoft Storeを起動し、検索ボックスに「WSL」と⼊⼒して、検索結果から「Ubuntu」を選択する。
[⼊⼿]から[インストール]し、[起動]する。初期設定としてユーザー名とパスワードを設定する。
20210409_setup_windows.md 4/9/2021
3 / 13
これでWSLの準備は完了。exitで終了する。
2.MobaXtermのインストールhttps://mobaxterm.mobatek.net/ ホームページから、[Download] - [Home eddition (free)] - [MobaXtermHome Edition (Portable edition)]をダウンロード。Zipファイルを展開し、MobaXterm_Personal_(バージョン番号).exeを起動。
この時点で、[User sessions]内の[WSL Ubuntu]をクリックすると、WSLによるLinux環境が利⽤できる。
★重要★ WSL固有のコマンドとして、[explorer.exe] がある。これは、WSL上のディレクトリをWindowsのエクスプローラーで表⽰するもので、WSL上で開発したコードや出⼒データを⼿元に持ってくるときに重宝する。使い⽅は、
20210409_setup_windows.md 4/9/2021
4 / 13
$ explorer.exe (ディレクトリ名)
また、Windowsから⾒ると、WSLのホームディレクトリは \\wsl$\Ubuntu\home\(ユーザー名)となる。 逆に、WSLから⾒ると、Windowsファイルシステムは /mnt/ 以下に⾒える。例えば、Cドライブは /mnt/c/ 。
3.Fortranなどの環境構築(apt コマンド)MobaXterm の WSL Ubuntu を起動し、ターミナル上でパッケージのアップデート・インストールを⾏う。root権限で実⾏する必要があるので "sudo" を apt コマンドの前につける。apt コマンドは、Debian系Linuxのパッケージ管理⽤コマンドで、パッケージ間の依存性解決・ダウンロード・インストールを⾃動で⾏ってくれる。 ※apt がうまく動作しない場合、セキュリティソフトの設定の問題の場合がある。セキュリティソフトを最新にアップデートする、MobaXtermを例外に加えるなどの対処を試してみる。
$ sudo apt update # 更新プログラムの確認(途中、WSLのパスワードを聞かれる) $ sudo apt upgrade # 更新プログラムのインストール(途中、Do you want to continue?には y と答える)
20210409_setup_windows.md 4/9/2021
5 / 13
さらに、途中 Restart services during package upgrades without asking? と聞かれる。どちらでもよいが、ひとまず yes で進む。
これで、既存パッケージ群のアップデート完了。次に、gfortran, gnuplot, make, imagemagick, wget をインストールする。
$ sudo apt install gfortran gnuplot make imagemagick wget
20210409_setup_windows.md 4/9/2021
6 / 13
適切にインストールされていれば、$ which gfortran などとコマンドの場所を確認すると、 /usr/bin/gfortranと返答が返ってくる。また、gnuplotを起動して plot x など⼊⼒し、ちゃんと描画できるか確認しておく。
4.Python環境構築1(Miniconda3のインストール)https://docs.conda.io/en/latest/ ホームページからもダウンロードできるが、WSL上では wget コマンドでダウンロードしてくる⽅が⼿っ取り早い。また、ローカルPCのみならず、P研クラスタや外部スパコンでも環境構築が応⽤できるように、ホームディレクトリ以下にインストールする。Python環境構築の参考資料︓ スパコンで機械学習(Python環境構築編)東京⼤学情報基盤センター.pdf
$ cd # ホームディレクトリに移動 $ mkdir mylib # ホームディレクトリ下に mylib/ という各種ソフトウェアインストール⽤の場所を確保。 $ cd mylib/ # ~/mylib/ に移動。 $ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # Linux⽤Miniconda3インストーラをダウンロード。 $ chmod +x Miniconda3-latest-Linux-x86_64.sh # インストーラに実⾏権限を付与。 $ ./Miniconda3-latest-Linux-x86_64.sh -p ~/mylib/Miniconda3 # ~/mylib/Miniconda3内にインストールを実⾏。
途中、「ライセンスの承諾?」→yes,「Miniconda3の初期化?」→yes。インストール後、再起動するように指⽰あり。
20210409_setup_windows.md 4/9/2021
7 / 13
ターミナルを再起動すると、bashのプロンプトの前に (base) という表⽰が追加されていればインストールできている。
さらに、Miniconda3のアップデートを⾏っておく。
$ conda update conda $ conda remove conda-build $ conda update --all
20210409_setup_windows.md 4/9/2021
8 / 13
5.Python環境構築2(conda コマンドによる仮想環境作成、追加パッケージのインストール)Miniconda3はAnaconda3の最⼩パッケージ群なので、必要なパッケージを conda コマンドにより追加する。ただし、Pythonの環境設定は依存関係が複雑でこじれると厄介らしいので、いつでもきれいにできるように仮想環境を作成してその中で開発環境を構築する。
conda コマンドの使い⽅は付属のヘルプ conda -h や conda create -h などをみれば詳しい。仮想環境周りの典型的なコマンドをいくつか載せておく。
コマンド 説明
$ conda info -e 全仮想環境名を表⽰。
$ conda create -n (仮想環境名) (パッケージ名)
指定パッケージをインストールした新規仮想環境を作成。
$ conda remove -n (仮想環境名) --all 仮想環境を丸ごと削除。
$ conda activate (仮想環境名) 指定仮想環境を有効化。
$ conda deactivate 仮想環境を無効化。(base) に戻る。
以下では仮想環境 (pken) を作成して、そこに jupyterlab, numpy, scipy, matplotlib を追加する。
$ conda create -n pken jupyterlab numpy scipy matplotlib # 仮想環境 (pken) 作成 $ conda activate pken # (pken) を有効化。
20210409_setup_windows.md 4/9/2021
9 / 13
仮想環境 (pken) を有効化すると、プロンプトの前の表⽰が (base) から (pken) に変わる。さらに、numpyを使った計算やmatplotlibで描画できるか試してみよう。
$ python >>> import matplotlib.pyplot as plt >>> import numpy as np >>> x=np.linspace(0,10,100) >>> y=np.sin(x) >>> plt.scatter(x,y) >>> plt.show()
さらに、パッケージを追加する場合は、⼤概は
$ conda intall (パッケージ名)
でよいが、デフォルトの配布先以外(conda-forge など)からでないとインストールできないパッケージもたまにある。$ conda install -c conda-forge (パッケージ名) また、Anaconda Cloudhttps://anaconda.org/ でパッケージ名を検索すれば、インストール⽅法が出てくる。P研の研究周辺で必要に応じてインストールするパッケージは以下の通り。
$ conda install dask netcdf4 xarray # NetCDFファイルの読み込みに。 $ conda install -c conda-forge f90nml # Fortran90のnamelistファイルの読み込みに。 $ conda install -c conda-forge pyevtk # VTKファイルの書き出しに。 $ conda install networkx pygraphviz # ネットワーク可視化に。 $ conda install scikit-learn tensorflow keras # ニューラルネットワークモデルの構築に。
20210409_setup_windows.md 4/9/2021
10 / 13
ちなみに、ターミナルを起動する度に⼿動で仮想環境 (pken) を有効化するのが⾯倒な⼈は、シェル環境設定ファイル ~/.bashrc の末尾に "conda activate pken" と書き⾜しておくとよい。
6.Python環境構築3(Jupyter Labの動作確認)Jupyter Lab はWebブラウザ上で動作するPythonの対話型実⾏環境です。
【便利な点】
解析プログラムを作る際に、コードの⼀部分だけ実⾏することが可能。ノートブックの形で、途中解析結果を確認したり、Markdownでメモを残したりできるので、コード開発に便利。
【不便な点】
試⾏錯誤の経過を覚えているので、消したつもりの変数が残ったまま作業していたりする。後になって、コードを動かし直したら、変数が定義されてなかったり。 →【対応策】たまにコード全体を再実⾏して検証。再起動またはメニューバーの [Kernel] - [Restart Kernel] を利⽤。ある程度解析コードが定型化してきたら、⼤量処理をするのはノートブック( .ipynbファイル)ではなく、スクリプト( .pyファイル)の⽅が便利。 →【対応策】⼀時的な対話的処理や解析コード開発段階はJupyter Labのノートブックを利⽤し、必要に応じてスクリプト化。コマンドライン上で、$ jupyternbconvert --to python (ノートブック名).ipynb
起動⽅法︓ 通常、$ jupyter lab と打ち込むとWebブラウザが起動し、Jupyter Lab の環境が表⽰されるのですが、今回のMobaXterm+WSL環境中では、jupyterlabはWSL(Unix環境)上にインストールされているのに、WebブラウザはWindows上にあるために、そのままではうまくいきません。
$ jupyter lab --no-browser
20210409_setup_windows.md 4/9/2021
11 / 13
でWSL上のJupyter Labを起動し、別途開いておいたWebブラウザで、表⽰されるアドレスにアクセスすることで、Jupyter Lab の環境が表⽰されます。若⼲⾯倒ですが、外部スパコン上で Jupyter Lab を使う場合も似
20210409_setup_windows.md 4/9/2021
12 / 13
たような状況(むしろさらにIPアドレスやポートの設定が加わる)なので割り切りましょう。
※ちなみに、前⼭のテストした範囲では、以下の2ステップの設定で$ jl のコマンド⼊⼒のみで Jupyter Lab環境が表⽰できるようになりました。興味があればお試しください。 (i) Jupyter Lab起動時のトークンを指定。Jupyter環境設定ファイル ~/.jupyter/jupyter_notebook_config.py を開いて362⾏⽬辺り、
c.NotebookApp.token = '8f53...4a9bのような任意のトークン'
(ii) 以下のエイリアスをシェル環境設定ファイル ~/.bashrc の末尾に追加。
alias jl='/mnt/c/Program\ Files/Mozilla\ Firefox/firefox.exe -url="localhost:8888/?token=8f53...4a9b" ; jupyter lab --notebook-dir=~/ --no-browser'
意味は、jlというコマンドを定義。「CドライブにあるWebブラウザ firefox.exe をアドレス指定"localhost:8888/?token=8f53...4a9b"で起動。それが終わったら、 jupyter lab をホームディレクトリ ~/ の下でブラウザ⽴ち上げ無しで起動。」
7.(必要に応じて)ParaView環境構築https://www.paraview.org/ からWSLにダウンロード・インストールで出来ると思いますが、WSL上でのParaView利⽤はまだ試していません。やってみた⼈、情報求む。 ※少なくとも、WindowsからWSL内のファ
20210409_setup_windows.md 4/9/2021
13 / 13
イルにアクセスしたり、逆にWSLからWindows上のファイルにアクセスしたりすると遅くなるので、Windows⽤Paraviewをインストールして使う場合は、ファイルもWindows側に置いてからアクセスするようにする。
8.(必要に応じて)LaTeX環境構築WSL上でもLaTeXを使いたい場合(GKVコードのfig_stdoutとか)。常にWindows側でしかTeX⽂書を編集しない場合はインストール不要。
sudo apt install texlive-lang-cjk # 中⽇韓語版TeX Live → platex, dvipdfm コマンドが使えるようになる。 sudo apt install texlive-fonts-recommended texlive-fonts-extra # TeX ⽤拡張フォント sudo apt install evince # PDFビューア(もしWSL上になければ)
9.(必要に応じて)Spack環境構築SpackはLawrence Livermore National Laboratoryで開発されているスパコン向けのパッケージ管理ツールで、各⾃のローカル環境下に様々な数値計算⽤パッケージをインストールして使⽤することができます。基本的にすべてソースからbuildするようなので、ちょっと時間はかかります。並列計算周りは Spack に⼀本化すると、以下のローカルのspackディレクトリを削除するだけで完全消去可能なので、環境が汚れなくてよさそう。 https://spack.readthedocs.io/en/latest/※少し試してみた限り、環境によってコンパイルが中断されてしまったり、まだ使い⽅には癖がありそうなので、そのうち別のIssueにまとめたいと思います。
蛇⾜
※MobaXterm+WSL環境構築の動機 MobaXtermだけでもLinux環境をエミュレートできるが、その実態はCygwin同様Windows向けにコンパイルされたバイナリベースで構築されているので、Linuxのバイナリ実⾏ファイルを他からダウンロードしてきてネイティブ実⾏することはできない。例えば、Python環境としてMinicondaを利⽤するには、Windows版Minicondaをインストールする必要があり、しかもMobaXtermからWindows版Minicondaへのパスを通すだけではだめでいろいろ設定がいる模様。前⼭はスタックしてしまいました。というか、ローカルWindowsのためだけに特化した環境構築のあれこれで悩みたくない。 →MobaXterm+WSLは、外部でもローカルでも変わらないUnix/Linux環境を構築できるのがメリット。Windowsの中にWSLがあるというよりは、ネットワーク経由でWSLというLinux環境にログインしている感覚。
※MobaXtermは単なるX Serverが使えるターミナルとしてしか利⽤しないので、Portable editionで⼗分だが、Installer editionでももちろん問題ない。