Set up ITO-A@kyushu-u supercomputer
はじめに
九州大学スーパーコンピュータITO-Aのセットアップの備忘録です.Python環境構築に関して,以前の記事ではpyenvを用いましたが,今回は conda を使用します.
ホストへのログイン
Windows用の端末エミュレータとして MobaXterm が推奨されています.X Windowの画面表示ができるので, Jupyter Notebook 等のGUIを利用するソフトウエアも利用できるようになります.インストール方法はこちらです.
パーミッションの変更
指導教員やグループメンバーに見てもらって助言が得られるよう,パーミッションを変更しておきましょう.
$ chmod -R 750 /home/usr_num/account
/home/usr_num/account は自身のホームディレクトリで pwd で確認できます.
$ cd ~
$ pwd
3桁の数字の1番目はユーザー,2番目はグループ,3番目はその他,へのパーミッション(アクセス許可状態)で,数値の意味は以下の通りです.
0=none 1=execute 2=write 4=read 5=read/execute 6=read/write 7=read/write/execute
なお,770にしてはいけません.グループユーザがファイルを変更できるようになり,危険です.さらに,~/.ssh/ のパーミッションの問題でloginができなくなるようです.
Matlabの利用
ITO-Aのコマンドライン環境(CUI)またはX Window経由のグラフィックス環境(GUI)でMatlabが利用できます.詳細はこちらを参照ください.
Intelコンパイラを用いたバッチ処理
計算は主にbash scriptを用意し,バッチ処理で行います.詳細はこちらを参照ください.また,インテルコンパイラのマニュアルはこちらを参照ください. 以下にbash scriptの例を示します.#PJM -L rscgrp=ito-ss-dbg の部分はリソースグループ名で,詳細はこちらを参照ください.
- rscgrp: リソースグループ.主なものは,1ノード,1時間以内は rscgrp=ito-ss-dbg,4ノード以内,1時間以内は ito-s-dbg,1ノード,96時間以内は ito-ss,4ノード以内,48時間以内は ito-sです.
- vnode: 仮想ノード数
- vnode-core: 仮想ノードあたりのコア数(最大36)を設定
- elapse: 最大経過時間(HH:MM:SS).リソースグループの最大時間を越えない範囲で設定
- OMP_NUM_THREADS: OpenMP並列数(スレッド数)を設定
- NUM_NODES: 物理ノード数を設定(vnodeの値を自動的に設定)
- NUM_CORES: 物理ノードあたりのコア数を設定(vnode-core と同じ値を設定)
- NUM_PROCS: 起動するMPIプロセス数を設定 = NUM_CORES × vnode
- I_MPI_PERHOST: 物理ノードあたりのMPIプロセス数設定
- I_MPI_FABRICS: ノード内及びノード間の通信手段設定
ノード内スレッド並列(メモリ共有)
#!/bin/bash
#PJM -L rscunit=ito-a
#PJM -L rscgrp=ito-ss-dbg
#PJM -L vnode=1
#PJM -L vnode-core=36
#PJM -L elapse=01:00:00
#PJM -j
#PJM -X
module load intel/2018
NUM_CORES=36
export OMP_NUM_THREADS=$NUM_CORES
./a.out
フラットMPI並列
#!/bin/bash
#PJM -L rscunit=ito-a
#PJM -L rscgrp=ito-s-dbg
#PJM -L vnode=4
#PJM -L vnode-core=36
#PJM -L elapse=02:00:00
#PJM -j #PJM -X
module load intel/2018
NUM_NODES=${PJM_VNODES}
NUM_CORES=36
NUM_PROCS=144
export I_MPI_PERHOST=$NUM_CORES
export I_MPI_FABRICS=shm:ofa
export I_MPI_HYDRA_BOOTSTRAP=rsh
export I_MPI_HYDRA_BOOTSTRAP_EXEC=/bin/pjrsh
export I_MPI_HYDRA_HOST_FILE=${PJM_O_NODEINF}
mpiexec.hydra -n $NUM_PROCS ./a.out
Minicondaのインストール
環境をできるだけシンプルに保つため,Anacondaではなく,Miniconda をインストールします.こちらのサイトから最新版のMiniconda3-latest-Linux-x86-64.shを適当なディレクトリにダウンロードします(以下の例では,[~/src/].属性を実行形式に変換した後,以下のようにインストールします.デフォルトのままでよいでしょう.
~/src$ ./Miniconda3-latest-Linux-x86-64.sh
最初に環境を最新の状態にします.
$ conda update conda
$ conda update --all
仮想環境の構築方法はこちらの記事にまとめてあります.
基本パッケージのインストール
基本的なパッケージをインストールしておきます.
$ conda install jupyter notebook pandas matplotlib netcdf4 holoviews geoviews
$ conda install selenium
$ conda install phantomjs
$ pip install holoext
conda list
conda list で,インストールしたパッケージの一覧を取得できます.holoextはHoloviewsを便利にするパッケージです.holoextをバージョンアップする場合は以下のように,一度アンインストールしてからインストールします.
$ pip uninstall holoext
$ pip install holoext
インストール時に以下のようなエラーが現れる場合はpipのバージョンが古いせいかもしれません.
mkl-random 1.0.1 requires cython, which is not installed.
mkl-fft 1.0.4 requires cython, which is not installed.
distributed 1.22.0 requires msgpack, which is not installed.
[/cc] その場合は pip 本体をバージョンアップします.
$ pip install --upgrade pip
PhantomJSのインストール
Holoviewsを動かすにはPhantomJSが必要です.こちらを参考に,インストールを進めます.最初にNVMをインストールします.
$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash
$ source .bashrc
$ command -v nvm nvm
最後に nvm が現れれば成功です.
次にNodeJSをインストールします.利用可能な NodeJS のバージョンを確認できます.
$ nvm ls-remote
最新版をインストールします.
$ nvm install node
インストールされた NodeJS のバージョンを確認します.
$ nvm list
-> v10.8.0 default -> node (-> v10.8.0) node -> stable (-> v10.8.0) (default) stable -> 10.8 (-> v10.8.0) (default) iojs -> N/A (default) lts/* -> lts/carbon (-> N/A) lts/argon -> v4.9.1 (-> N/A) lts/boron -> v6.14.3 (-> N/A) lts/carbon -> v8.11.3 (-> N/A)
または node コマンドで確認できます.
$ node -v
v10.8.0
こちらを参考にして PhantomJS をインストールします.
$ npm install --save phantom phantomjs-prebuilt tough-cookie uuid