LoginSignup
0
0

More than 3 years have passed since last update.

TorqueをCentOS 6にインストールするメモ

Last updated at Posted at 2020-08-10

検証環境 & 想定環境

Host Computer
* OS: Win 10
* CPU: i5 4550
* VirtualHost: Oracle VM VirtualBox
Remote
* OS: CentOS 6.10 (Final)

想定環境(検証環境はあくまで練習)
最終的にはXeonを使ったシングルノードのマルチプロセス環境の構築を想定しています。
Torqueを使う以上、マルチクラスタをしたいものですが、LDAPを保守できる環境にないので、必然的にノードは一つが前提になります。
XeonなのでIntel Studioを使った環境も想定されますが、これはOpenMPIのコンパイル時にoptionをしっかり指定すればいいだけなので、詳細は省きます。

Torque について

Torqueはjob managerと呼ばれるソフトウェアの一つで、マルチクラスタ計算を行うときにハードウェアリソースを管理し適切にプロセスを割り当てる管理ソフトです。
ほかにもいくつか種類がありますが、OSSで簡単に導入できるので人気なjob managerです。これ以上の詳細は省きます。

依存ライブラリのインストール

大学内などで(筆者環境)proxy下にある環境の場合、proxyの設定をyum,wget,curlなどに忘れず行ってください。また、CentOS6.4などの古いOSでは、そもそもyumのリポジトリが切れている可能性があるのでyumのリポジトリの再設定などをしてから行ってください。

#yum install epel-release
# yum update
# yum upgrade
# yum install openssl-devel libtool libxml2-devel boost-devel gcc gcc-c++
# yum install git

ここで、参考サイト[1](公式docs)[2]では、libtool-develと書かれていますが、centos6.10のyumリポジトリにはないです。libtoolでいいみたいなので変更。

NUMActlとhwlocのインストール

Hardware Locality(hwloc)は複雑怪奇なCPUの環境(とくにXeonのような環境)をMPIなどのマルチプロセスアプリケーションに統一された表現で情報を与えるためのツール[3]。Torqueもhwlocからハードウェアリソースの情報を得るので先にインストールする必要があります。
hwlocのバージョンはこの後インストールするTorque5系に合わせてhwloc1系をインストールします。
筆者環境は、マルチクラスタを想定していないけれども、単体のマシンはつよつよなので、NUMAを使用してもう少し効率向上を図ります[4]参照。

# yum install numactl-devel
# wget https://download.open-mpi.org/release/hwloc/v1.11/hwloc-1.11.13.tar.gz
# tar xzvf hwloc-1.11.13.tar.gz
# cd hwloc-1.11.13
# mkdir build
# cd build
# ../configure --prefix=/usr/local
# make
# make install

Torqueのインストール(サーバのみ)

というわけで、本題のTorqueのインストール。tar.gzファイルが見つからなかったため、gitよりdownload。

# git clone https://github.com/adaptivecomputing/torque.git -b 5.1.3 torque-5.1.3
# cd torque-5.1.3
# ./autogen.sh
# ./configure
# mkdir ./build
# cd build

ここで、このあと./configureを実行するわけですが、一度./configure --helpを実行してoptionを確認しましょう。環境によっておそらくoptionは大きく変わります。
例えば、マルチクラスタを行う場合では、マスターは--disable-clientsを付けたり逆にクライアントは--diable-serverを付ける必要があるでしょう(クライアント(=ノード)は後述)。
いまの想定環境は大体defaultでいいですが、参考にする人は、注意してください。
また、出力を確認して指定したものが入っているかも確認しましょう。例えば下記の./configure <optioin> > logのように保存し、log | grep NUMAlog | grep hwlocのように確認できます。

# ../configure --enable-numa-support --with-hwloc-path=/usr/local/
# make
# make install

trqauthdデーモンのセットアップ

ここまででインストールは終了しました。セットアップを行います。

まずは、システム(OS)に認識してもらいます。

# cp contrib/init.d/trqauthd /etc/init.d/
# chkconfig --add trqauthd
# echo /usr/local/lib > /etc/ld.so.conf.d/torque.conf
# ldconfig
# service trqauthd start

名前解決とポートの解放

ここからはTorqueの設定になります。
設定の方法はあまたあると思うので、一例と思って自分でしっかり調べてください。
まずは、各ノードにipアドレスではなく名前を振る(名前を解決する)必要があります。今回は、/etc/hostsファイルを使います。が、localhostはすでにlocalhost.localdomainで名前解決しているのでスルーします。マルチクラスタでは、hostsはDNSといった手法で名前解決の手法を用意してください。

# cat /etc/hosts
127.0.0.1    localhost.localdomain localhost
::1          localhost6.localdomain localhost6

続いてポートも開けます。(多分共通)

# iptables-save > /tmp/iptables.mod
# vi /tmp/iptables.mod

[追記:変更] 
# "-A INPUT -j REJECT --reject-with icmp-host-prohibited"

-A INPUT -p tcp --dport 15001 -j ACCEPT

-A INPUT -p tcp --dport 15002 -j ACCEPT
-A INPUT -p tcp --dport 15003 -j ACCEPT

# iptables-restore < /tmp/iptables.mod
# service iptables save

torqueのサーバの設定

torqueにserverを指定します。(サーバのみ)

# echo localhost.localdomain > /var/spool/torque/server_name

serverを立ち上げます。初回一回、サーバのみ。qtermしてからやり直すことができますが、やり直すとあとの設定ファイルが全部飛びます。

# ../torque.setup root

nodesファイルの設定(サーバのみ)

計算に用いるノードの設定を行います。今回はnodeが一つなので非常に簡単です。詳しくは[5]を見ましょう。
ただし、前述の通りNUMAを使用してセットアップするので、[4,7]を参照してセットアップします。

# vi /var/spool/torque/server_priv/nodes
locahost.localdomain np=1 num_node_boards=1

pbs_serverの設定

つぎに、pbs_serverというサーバデーモンを起動します(trqauthdとの違いがわからん)。

# cp contrib / init.d / pbs_server /etc/init.d 
# chkconfig --add pbs_server 
# service pbs_server restart

Torqueのノードの設定

Torqueで管理・利用されるノードへのインストールは、ここまでbuildした環境と同一であれば個別buildや./configureを行う必要はなく、build内に、client用のインストローラーを生成できます[6]。

# make packages

今回の想定環境はシングルノードでserverとclientが同一なので、これ以上話しませんが、マルチクラスタの場合は、LDAPとか使ってuidを統一化したり、nfsを使って共通ディレクトリを提供したり、sshのキーを配ったりしたうえで、[6]を参考にnode用のソフトをインストールしてください。

mom.layout

NUMAを使う場合、ノードのCPU構成をmom.layouに設定する必要があります。[7]を参考にしてください。

# vi /var/spool/torque/mom_prov/mom.layout
nodes=0

configファイルの設定

ノード側の設定でserverを指定します

# vi /var/spool/torque/mom_priv/config
$pbsserver localhost.localdomain
$logevent 225 

torque-momのセットアップ

# cp contrib/init.d/pbs_mom /etc/init.d
# chkconfig --add pbs_mom
# service pbs_mom start

OpenMPIのインストール

Torqueを使う主な目的はマルチクラスタ計算であり、これを行うためにはMPIを使うことになります。OpenMPIではTorqueと連携することができます。OpenMPIはyumでインストールすることができますが、これではTorqueと連携できません(と思ってます)。なので、ソースコードを落としてコンパイルする必要があります[8]。
OpenMPIのソースコードをダウンロードします。バージョンはyumでインストールできる最新バージョンと同じOpenMPI-1.10を使います。

# cd
# wget https://download.open-mpi.org/release/open-mpi/v1.10/openmpi-1.10.7.tar.gz
# tar xzvf openmpi-1.10.7.tar.gz
# cd openmpi-1.10.7
# mkdir build
# cd build
# ../configure --with-hwloc=/usr/local --with-tm
# make 
# make install

インストールが終わったらパスを通します。この時、既存のopenmpiを使っている場合、/usr/localにインストール(default)すると競合して問題を起こす場合があります。この例では、そんなことは気にせずパスを通しますが、必要に応じてインストールディレクトリを変えて、Torqueを使うユーザだけ、.bashrcなどにPATHとLD_LIBRARY_PATHを設定するようにしましょう

# echo /usr/local/lib/openmpi > etc/ld.so.conf/openmpi.conf
# ldconfig

参考サイト

  1. http://docs.adaptivecomputing.com/torque/5-0-3/Content/topics/hpcSuiteInstall/manual/1-installing/installingTorque.htm
  2. https://qiita.com/Yasushi-Shinohara/items/bd1218c79724f042d878
  3. https://www.open-mpi.org/projects/hwloc/doc/v2.0.2/
  4. http://docs.adaptivecomputing.com/torque/4-1-4/Content/topics/1-installConfig/buildingWithNUMA.htm
  5. http://docs.adaptivecomputing.com/8-1-3/basic/installGuide/Content/topics/torque/1-installConfig/specifyComputeNodes.htm
  6. http://docs.adaptivecomputing.com/8-1-3/basic/installGuide/Content/topics/torque/1-installConfig/computeNodes.htm
  7. https://qiita.com/Baruim/items/a3a839fd71545d4cd109
  8. https://www.jstage.jst.go.jp/article/mssj/17/4/17_209/_pdf
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0