九州大学スーパーコンピュータITO-Aのセットアップの備忘録です.Python環境構築に関して,以前の記事ではpyenvを用いましたが,今回はcondaを使用します.

ホストへのログイン

Windows用の端末エミュレータとしてMobaXtermが推奨されています.X Windowの画面表示ができるので,Jupyter Notebook等のGUIを利用するソフトウエアも利用できるようになります.インストール方法はこちらです.

パーミッションの変更

指導教員やグループメンバーに見てもらって助言が得られるよう,パーミッションを変更しておきましょう.

$ chmod -R 750 /home/usr_num/account

3桁の数字の1番目はユーザー,2番目はグループ,3番目はその他,へのパーミッション(アクセス許可状態)で,数値の意味は以下の通りです. follows:

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 listcondaでインストールしたパッケージの一覧を取得できます.holoextHoloviewsを便利にするパッケージです.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.

その場合は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