万人のためのハイパフォーマンスコンピューティング

HPC Do It Yourself Club

      HOMEE5-2600v3製品情報お役立ち情報購入案内お問い合わせ会社案内
      ムービーダウンロードドキュメント最新トピックスおもしろLinkHPCノウハウ

クラスターインストールUSB   

 クラスターインストールUSB
  HPCDYICにご入会 頂くと、会員サイトからダウンロードして作ることができます。
  また、クラスターDIYセミナーにご参加頂ければ、お土産で差し上げます。

  クラスターインストールUSB解説書 (2012年3月19日バージョン)
  目次
  文字列の説明
  クラスターインストールUSBでできること
  どういうクラスターができるか
  クラスターインストールUSBを入手するには
  クラスターのインストール
  今回のクラスター構成
  クラスター構成を定義するcluster.mapファイル
  マスターノードをクラスターインストールUSBでBootする
  マスターノードにOSと設定情報をインストールする
  スレーブノードをCIUSBでBootしOSと設定情報をインストールする
  クラスターを立ち上げる
  ジョブスケジューラ(Lava)の動作確認
  OpenMPI+Infinibandの動作確認
  ジョブスケジューラでMPIのテストプログラムをsubmitする
  OpenMPIでデータ転送速度のテスト 異なるノード間 GB Ethernet使用
  OpenMPIでデータ転送速度のテスト 異なるノード間 Infiniband使用
  OpenMPIでデータ転送速度のテスト 同一ノード間 GB Ethernet使用
  OpenMPIでデータ転送速度のテスト 同一ノード間 Infiniband使用
  OpenMPIでLatencyのテスト 異なるノード間 GB Ethernet使用
  OpenMPIでLatencyのテスト 異なるノード間 Infiniband使用
  OpenMPIでLatencyのテスト 同一ノード間 GB Ethernet使用
  OpenMPIでLatencyのテスト 同一ノード間 Infiniband使用
  クラスターにノードを追加する
  クラスターの設定情報を変更する
  別のコンピュータ用のHDDに、OSと設定情報ををインストールする
  bsubコマンドでMPIジョブをsubmitするには
  クラスター内ノードでの各ユーザーの情報共有
  /etc/skel新規ユーザーのデフォルト設定置き場
  /homeと/optを別のHDDにするには
  マスター上のディレクトリをNFSでスレーブにautomountするには
  USBからブートするようにBIOSを設定するには


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

文字列の説明
 文字列 意味
 CIUSB   クラスターインストールUSB
 ノード  クラスターを構成する個々のコンピュータ
 [DEL]  (キーボード上の)Deleteキーを押すこと
 [Enter] (キーボード上の)Enterキーを押すこと
 [TAB]  (キーボード上の)TABキーを押すこと
 MAP    各ノードが持っているクラスター全体の情報
 HDD    ハードディスクドライブ

クラスターインストールUSBでできること
新規クラスターのインストール
(クラスターインストールUSBでインストールした)クラスターにノードを追加
(クラスターインストールUSBでインストールした)クラスターの設定変更

どういうクラスターができるか
マスターノードが1台、スレーブノードが複数台(1台でも可能)のクラスターができます。
マスターノードは、NFS、NIS、Lavaのサーバーになります。
NFSでマスターノードの/homeが、スレーブノードにautomountされます。
MPIはOpenMPIがインストールされます。
ユーザーhpcにbsubmpi.shというテストスクリプトがあります。
それを使えば、LavaでMPIのテストプログラムをsubmitする事ができます。
MPIでInfinibandを使うテストも含まれています。その実行結果の例は、このドキュメントに取り込んであります。
下図はスレーブノード1台の構成例です。ネットワークはスイッチ無しでP2Pで接続する図になっています。
スレーブノードが増えた場合は、スイッチを入れて接続します。

image016.png


クラスターインストールUSBを入手するには
HPCDYICに入会すれば、会員サイトからダウンロードして作ることができます(2012年3月19日現在準備中)。
クラスターDIYセミナーに参加すれば、おみやげでもらえます。
image004.png


クラスターのインストール
今回のクラスター構成
今回は、1Uのサーバー2台でクラスターを構成します。
image006.png


サーバーはSupermicro SuperServer SYS-6017R-N3Fを使いました。
マザーボードはSupermicro X9DRW-IFです。

image008.png

CPU情報です。
image010.png

メモリー情報です。
image012.png


ネットワークは、GB EthernetとInfinibandです。
image014.png


サーバー兼計算ノードをマスター、計算専用ノードをスレーブと呼びます。
1つのクラスターに、マスターは1台だけ、スレーブは1台以上あります。
最小のクラスターは、マスター1台、スレーブ1台の2台構成です。
構成は以下のような感じです。
image016.png

クラスター構成を定義するcluster.mapファイル

クラスターを構成するためには、各ノードの、IPアドレス、hostname、そしてコア数、の3つの情報が必要です。
これを記述したファイルが、CIUSBの/root/ci下にある
cluster.map
ファイルです。
内容は以下のようになっています。先頭が#の行はコメントです。
image018.png
以降の説明では、コメント行は行に数えません。
この例では、2行のファイルですので、2ノードクラスターの定義になります。
1行目が、マスターの定義になります。
2行目以降は、スレーブの定義になります。
この例では、スレーブは1ノードしかありません。
IPアドレスはこのクラスター内部の通信にしか使われませんので、自由に設定してもかまいません。
ここでは、ローカル用の192.168.*.*にしてあります。
hostnameは任意に指定できます。この例では先頭3文字が同じでその後の数字は通し番号になっています。
これは特に意味はありません。星の名前、人の名前、色名、等、お好みしだいです。
最後のコア数は、各ノードの物理コア数を表します。この例では8コア/CPUが2CPUで16コアになっています。
この例を参考にして、インストールをはじめる前に、クラスター構成に応じて、cluster.mapファイルを書き換えてください。

マスターノードをクラスターインストールUSBでBootする
cluster.mapを修正したら(説明では修正しないで上記のままです)、インストールを始めましょう。
CIUSBをMasterになるノードに挿し込みます。
image020.png
そのノードの電源ボタンを押します。
CIUSBからCentOSがBootします。
image022.png
マスターノードにOSと設定情報をインストールする
CIUSBからOSが立ち上がると、ログイン画面が表示されます。
image024.png
rootでログインします。
image026.png
ciというディレクトリしかありませんが、cd ci[Enter]で、そこに移ります。
image028.png
time ./mkm[TAB]と入力すると、入力補完機能により
time ./mkmaster.shが入力されます。続いて[Enter]。
timeを入れないで、./mkmaster.shだけでマスターのインストールは出来るのですが、
どれだけ時間がかかるのかを知るために、timeを入れて時間を計測します。
質問に答える時間も計測されますので、考えこんでしまうと、その分計測時間が長く表示されます。
image030.png
cluster.mapが読み込まれ、マスターノードのhostnameが
hpc01、IPアドレスが192.168.2.1、ネットワークアドレスが192.168.2.0であることが表示されます。
OSをインストールするかと聞かれますので、yes[Enter]を入力します(noが必要な場合については後述します)。
image032.png
その後画面に色々表示されたり、表示がしばらく止まったりしますが、6分後くらいに、インストールと設定が終わります。
image034.png
shutdownしてCIUSBを抜きます。
image036.png
image038.png

スレーブノードをCIUSBでBootしOSと設定情報をインストールする
スレーブノードにCIUSBを挿し込みBootし、rootでログインし、ciディレクトリに移ります。
time ./mks[TAB]と入力すると、入力補完機能により
time ./mkslave.shが入力されます。続いて[Enter]。
image040.png
cluster.mapが読み込まれ、この場合2行しかありませんので、2行目がスレーブノードの定義とみなされます。
hostnameがhpc02、IPアドレスが192.168.2.2、ネットワークアドレスが192.168.2.0であることが表示されます。
OSをインストールするかと聞かれますので、yes[Enter]を入力します(noが必要な場合については後述します)。
image042.png
その後画面に色々表示されたり、表示がしばらく止まったりしますが、6分後くらいに、インストールと設定が終わります。
image044.png
shutdownしてCIUSBを抜きます。

クラスターを立ち上げる
クラスターの2台のノードの電源ボタンを押します。順序は任意です。
マスターノードの電源投入が極端に遅いと(数分以上後の場合)、スレーブノードのNISが動作しない場合があります。
その場合は、スレーブノードで、rootでログインし、/etc/init.d/ypbind restart[Enter]を入力してください。
または、スレーブノードをrebootしてください。
NFSはautomountですので、電源投入順序に依存する問題は発生しません。
モニターとキーボードは、マスターノードに接続してください。
ログイン画面が表示されます。
ユーザー名hpcでログインします。
image046.png
ジョブスケジューラ(Lava)の動作確認
bhosts[Enter]でLava(ジョブスケジューラ)が動作しているのが確認できます。
image048.png
OpenMPI+Infinibandの動作確認
OpenMPIがInfiniband上で動作しているか確認します。
image050.png
入力要求に答えます。
image052.png
転送速度も問題ありません。
image054.png
ジョブスケジューラでMPIのテストプログラムをsubmitする
画面の解像度を自由に変更したいので、startxコマンドでX Windowを立ち上げます。
image056.png
立ち上がったX Windowを中止して、コマンドラインモードに戻る場合は、
CtrlキーとAltキーとBackspaceキーを同時に押します。
image058.png
Terminalを立ち上げます。
image060.png
bsubmpi.shファイルの内容を確認します。
Lavaのbsubコマンドで、MPIプログラムを8個submitする内容です。
#!/bin/bash
mkdir -p logdir
LATENCYTEST=/usr/lib64/openmpi/bin/mpitests-osu_latency
# Bandwidth test, Different node, Use GB Ethernet
bsub -o logdir/bwtdiffgb.log -n 2 -R "span[ptile=1]" \
"openmpi-mpirun -np 2 ./systest_1.sh"
# Bandwidth test, Same node, Use GB Ethernet
bsub -o logdir/bwtsamegb.log -n 2 -R "span[hosts=1]" \
"openmpi-mpirun -np 2 ./systest_1.sh"
# Bandwidth test, Different node, Use Infiniband
bsub -o logdir/bwtdiffib.log -n 2 -R "span[ptile=1]" \
"openmpi-mpirun -np 2 -mca btl openib,sm,self ./systest_1.sh"
# Bandwidth test, Same node, Use Infiniband
bsub -o logdir/bwtsameib.log -n 2 -R "span[hosts=1]" \
"openmpi-mpirun -np 2 -mca btl openib,sm,self ./systest_1.sh"
# Latency test, Different node, Use GB Ethernet
bsub -o logdir/latdiffgb.log -n 2 -R "span[ptile=1]" \
"openmpi-mpirun -np 2 ${LATENCYTEST}"
# Latency test, Same node, Use GB Ethernet
bsub -o logdir/latsamegb.log -n 2 -R "span[hosts=1]" \
"openmpi-mpirun -np 2 ${LATENCYTEST}"
# Latency test, Different node, Use Infiniband
bsub -o logdir/latdiffib.log -n 2 -R "span[ptile=1]" \
"openmpi-mpirun -np 2 -mca btl openib,sm,self ${LATENCYTEST}"
# Latency test, Same node, Use Infiniband
bsub -o logdir/latsameib.log -n 2 -R "span[hosts=1]" \
"openmpi-mpirun -np 2 -mca btl openib,sm,self ${LATENCYTEST}"
このファイルを実行します。8つのジョブがジョブスケジューラにsubmitされます。
image062.png
ジョブはジョブスケジューラによって、次々に実行されます。
Lavaのbjobsコマンドで、ジョブのステータスを確認します。
image064.png
同一ノード上で実行されているジョブと、異なるノード上で実行されているジョブがあるのがわかります。
bsubコマンドの-Rオプションで、コアの割り当てをそのように指定しているからです。
bsubコマンドでMPIプログラムを実行するための情報はこちらです。
しばらくすると、すべてのジョブが終了します。
image066.png
実行結果は次のとおりです。

OpenMPIでデータ転送速度のテスト 異なるノード間 GB Ethernet使用
Sender: LSF System
Subject: Job 565: Done

Job was submitted from host by user .
Job was executed on host(s) <1*hpc01>, in queue , as user .
<1*hpc02>
was used as the home directory.
was used as the working directory.
Started at Sun Mar 18 10:57:13 2012
Results reported at Sun Mar 18 10:57:23 2012

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
openmpi-mpirun -np 2 ./systest_1.sh
------------------------------------------------------------

Successfully completed.

Resource usage summary:

CPU time : 2.69 sec.

The output (if any) follows:

Process 0 is alive on hpc01
Process 1 is alive on hpc02

Options: 0=quit, 1=Hello, 2=Ring :
Ring test...time network performance
---------

Input maximum message size: len=1 bytes, used= 0.013036 sec., rate=0.015342 Mbytes/sec
len=2 bytes, used= 0.010096 sec., rate=0.039619 Mbytes/sec
len=4 bytes, used= 0.008605 sec., rate=0.092969 Mbytes/sec
len=8 bytes, used= 0.008674 sec., rate=0.184461 Mbytes/sec
len=16 bytes, used= 0.008599 sec., rate=0.372134 Mbytes/sec
len=32 bytes, used= 0.008634 sec., rate=0.741248 Mbytes/sec
len=64 bytes, used= 0.008674 sec., rate=1.475690 Mbytes/sec
len=128 bytes, used= 0.008782 sec., rate=2.915083 Mbytes/sec
len=256 bytes, used= 0.010409 sec., rate=4.918878 Mbytes/sec
len=512 bytes, used= 0.015071 sec., rate=6.794544 Mbytes/sec
len=1024 bytes, used= 0.011002 sec., rate=18.614689 Mbytes/sec
len=2048 bytes, used= 0.046751 sec., rate=8.761306 Mbytes/sec
len=4096 bytes, used= 0.053252 sec., rate=15.383465 Mbytes/sec
len=8192 bytes, used= 0.111202 sec., rate=14.733548 Mbytes/sec
len=16384 bytes, used= 0.115692 sec., rate=28.323504 Mbytes/sec
len=32768 bytes, used= 0.122760 sec., rate=53.385443 Mbytes/sec
len=65536 bytes, used= 0.239416 sec., rate=54.746576 Mbytes/sec
len=131072 bytes, used= 0.293621 sec., rate=89.279699 Mbytes/sec
len=262144 bytes, used= 0.521001 sec., rate=100.630881 Mbytes/sec
len=524288 bytes, used= 0.982967 sec., rate=106.674599 Mbytes/sec
clock resolution in seconds: 0.00000100

Options: 0=quit, 1=Hello, 2=Ring :
OpenMPIでデータ転送速度のテスト 異なるノード間 Infiniband使用
Sender: LSF System
Subject: Job 567: Done

Job was submitted from host by user .
Job was executed on host(s) <1*hpc01>, in queue , as user .
<1*hpc02>
was used as the home directory.
was used as the working directory.
Started at Sun Mar 18 10:57:41 2012
Results reported at Sun Mar 18 10:57:56 2012

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
openmpi-mpirun -np 2 -mca btl openib,sm,self ./systest_1.sh
------------------------------------------------------------

Successfully completed.

Resource usage summary:

CPU time : 0.17 sec.

The output (if any) follows:

Process 0 is alive on hpc01
Process 1 is alive on hpc02

Options: 0=quit, 1=Hello, 2=Ring :
Ring test...time network performance
---------

Input maximum message size: len=1 bytes, used= 0.000789 sec., rate=0.253432 Mbytes/sec
len=2 bytes, used= 0.000304 sec., rate=1.315860 Mbytes/sec
len=4 bytes, used= 0.000313 sec., rate=2.555555 Mbytes/sec
len=8 bytes, used= 0.000329 sec., rate=4.866488 Mbytes/sec
len=16 bytes, used= 0.000316 sec., rate=10.122001 Mbytes/sec
len=32 bytes, used= 0.000324 sec., rate=19.752425 Mbytes/sec
len=64 bytes, used= 0.000344 sec., rate=37.205191 Mbytes/sec
len=128 bytes, used= 0.000495 sec., rate=51.721668 Mbytes/sec
len=256 bytes, used= 0.000534 sec., rate=95.869806 Mbytes/sec
len=512 bytes, used= 0.000586 sec., rate=174.734227 Mbytes/sec
len=1024 bytes, used= 0.000710 sec., rate=288.446427 Mbytes/sec
len=2048 bytes, used= 0.000973 sec., rate=420.972046 Mbytes/sec
len=4096 bytes, used= 0.001267 sec., rate=646.467326 Mbytes/sec
len=8192 bytes, used= 0.001553 sec., rate=1055.112494 Mbytes/sec
len=16384 bytes, used= 0.002127 sec., rate=1540.450050 Mbytes/sec
len=32768 bytes, used= 0.003086 sec., rate=2123.757297 Mbytes/sec
len=65536 bytes, used= 0.005174 sec., rate=2533.320187 Mbytes/sec
len=131072 bytes, used= 0.009450 sec., rate=2773.952690 Mbytes/sec
len=262144 bytes, used= 0.018016 sec., rate=2910.146704 Mbytes/sec
len=524288 bytes, used= 0.035116 sec., rate=2986.038490 Mbytes/sec
clock resolution in seconds: 0.00000100

Options: 0=quit, 1=Hello, 2=Ring :
OpenMPIでデータ転送速度のテスト 同一ノード間 GB Ethernet使用
Sender: LSF System
Subject: Job 566: Done

Job was submitted from host by user .
Job was executed on host(s) <2*hpc01>, in queue , as user .
was used as the home directory.
was used as the working directory.
Started at Sun Mar 18 10:57:26 2012
Results reported at Sun Mar 18 10:57:38 2012

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
openmpi-mpirun -np 2 ./systest_1.sh
------------------------------------------------------------

Successfully completed.

Resource usage summary:

CPU time : 0.18 sec.

The output (if any) follows:

Process 0 is alive on hpc01
Process 1 is alive on hpc01

Options: 0=quit, 1=Hello, 2=Ring :
Ring test...time network performance
---------

Input maximum message size: len=1 bytes, used= 0.000321 sec., rate=0.623225 Mbytes/sec
len=2 bytes, used= 0.000347 sec., rate=1.153073 Mbytes/sec
len=4 bytes, used= 0.000268 sec., rate=2.985270 Mbytes/sec
len=8 bytes, used= 0.000221 sec., rate=7.239360 Mbytes/sec
len=16 bytes, used= 0.000245 sec., rate=13.056199 Mbytes/sec
len=32 bytes, used= 0.000225 sec., rate=28.435959 Mbytes/sec
len=64 bytes, used= 0.000226 sec., rate=56.631953 Mbytes/sec
len=128 bytes, used= 0.000287 sec., rate=89.181215 Mbytes/sec
len=256 bytes, used= 0.000325 sec., rate=157.555660 Mbytes/sec
len=512 bytes, used= 0.000337 sec., rate=303.960884 Mbytes/sec
len=1024 bytes, used= 0.000368 sec., rate=556.703473 Mbytes/sec
len=2048 bytes, used= 0.000472 sec., rate=867.670161 Mbytes/sec
len=4096 bytes, used= 0.000874 sec., rate=937.254184 Mbytes/sec
len=8192 bytes, used= 0.001142 sec., rate=1434.644608 Mbytes/sec
len=16384 bytes, used= 0.001823 sec., rate=1797.527511 Mbytes/sec
len=32768 bytes, used= 0.003082 sec., rate=2126.385913 Mbytes/sec
len=65536 bytes, used= 0.002705 sec., rate=4845.371178 Mbytes/sec
len=131072 bytes, used= 0.004382 sec., rate=5982.434451 Mbytes/sec
len=262144 bytes, used= 0.008564 sec., rate=6122.002382 Mbytes/sec
len=524288 bytes, used= 0.016297 sec., rate=6434.125537 Mbytes/sec
clock resolution in seconds: 0.00000100

Options: 0=quit, 1=Hello, 2=Ring :
OpenMPIでデータ転送速度のテスト 同一ノード間 Infiniband使用
Sender: LSF System
Subject: Job 568: Done

Job was submitted from host by user .
Job was executed on host(s) <2*hpc02>, in queue , as user .
was used as the home directory.
was used as the working directory.
Started at Sun Mar 18 10:57:28 2012
Results reported at Sun Mar 18 10:57:42 2012

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
openmpi-mpirun -np 2 -mca btl openib,sm,self ./systest_1.sh
------------------------------------------------------------

Successfully completed.

Resource usage summary:

CPU time : 0.17 sec.

The output (if any) follows:

Process 0 is alive on hpc02
Process 1 is alive on hpc02

Options: 0=quit, 1=Hello, 2=Ring :
Ring test...time network performance
---------

Input maximum message size: len=1 bytes, used= 0.000188 sec., rate=1.064544 Mbytes/sec
len=2 bytes, used= 0.000217 sec., rate=1.843650 Mbytes/sec
len=4 bytes, used= 0.000170 sec., rate=4.706091 Mbytes/sec
len=8 bytes, used= 0.000164 sec., rate=9.754195 Mbytes/sec
len=16 bytes, used= 0.000172 sec., rate=18.589713 Mbytes/sec
len=32 bytes, used= 0.000173 sec., rate=36.974581 Mbytes/sec
len=64 bytes, used= 0.000192 sec., rate=66.692039 Mbytes/sec
len=128 bytes, used= 0.000215 sec., rate=119.040114 Mbytes/sec
len=256 bytes, used= 0.000209 sec., rate=244.867007 Mbytes/sec
len=512 bytes, used= 0.000233 sec., rate=439.158210 Mbytes/sec
len=1024 bytes, used= 0.000285 sec., rate=718.822978 Mbytes/sec
len=2048 bytes, used= 0.000355 sec., rate=1153.785707 Mbytes/sec
len=4096 bytes, used= 0.000749 sec., rate=1093.910804 Mbytes/sec
len=8192 bytes, used= 0.000954 sec., rate=1717.128354 Mbytes/sec
len=16384 bytes, used= 0.001633 sec., rate=2006.701029 Mbytes/sec
len=32768 bytes, used= 0.001299 sec., rate=5045.482873 Mbytes/sec
len=65536 bytes, used= 0.001740 sec., rate=7532.965386 Mbytes/sec
len=131072 bytes, used= 0.002936 sec., rate=8928.955886 Mbytes/sec
len=262144 bytes, used= 0.005885 sec., rate=8908.698977 Mbytes/sec
len=524288 bytes, used= 0.011111 sec., rate=9437.260501 Mbytes/sec
clock resolution in seconds: 0.00000100

Options: 0=quit, 1=Hello, 2=Ring :
OpenMPIでLatencyのテスト 異なるノード間 GB Ethernet使用
Sender: LSF System
Subject: Job 569: Done

Job was submitted from host by user .
Job was executed on host(s) <1*hpc01>, in queue , as user .
<1*hpc02>
was used as the home directory.
was used as the working directory.
Started at Sun Mar 18 10:57:50 2012
Results reported at Sun Mar 18 10:59:14 2012

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
openmpi-mpirun -np 2 /usr/lib64/openmpi/bin/mpitests-osu_latency
------------------------------------------------------------

Successfully completed.

Resource usage summary:

CPU time : 56.42 sec.

The output (if any) follows:

# OSU MPI Latency Test v3.1.1
# Size Latency (us)
0            43.06
1            43.03
2            43.15
4            43.00
8            43.23
16            43.17
32            43.33
64            43.44
128           44.00
256           59.80
512           77.23
1024           50.24
2048          241.40
4096          437.91
8192          568.25
16384          568.21
32768          569.54
65536         1150.74
131072         1451.57
262144         2598.79
524288         4906.72
1048576        9327.55
2097152        18153.08
4194304        36005.89
OpenMPIでLatencyのテスト 異なるノード間 Infiniband使用
Sender: LSF System
Subject: Job 571: Done

Job was submitted from host by user .
Job was executed on host(s) <1*hpc01>, in queue , as user .
<1*hpc02>
was used as the home directory.
was used as the working directory.
Started at Sun Mar 18 10:58:14 2012
Results reported at Sun Mar 18 10:58:53 2012

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
openmpi-mpirun -np 2 -mca btl openib,sm,self /usr/lib64/openmpi/bin/mpitests-osu_latency
------------------------------------------------------------

Successfully completed.

Resource usage summary:

CPU time : 1.43 sec.

The output (if any) follows:

# OSU MPI Latency Test v3.1.1
# Size Latency (us)
0             0.95
1             0.95
2             1.03
4             1.10
8             1.12
16            1.14
32            1.17
64            1.27
128            2.01
256            2.17
512            2.48
1024           3.01
2048           4.37
4096           5.33
8192           7.22
16384           9.08
32768          13.72
65536          23.47
131072          42.85
262144          81.62
524288         159.16
1048576         314.39
2097152         624.90
4194304        1248.32
OpenMPIでLatencyのテスト 同一ノード間 GB Ethernet使用
Sender: LSF System
Subject: Job 570: Done

Job was submitted from host by user .
Job was executed on host(s) <2*hpc01>, in queue , as user .
was used as the home directory.
was used as the working directory.
Started at Sun Mar 18 10:57:56 2012
Results reported at Sun Mar 18 10:58:47 2012

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
openmpi-mpirun -np 2 /usr/lib64/openmpi/bin/mpitests-osu_latency
------------------------------------------------------------

Successfully completed.

Resource usage summary:

CPU time : 1.49 sec.

The output (if any) follows:

# OSU MPI Latency Test v3.1.1
# Size Latency (us)
0             0.84
1             0.76
2             0.75
4             0.76
8             0.75
16            0.76
32            0.76
64            0.76
128            0.97
256            1.04
512            1.10
1024           1.20
2048           1.54
4096           2.64
8192           3.72
16384           5.96
32768           9.45
65536          13.53
131072          24.90
262144          45.22
524288          85.18
1048576         170.42
2097152         323.06
4194304         638.24
OpenMPIでLatencyのテスト 同一ノード間 Infiniband使用
Sender: LSF System
Subject: Job 572: Done

Job was submitted from host by user .
Job was executed on host(s) <2*hpc02>, in queue , as user .
was used as the home directory.
was used as the working directory.
Started at Sun Mar 18 10:57:58 2012
Results reported at Sun Mar 18 10:58:11 2012

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
openmpi-mpirun -np 2 -mca btl openib,sm,self /usr/lib64/openmpi/bin/mpitests-osu_latency
------------------------------------------------------------

Successfully completed.

Resource usage summary:

CPU time : 1.37 sec.

The output (if any) follows:

# OSU MPI Latency Test v3.1.1
# Size Latency (us)
0             0.30
1             0.30
2             0.30
4             0.44
8             0.72
16             0.72
32             0.73
64             0.72
128            0.92
256            1.00
512            1.03
1024            1.17
2048            1.47
4096            2.47
8192            3.55
16384           5.65
32768           9.42
65536           12.65
131072          23.59
262144          43.04
524288          80.49
1048576         154.89
2097152         302.88
4194304         596.75

以上で、クラスターが構築され、正常に動作していることが、確認されました。
非常に簡単で、短時間で構築可能です。
クラスターにノードを追加する

2ノードのクラスターをしばらく使っていたのですが、コンピュータが1台増え、3ノードのクラスターに変更する必要が生じました。
3番目のノードを追加する場合はどうしたらいいでしょうか。
クラスターマップは、
image068.png
から
image070.png
に変わります。
新しいcluster.mapを使って、3つのノードにOSからインストールしてもいいのですが、貴重な時間が無駄になります。
hpc01とhpc02にはOSは既にインストールされていますので、MAPだけを書き換えれば十分です。
CIUSBにはOSのインストールはしないで、MAPだけを書き換える機能がありますので、これを使います。
マスターのhpc01では次のようにして行います。Install OS ? に対してnoと応えます。
image072.png
10秒弱で終わります。OSを再インストールすると約6分かかりますので、それに比べると非常に短時間です。
既に存在するスレーブのhpc02では次のようにして行います。
image074.png
スレーブノードがhpc02とhpc03の2つに増えましたので、そのどちらかを聞かれます。
hpc02と応えます。続いてOSをインストールするか聞かれますのでnoと応えます。
こちらも10秒弱で終わります。
hpc03は新しいノードなので、OSをインストールする必要があります。

image076.png yesと応えてOSをインストールします。
以上で、新しいノードが追加されました。複数のノードが追加された場合も、同様に処理します。

クラスターの設定情報を変更する
IPアドレスを変更したい、hostnameを変更したい、そしてコア数を変更したい場合、設定情報だけを変更できます。
cluster.mapを書き換えて、mkmaster.shとmkslave.shを使い、Install OS ? にnoと答えれば、自由に設定を変更できます。

別のコンピュータ用のHDDに、OSと設定情報ををインストールする
1台のコンピュータでクラスター全てのHDDをインストールしたい場合、それも可能です。
2台のクラスターで、この機能を試してみましょう。
インストールしたいHDDを取り出します。
image078.png
書き込みするコンピュータに挿し込みます。
image080.png
./mkmaster.shまたは./mkslave.shを実行します(写真では./mkslave)。
2台のHDDのどちらにインストールするのかを聞かれますので、後から挿入した/dev/sdbと応えます。
image082.png
インストールが終わったら、取り出して元のコンピュータに挿し込んでBootします。

bsubコマンドでMPIジョブをsubmitするには
bsubコマンドの-Rオプションで、ノード上のコアをどのように割り当てるかを指定します。
bsub -R "span[ptile=1]"なら別のノードから、bsub -R "span[host=1]"なら同一ノードから、コアが割り当てられます。
割り当てられたコアをmpirunに渡すためのスクリプトがopenmpi-mpirunです。
例1: 2コアを1コアづつ別々のノードから割り当て、ネットワークはGB Etherを使い、mpi-progを実行するには
bsub -o log -n 2 -R "span[ptile=1]" "openmpi-mpirun -np 2 mpi-prog"
例2: 2コアを1コアづつ別々のノードから割り当て、ネットワークはInfinibandを使い、mpi-progを実行するには
bsub -o log -n 2 -R "span[ptile=1]" "openmpi-mpirun -np 2 -mca btl openib,sm,self mpi-prog"
例3: 2コアを同一ノードから割り当て、mpi-progを実行するには
bsub -o log -n 2 -R "span[hosts=1]" "openmpi-mpirun -np 2 mpi-prog"
とします。

クラスター内ノードでの各ユーザーの情報共有
各ユーザーは、クラスター内のノード全てで、homeディレクトリの共有、passwdファイルの共有が必要です。
homeディレクトリは、マスターノードの/homeディレクトリをスレーブノードが自身の/homeへautomountすることにより実現されています。
passwdファイルを共有するために、NIS(Network Information System)が使われます。
以下では、新規ユーザーhpcdyicを追加し、パスワードを設定する例を示します。
image084.png

NISを有効にするためには、cd /var/yp; makeが必要です。
image086.png
これを行えば、全ノードでユーザーhpcdiycのパスワードが有効になります。
試しにノードhpc02にリモートログインしてみます。
image088.png
問題ありません。
パスワードを変更するには、yppasswdコマンドを使います。通常のpasswdコマンドは使わないでください。
image090.png
任意のノード上で変更すれば、すべてのノードで新しいパスワードが有効になります。

/etc/skel新規ユーザーのデフォルト設定置き場
新規ユーザーを登録した際、その都度.bashrcファイルなどを書き換えたり、ホームディレクトリにファイルをコピーしたりするのは面倒ですし、時間もかかります。
書き換えたいファイルや、コピーしたいファイルを/etc/skelの下に置いておけば、useraddで新規ユーザーを登録した際、自動的にコピーされるので便利です。
image092.png

/homeと/optを別のHDDにするには
ユーザーのホームディレクトリがある/homeと、追加インストールしたソフトウェアなどが入っている/optを別HDDにしておけば、OSを再インストールしたりする際に便利です。
ここでは新しい500GBのHDDを400GBと100GBの2つのパーティションに分け、400GBを/homeへ、100GBを/optへmountしてみます。
新しいHDDを挿し込みレバーをロックします。
image094.png
image096.png
新しいHDDのデバイス名を調べます。それにはfdisk -lコマンドを使います。 image098.png
/dev/sddが新しいHDDであることがわかります。
fdisk /dev/sddコマンドで、パーティションを400GBと残りとに分けます。
image100.png
パーティション情報をHDDに書き込みます。
image102.png
fdisk -l /dev/sddコマンドを入力すると、/dev/sdd1と/dev/sdd2の2つのパーティションが出来ているのがわかります。

image104.png
2つのパーティションをフォーマットします。これには、mkfs.ext4 /dev/sdd1コマンドを使います。
image106.png
上の写真の最後の行になってから、しばらく時間がかかります。やがて終わります。
image108.png
同様に、mkfs.ext4 /dev/sdd2も行います。
/home上のファイルを、/dev/sdd1にコピーします。新しいHDDを/homeにmountしてしまうと、元の/homeが見えなくなってしまうためです。

image110.png 同様にして、/opt上のファイルを、/dev/sdd2にコピーします。
続いて、/etc/fstabを修正します。修正前は、
image112.png
このファイルに/dev/sdd1を/homeへ、/dev/sdd2を/optへmountする行を付け加えるのですが、問題があります。
現在は、新しいHDDをホットプラグしたため、デバイス名は/dev/sddになっていますが、rebootすると別のデバイス名になってしまう可能性があります。
デバイス名が変化してもmountできるよう、HDDのパーティションにLABELを付け、fstabをLABELで記述することにします。
パーティションにLABELを付けるには、e2labelコマンドを使います。/dev/sdd1にhome、/dev/sdd2にoptというLABELを付けます。
image114.png
LABELを使ったfstabの記述は次のようになります。
image116.png
fstabを修正したら、それを有効にするには、mount -aコマンドを実行します。rebootする場合は自動的にmountされます。
image118.png
rebootすると、/dev/sddが/dev/sdbに変化してmountされるのがわかります。
image120.png

> マスター上のディレクトリをNFSでスレーブにautomountするには
例えば、マスターノード上の/optディレクトリをNFSでスレーブノードと共有する場合を考えます。
マスターノード上では、/etc/exportsファイルを修正します。
修正前は
image122.png
修正後は
image124.png
rebootなしで新/etc/exportsを有効にするには、exportfs -aコマンドを入力します。
exportfs -vでステータスを見ることができます。
imag126.png
rebootする場合は、exportfs -aは必要ありません。

スレーブノード上では、/etc/auto.directを修正します。
修正前は、
image128.png
修正後は、
image130.png
その後、/etc/init.d/autofs restartを実行します。すると、マスターの/optが、スレーブの/optにautomountされます。
image132.png

USBからブートするようにBIOSを設定するには
(以下の手順はノードによって異なります)
電源ボタンを押して、しばらくすると画面が表示されます。
image134.png
Deleteキーを押して、Setup画面を立ち上げます。
image136.png
右側にあるBootタブに移ります。
image138.png
下の方にある、USB Device BBS Prioritiesを選択しエンターキーを押します。
image140.png
Boot Option #1 を選択し、エンターキーを押します。
image142.png
Generic USB を選択し、エンターキーを押します。
image144.png
Boot Option #1がGeneric USBに変わりました。
image146.png
エスケープキーを押して1つ上のレベルに戻り、Boot Option #1がUSBであることを確認します。
image148.png
F4キーを押し、続いてエンターキーを押して、bootシーケンスに移ります。
image150.png

(文書の先頭へ)


Copyright (C) HPCシステムズ株式会社. All Rights Reserved.