• ライフサイエンス分野の研究をIT技術で支援します

    AWSで借りたCentOS7のサーバーにTorqueとOpenMPIを使えるように設定した。

    実行環境: CentOS7.7+ AWS(インスタンスはm5a.xlarge)
    CentOS7のPCをAWSで借りる方法についてはクラウドpcにvnc接続を参照。

    Torqueの設定方法

    株式会社フィアラックスが次のページで提供しているスクリプトファイルを参考に、現在の環境で動く手順を確認した。
    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ノードの構成を想定。

    OpenMPIの設定手順

    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

    memo:

    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を自動認識してくれる。