はじめに
普段Linux計算機に触れていない方が材料シミュレーションに取り組むきっかけになればと思い記事を書いてきましたが、その完結編です。WSL2のおかげで、Windows上にLinux環境を構築することが容易になりました。~~WSL2の正式リリースは数か月後に迫っていますが、Insider Programに参加すると今すぐに利用できます。~~WSL2は、2020年5月の大型アップデートで正式導入されました。
WSL2の使い方、特にUbuntuの始め方についてはすでに多くの有益な情報がありますので、私が参考にした情報へのリンクを示すにとどめます。
WSL2の環境構築手順
Windows Terminal
WSL2と併せて利用できるWindows Terminalも注目に値します。こちらはInsider Programではなく、入手します。設定など、次の記事が詳しいです。StoreからPreview版を
Windows Terminal (v0.7 ~ v1.0) メモ
Insider Program をやめる準備(予約)をする
(WSL2は2020年5月に正式リリースされました。利用のために、Insider Programに参加する必要はありません。)
Insider Programは好きなタイミングで直ちにやめる(オプトアウトする)ことが出来ません。オプトアウトできるのはWindowsの大型アップデート時のみです。次の大型アップデート(2020年5月頃?)にはWSL2が含まれるはずですので、WSL2の利用を目的にInsider Programに参加した方は、オプトアウトを予約すると良いでしょう。
Ubuntuで材料シミュレーション
追加ソフトウェアをインストールするためのコマンド(と引数)がディストリビューションごとに異なります。
$ sudo apt install -y make gnuplot-nox gfortran libopenmpi-dev libfftw3-dev
その他の操作はLinux環境でほぼ共通です。例えばPHASE/0のインストール手順は、CentOSを対象としたこちらとほとんど同じです。唯一の違いは、FFTW3ライブラリのディレクトリに/usr/lib
を指定することです。同ディレクトリにライブラリはありませんが、/usr/includeにあるインクルードファイルを認識させるためです。ライブラリ本体は/usr/lib/x86_64-linux-gnuにあり、指定せずともコンパイラが見つけてくれます。
以前と同じ課題で、ベンチマークしました。
https://qiita.com/USAMI_Mamoru/items/830d6ddb54ae96c82184#性能評価
今回利用するのは、Core i5-4210Uを搭載したノートPCです。物理2コア、Hyper Threadingを利用して論理4コアで動作しています。PHASE/0は執筆時点の最新版である、2019.01.01を用いました。
並列設定 | 所要時間 |
---|---|
並列なし | 620秒 |
k点2並列 | 430秒 |
......期待が大き過ぎたのでしょうか。今後のさらなるWSL2のチューニングに期待します。(期待できないかもしれません;WSL 2、実はWSLからパフォーマンス向上ほとんどなし?)
なお、科学技術計算では、Hyper Threadingによる高速化は(ほとんど)期待できないといわれています。具体的数値を示しませんが、本例題でもその傾向が見られました。
WSLでCentOSを使う
Linuxのデスクトップ環境利用ではUbuntuのシェアが高いのですが、材料シミュレーションを含む科学技術計算のための大規模並列実行環境では、CentOSが優勢です。大規模計算に取り組む意欲があれば、CentOSに慣れておくのも良いでしょう。とはいえ、管理者にならない限り、使い方は大差ありません。OS(ディストリビューション)の差異よりも、ジョブ管理システム、コンパイラ(MPIなどライブラリを含む)など計算機ごとに追加インストールされているソフトウェアの利用方法の違いの方が、影響が大きいと思います。
WSL2で動作するCentOS8の配布元はこちらです。
https://git.io/centwsl
こちらのサイトWSL2を使用し無料でCentOS8を使う方法を参考に作業したのですが、リンク先が(見え)なくなってしまったので、簡潔に説明します。
ダウンロードしたCentOS8.zip
を展開し、フォルダ内のCentOS8.exe
を実行すると、その場にCentOSがインストール(ファイルが展開)されます。Ubuntuの場合はc:\Users\ユーザー名\AppData\Local\Packages\
以下にインストールされるので、それを真似て、ZIPを展開したCentOS8
フォルダを、c:\Users\ユーザー名\AppData\Local\Packages\CentOS8
に移動します。CentOS8.exe
を実行すれば、インストール完了です。
CentOS8.exe
の名前を変えると複数のCentOS環境を作成できます。失敗を恐れずにジャンジャン実験しましょう。
インストール直後はWSL1です。このままでも良さそうですが、WSL2に変換します。
> wsl --set-version CentOS8 2
初回起動時には、パッケージをアップデートします。
# dnf update -y
何もしなければrootでログインしています。有効なパスワードは設定されていませんのでそのまま放置しても良いですが、パスワードを設定する場合はpasswd
コマンドを使います。後で利用するsudo
コマンドと併せてインストールします。
# dnf install -y passwd cracklib-dicts sudo
次に、普段使いのための一般ユーザーのアカウントを作成します。パスワードを設定し、sudo
コマンドを実行できるようにwheel
グループに追加します。
# adduser [user-name]
# passwd [user-name]
# usermod -G wheel [user-name]
一旦ログアウトして、CentOS8.exe
を使って、デフォルトユーザーを変更します。
> CentOS8.exe config --default-user [user-name]
次からは、一般ユーザーでログインできます。追加ソフトウェアのインストールなど管理者権限が必要なコマンド実行にはsudo
コマンドを使います。
$ sudo dnf install -y zsh which bzip2 python36 util-linux-user
PHASE/0のコンパイルと計算実行(計算結果のグラフ化)に必要なソフトウェアを追加インストールします。
$ sudo dnf install -y gcc-gfortran fftw-static perl gnuplot make patch
OpenMPIもパッケージからインストールできるのですが、これを使ってコンパイルしたPHASE/0の計算は異常終了してしまいました。そこで、(安定していることを期待して最新版ではない3.1.5を)ソースからインストールします。OpenMPIのコンパイルと実行に必要なソフトウェアを追加します。
$ sudo dnf install -y gcc-c++ openssh-clients
OpenMPIのソースはダウンロードしてください。
$ tar jxf openmpi-3.1.5.tar.bz2
$ cd openmpi-3.1.5
$ ./configure && make
$ sudo make install
PHASE/0のコンパイル手順はこちらと同じです。
トラブルシューティング:パッケージのデータベースが壊れたら
$ sudo rm -f /var/lib/rpm/__db*
$ sudo dnf update
トラブルシューティング:WSL2 requires an update to its kernel component.
3月のWindows update後にWSL2が起動しなくなりました。メッセージの続きにある通り、https://aka.ms/wsl2kernelにアクセスして、MSIパッケージを追加インストールすれば解決します。
WSL2 will be generally available in Windows 10, version 2004
コンテナを使う
WSL2があれば、Windows 10 HomeにDocker Desktop(Stable可)をインストールできます。
Docker Desktop for Windows Home is here!
Docker Desktop Community 2.3.0.2リリースノート
材料シミュレーションに限らず、アプリケーションをコンテナに組み込んで配布するケースが増えています。例えば古典分子動力学計算LAMMPSには、公式コンテナがあるようです。