mokumoku-installation
Windows PCに
します。
Windows PCは以下の要件を満たすことを前提とします。
一部の操作では管理者権限が必要です。特に、会社所有のPCをご使用の場合はご注意ください。
Macなど、Windows以外の計算機については、付録Aにて簡潔に説明します。
WSLには、WSL1とWSL2があり、現在の既定値はWSL2です。 WSL2はWSL1の完全な上位バージョンではありませんが、WSL2の使用を強くお勧めします。
WSL 1 と WSL 2 の比較 | Microsoft Docs
後述するWSLgは、WSL2で動作します。
なお、WSL1とWSL2は、インストール後に相互変換可能です。
一般的にLinux環境では、グラフィックス描画にX Window System (X11)という仕組みを利用します。 (近年、Waylandへの置き換えが進んでいる、そうです。) その仕組みの利用に際して、表示を担うソフトウェアが「Xサーバー」です。
かつて、WSLでグラフィカルアプリケーションを利用するには、Xサーバー(Windowsアプリケーション)が必要でした。 現在は、WSLがグラフィカルアプリケーション(X11とWayland両方)の実行をサポートしています(WSLgと呼ばれます)。
Linux 用 Windows サブシステムで Linux GUI アプリを実行する
仮想GPU用のドライバーをインストールしてください。
WSLのインストール手順はシンプルです。
スタートメニューの右クリックから、管理者権限のWindows PowerShell(もしくはコマンドプロンプト)を起動し、以下コマンドを実行するだけで、Ubuntu(ディストリビューションの既定値;2022年12月時点では22.04 LTS
)がインストールされます。
wsl --install
WSL を使用して Windows に Linux をインストールする
再起動を促された場合は、指示に従って再起動してください。 サインインすると初回起動が始まります。
このコマンドは、
します。
前者「実行環境を整える」には管理者権限が必要ですが、後者のディストリビューションのインストールに管理者権限は不要です。
前者のみを実行するコマンドは無いようですので、インストールされるディストリビューションが不要な場合はインストール後に削除するか、手動で実行環境を整えてください。
また、WSL
がすでにインストールされている場合、上記コマンドはヘルプメッセージを表示して終了します。
次節以降を参照して、ディストリビューションを指定したオンラインインストール、もしくは、Microsoft Storeからインストールしてください。
普段、管理者権限を持たない一般ユーザーとしてサインインしている方は、管理者としてサインインしてコマンド実行することをお勧めします。
一般ユーザーとしてサインインして、管理者権限のWidows PowerShell(もしくはコマンドプロンプト)から上記コマンドを入力した場合は、Ubuntu
は管理者アカウントにインストールされますのでご注意ください。
また、WSL環境を整えてからしばらく使っていなかった場合は、次のコマンドでアップデートすることをお勧めします。(Windowsの管理者権限が必要です)
wsl --update
なお、管理者がディストリビューションをインストールすると、WSL2になるようです。 管理者として実行基盤を整え、一般ユーザーがディストリビューションをインストールした場合は、WSL1が既定値です。 一般ユーザーも既定値をWSL2にするためには、以下コマンドを実行します。
wsl --set-default-version 2
導入後のWSL1 <-> WSL2の相互変換は、付録Cを参照してください。
wsl --install
コマンドでインストール(オンラインインストール)できるのはUbuntu
だけではありません。
以下のコマンドで、オンラインインストール可能なディストリビューション一覧が表示されます。
PS C:\Users\matelier> wsl -l --online
The following is a list of valid distributions that can be installed.
Install using 'wsl --install -d <Distro>'.
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.5 openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed openSUSE Tumbleweed
PS C:\Users\matelier>
例えばUbuntu 24.04LTS
をオンラインインストールするためには下記コマンドを実行します。
wsl --install -d Ubuntu-24.04
オンラインインストールできないけれども、Microsoft Storeから提供されているディストリビューションもあります。
例えば、Microsoft Storeにて、wsl
で検索してください。
ディストリビューションを選び、表示される画面で入手
もしくはインストール
をクリックするとインストールされます。
インストール後、開く
をクリックすると初回起動が始まります。
インストールに成功すると、Linuxの世界が始まります。 初回起動時に、ユーザー名とパスワードを設定します。 ユーザー名は、Windowsのユーザー名とは関係なく設定できます。 同じでも良いですが、全角文字の使用はお勧めしません。 パスワードにも全角文字を使用しないでください。
Enter new UNIX username:
New password:
Retype new password:
次回以降起動の際は、スタートメニューにUbuntu
などの項目が現れるので、それを選択してください(メニュー項目の詳細はインストールしたディストリビューションに依存します)。
たくさんのメモリを搭載したPCでWSLを動かすこともあるでしょう。 大規模な計算では、多くのメモリを必要とすることがあります。 ところが既定値では、WSLが利用できるメモリ量は、PCに搭載されているメモリ量の半分に制限されるようです。
メモリ量は、WSL環境にて以下のコマンドで確認します。
$ free
total used free shared buff/cache available
Mem: 4014156 410952 3277884 2980 325320 3384068
Swap: 1048576 0 1048576
上記例では、WSLで約4GB
のメモリが利用可能です。
WSLが利用できるメモリ量を変更するためには、設定ファイル
C:\Users\[ユーザー名]\.wslconfig
に、以下の記述を追加します。
(ファイルが存在しない場合は、新規作成してください。)
[wsl2]
memory=8GB
(設定を直ちに反映させるためには、wsl --shutdown
コマンドを実行します。)
例えば64GB搭載したPCでは、50GB程度をWSLに割り当てても良いのではないでしょうか。
ただし、メモリの大部分をWSLが使用すると、Windowsの動作に支障が出る恐れがあります。 WSLが利用するメモリ量を拡大する場合は注意してください。
以下の三つのコマンドを実行して、必要なソフトウェア(ライブラリ)を導入します。 コマンド実行時にパスワード入力を求められたら、初回起動時に設定したパスワードを入力します。
sudo apt update
sudo apt upgrade -y
sudo apt install -y make gnuplot-x11 gfortran libopenmpi-dev libfftw3-dev liblapack-dev libopenblas-dev evince
各コマンドは、ネットワーク環境が良いところで実行してください。 ただし、セキュリティに厳しい組織内で実行すると、ファイヤーウォールで通信が遮断される場合があるそうです。
ここでインストールされるLAPACK, BLASはスレッド並列化されています。
スレッド並列は効果的でない場合が多いので、下記コマンドで無効化すること(.bashrc
に書き込むこと)をお勧めします。
export OMP_NUM_THREADS=1
Linux上での作業には、テキストエディタを使用します。
標準でvim
やnano
はインストールされています。
Emacs
やgedit
を使いたい人は、追加インストールしてください。
sudo apt install -y emacs
sudo apt install -y gedit
グラフィック表示を確認します。
gnuplot
gnuplot> plot sin(x)
sin関数が表示されれば、正常に動作しています。
WSLは、Windowsとは別の計算機であるかのように振る舞いますが、ファイルを共有するための仕組みが用意されています。
WindowsのCドライブは、WSLの/mnt/c
にマウントされます。
例えばWindowsのデスクトップに配置されたファイルは、Cドライブ以下Users\[ユーザー名]\Desktop\
にあります。
これはWSLからは、/mnt/c/Users/[ユーザー名]/Desktop/
に見えます。
WSLのホームディレクトリにWindowsデスクトップへのリンクを作成すると、デスクトップを介してのファイル共有に便利です。
cd
ln -s /mnt/c/Users/[ユーザー名]/Desktop
ls Desktop
[ユーザー名]
は、Windowsのユーザー名です。
WSLから、Windowsのコマンド(*.exe)を実行できます。
Windowsのエクスプローラーを実行するコマンドは、explorer.exe
です。
同コマンドの引数にディレクトリを与えることができます。
WSLのカレントディレクトリを、Windowsのエクスプローラーで開くコマンドは
explorer.exe .
です。
Windowsのエクスプローラーのナビゲーションウィンドウ内のLinux
から、WSLのファイルシステムにアクセスできます。
ディストリビューション名のネットワークドライブアイコン(下図Ubuntu
)が、WSLのルートディレクトリに相当します。
もしくは、エクスプローラーを起動してアドレスバーにLinux
(もしくは\\WSL$
)と入力して表示されるUbuntu
なども、WSLのルートディレクトリです。
ホームディレクトリ以外のファイルをうかつに操作するとWSL環境を破壊しかねませんので、ご注意ください。
Windows11から、 Windowsターミナルが標準添付されています。 WSL、Windows PowerShell、コマンドプロンプトのいずれもが、Windowsターミナルで動作します。 Windows10でも、Microsoft Storeから追加インストールして利用できます。
MobaXtermは、端末ソフトウェアとして利用できるのはもちろんのこと、Xサーバーやファイル転送GUIなど豊富な機能を備えており、とても便利です。 有償版(Professional Edition)がありますが、無償枠(Home Edition)でも十分に実用的です。 WSLのみを利用する場合も役立ちますので、ご利用をお勧めします。
PHASE/0のソースコードをダウンロード(登録が必要です)し、phase0_2024.01.tar.gz
をWindowsのデスクトップに配置します。
Ubuntuを起動し、ホームディレクトリにこれらのファイルをコピーします。
cp /mnt/c/Users/[ユーザー名]/Desktop/phase0_2024.01.tar.gz ~
ファイルを伸長します。
cd
tar xf phase0_2024.01.tar.gz
cd phase0_2024.01
Ubuntu 24.04LTS
を使っている場合は、付属するMakefile.Linux_generic
でコンパイルする際にオプションを追加してください。
cd src_phase
F90="mpifort -fallow-argument-mismatch" make -f Makefile.Linux_generic install
講習会で利用されることも多い、仕事関数解析プログラムworkfunc
を併せてコンパイルします。
cd ../src_workfunc
F90="gfortran -fallow-argument-mismatch" make install
実行形式ファイルphase
, ekcal
, epsmain
とworkfunc
は、phase0_2024.01/bin/
ディレクトリにあります。
続けて、付属サンプルsamples/basic/Si8
で動作を検証します。
cd ../samples/basic/Si8
まず、1コアだけ利用して計算します(非並列)。
../../../bin/phase
ファイルjobstatus000
(二回目以降の実行では001, 002, …)に経過時間が出力されます。
status = FINISHED
iteration = 15
iter_ionic = 1
iter_elec = 15
elapsed_time = 201.3720
5行目が経過時間(単位:秒)です。
次に並列計算をテストします。-n 2
で2並列で実行することを指示します。WSL1では並列実行時にWarningが出力されますが、計算結果に悪影響はありません。
mpiexec -n 2 ../../../bin/phase
実行時間が概ね半分になっていれば(半分より少し多くて)正常です。物理コア数以上の並列は実行時間の短縮になりません。
VESTAは、主に固体物理分野において原子配列の表示などに用いられる著名なソフトウェアです。
普通のWindowsアプリケーションです。 64bit版の利用をお勧めします。
ダウンロードしたZIPファイルを展開します。
WSLgのおかげて、そのまま使えます。
VESTA-gtk3.tar.bz2
をダウンロードします。
追加ソフトウェアが必要です。
sudo apt install -y bzip2 libglu1-mesa
ダウンロードしたファイルを展開(伸長)して、実行形式ファイルを実行します。
tar xz VESTA-gtk3.tar.bz2
./VESTA-gtk3/VESTA
Xサーバー無しでも動作しますが、(特に、低スペックのPCで)Xサーバーに表示を任せた方が動作が軽快に感じられることがありました。 Windows版は、さらに軽快に動作するように感じます。 WSLgの今後の改良に期待します。
上記実行サンプルでは電荷密度分布が出力されていますので、それを描画します。
VESTA(Windows版の利用を推奨)を起動して、上部メニューからFiles
- Open...
を選択します。
表示されるエクスプローラーのナビゲーションウィンドウ(左側のフォルダ階層表示)のLinux
を起点に、次のようにフォルダを選択していきます。
Linux > Ubuntu > home > [ユーザー名] > phase0_2021.02 > samples > basic > Si8
選択可能なファイルとしてnfchr.cube
ファイルが表示されますので、これを選択するとVESTAで描画されます。
この意味にご興味ある方は、PHASE利用講習会や材料シミュレーションもくもく会に参加してください。
コンパイラ(C, Fortran)、MPI(並列計算ライブラリ)、FFTW3(高速フーリエ変換ライブラリ)を用意すると何とかなる場合が多いです。 その他 Python3, gnuplot, Emacsなどお好みで追加してください。
wsl
で検索してください。Mac (Apple Silicon) へのインストール手順を参照してください。
XQuartzは、Macで動作する代表的なXサーバーです。インストールしてください。
Macのターミナルは、UNIX的に利用できます。仮想計算機ではありませんので、DISPLAY
環境変数を意識する必要はありません。
使わなくなったWindows PCがあれば、Linuxを実機にインストールして利用できます。 Ubuntuはデスクトップ環境での利用を指向したディストリビューションですが、長期サポート(long-term support; LTS)が提供されていることが魅力です。
apt
コマンドの引数など、WSLと同じように利用できます。
PCクラスターなど常時稼働している科学技術計算用の実機には、Red Hat Enterprise Linux(以下RHELと記す)もしくはその互換OSが利用されることが多いです。 具体的にはCentOSがその筆頭でしたが、CentOS 8は2021年末に、CentOS 7は2024年6月にそれぞれEOLを迎えました。 Rocky LinuxとAlmaLinuxは2022年以降も引き続き利用可能なRHEL互換OSの有力候補です。
RHEL互換OSでは、dnf
コマンドでソフトウェア(ライブラリ)を導入します。
sudo dnf install -y gcc-gfortran openmpi-devel fftw-static perl gnuplot make patch
OpenMPI関連のコマンドは/usr/lib64/openmpi/bin
以下にインストールされます。
環境変数PATH
を設定してください。
export PATH=/usr/lib64/openmpi/bin:$PATH
Xサーバーは自動的にインストールされ、Xサーバーとクライアントが正真正銘の同一計算機で動作しますのでDISPLAY
環境変数の設定は不要です。
(まとめ)WSLが利用可能になってさえいれば、その他の項目は管理者権限不要の代替手段があります。
wsl --update
コマンド実行Program Files
以下にインストールする場合)次のコマンドで、ディストリビューション名とそのバージョンを調べます。
> wsl -l -v
実行結果は以下のようになります。
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
ディストリビューションUbuntu-20.04
をWSL1に変換するには、以下のコマンドを実行します。
> wsl --set-version Ubuntu-20.04 1
ディストリビューションUbuntu-20.04
をWSL2に変換するには、以下のコマンドを実行します。
> wsl --set-version Ubuntu-20.04 2
Windows向けの代表的なXサーバーソフトウェアを示します。
VcXsrvは、Windows用のXサーバーソフトウェアです。 インストールには管理者権限が必要です。
一方MobaXtermは、Xサーバー付き(他にも盛沢山)の端末ソフトウェアです。 WSLで材料シミュレーションを実行する目的にはオーバースペックですが、第一原理計算を本格活用すると手元のパソコンだけでは計算資源が不足し、他の(大規模な)計算機を利用するようになります。 他の計算機にアクセスする際には、MobaXtermのような端末ソフトウェアが便利です。 MobaXtermには、「インストーラー版」と「ポータブル版」があります。
Windowsの作法に則ってインストールします。Windowsの管理者権限が必要です。
ZIPファイルをダウンロードし、展開したものをお好きなディレクトリに配置してください。exeファイルをダブルクリックして実行します。
WSL環境からグラフィックスをWindowsの画面に表示するための設定です。
Xサーバー(VcXsrvもしくはMobaXterm;これらはWindowsのアプリケーションです)を起動してください。
Xサーバー(VcXsrvもしくはMobaXterm)とXクライアント(WSLで動作するUbuntu)を単一のWindows PCで動作させる場合でも、WSLは仮想計算機として、Windowsとは別の計算機であるかのように振る舞います。
また、大規模な計算機を利用する場合も、その計算機(Xクライアント;PCクラスター、スパコンなど)で描画コマンドを発行し、ネットワークを介して、手元のPC(WindowsのXサーバー)で表示させる使い方が一般的です。
その際、Xクライアントに、Xサーバーの画面が(ネットワーク上の)どこにあるのか指示するために、DISPLAY
環境変数を設定します。
export DISPLAY=localhost:0
WSLから見たlocalhost
は、WSL自身です。
一方、XサーバーはWindows PCで動作しているので、辻褄があっていないように感じられますが、これで動作します。
export DISPLAY=`hostname`.mshome.net:0
(参考)Qiita: WSL2 での DISPLAY 設定
hostnameの部分は、コマンド実行結果に置き換えられます。