AWSで借りたCentOS7のサーバーにTorqueとOpenMPIを使えるように設定した。
実行環境: CentOS7.7+ AWS(インスタンスはm5a.xlarge)
CentOS7のPCをAWSで借りる方法についてはクラウドpcにvnc接続を参照。
株式会社フィアラックスが次のページで提供しているスクリプトファイルを参考に、現在の環境で動く手順を確認した。
https://www.fiatlux.co.jp/faq/build/html/MFmyPresto_Other_Torque.html
上記ページで提供されているスクリプトを実行してみたが、今回の環境では、エラーが発生してうまくインストールできなかったので、うまくインストールできる方法を調査した。おそらく、CentOS7.2では問題なく動いていたと思われるが、AWS+CentOS7.7の環境ではうまく動かなかった。
今回、動かなかった原因としては、
CentOSのバージョン違い(7.2と7.7)、環境の違い(今回はAWSを使用しているため、ホスト名とIPアドレスの参照方法等で違いがあるかもしれない。)、Torqueのバージョンの違い等が考えられる。
(準備)クラウドで借りたばかりのPCでは、まず次のコマンドを実行する。
sudo yum -y update
以下、torqueの環境設定手順。
rootユーザーで実行するか、各行のコマンドの前にsudoをつけて実行する。
yum install -y epel-release
yum install -y torque-client torque-mom torque-server torque-scheduler
create-munge-key
pbs_server -t create -f -D &
pbs_server_pid=$!
少し待つ
kill $pbs_server_pid
少し待つ
echo "$HOSTNAME np=$(nproc) num_node_boards=1 numa_board_str=$(nproc)" > /var/lib/torque/server_priv/nodes
次の2行を追加(*重要*)
echo '$pbsserver '$HOSTNAME > /etc/torque/mom/config
echo $HOSTNAME > /etc/torque/server_name
systemctl start munge
systemctl start trqauthd
systemctl start pbs_server
systemctl start pbs_sched
systemctl start pbs_mom
systemctl enable munge trqauthd pbs_server pbs_sched pbs_mom
少し待つ
qmgr -c "create queue batch queue_type=execution"
qmgr -c "set queue batch started=true"
qmgr -c "set queue batch enabled=true"
qmgr -c "set queue batch resources_default.nodes=1"
qmgr -c "set queue batch resources_default.walltime=3600"
qmgr -c "set server default_queue=batch"
qmgr -c "set server scheduling=true"
次のコマンドでstate = freeと表示されていればOK.
pbsnodes -a
/var/lib/torque/server_priv/nodesは、システム構成によって変更するファイル。つまり、対象のサーバーを登録するためのファイル。上記のものは1ノードの構成を想定。
cd ~ # ホームディレクトリに移動(他の場所でも良い)
sudo yum -y install wget
sudo yum -y install gcc-gfortran gcc-c++
sudo yum -y install perl
sudo yum -y install torque-devel
wget https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.2.tar.gz
tar xzvf openmpi-4.0.2.tar.gz
cd openmpi-4.0.2
mkdir build
cd build
../configure --prefix=/usr/local/openmpi-4.0.2 CC=gcc CXX=g++ FC=gfortran
make # make -j N とした方が早い(Nはコア数+1にするといいらしい)。
sudo make install
.bashrcに以下を追記
MPIROOT=/usr/local/openmpi-4.0.2
export PATH=$MPIROOT/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPIROOT/lib
export MANPATH=$MANPATH:$MPIROOT/share/man
追記後に次のコマンドを実行して環境変数を反映させる。(bashの場合)
source ./bashrc
AWSで論理コア数4のPCを借りたが、mpirun -n 4 (prog)でエラーが発生した。mpirun -n 2 (prog)だとエラーは発生しなかった。torqueからmpirun -n 4 (prog)を実行する場合もエラーは発生しない。
mpirun --use-hwthread-cpus -n 4とすると、エラーは出なくなる。
OpenMPIのインストールにおいては、configure実行前にtorque-develをインストールしておくと、torqueを自動認識してくれる。