自作クラスタ計算機:pbs_proの基本設定
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| 自作クラスタ計算機:pbs_proの基本設定 [2023/05/01 11:06] – [PBS Proについて] koudai | 自作クラスタ計算機:pbs_proの基本設定 [2026/05/15 17:41] (current) – [計算ノードでの作業] koudai | ||
|---|---|---|---|
| Line 11: | Line 11: | ||
| ====== 環境 ====== | ====== 環境 ====== | ||
| - | * Ubuntu | + | * Ubuntu |
| + | * 管理ノードと計算ノードで、OSはバージョンも含めて同一のものを使用してください | ||
| + | |||
| ====== 構成 ====== | ====== 構成 ====== | ||
| Line 36: | Line 39: | ||
| * /opt | * /opt | ||
| が計算ノードと共有されているとします。 | が計算ノードと共有されているとします。 | ||
| - | また、hostsファイルはNISによって共有されているとします。 | + | また、ユーザー情報とhostsもLDAPによって共有されているとします。 |
| ===== 準備 ===== | ===== 準備 ===== | ||
| + | |||
| + | ==== SSHの設定 ==== | ||
| + | |||
| + | パスフレーズ無しでSSHログインできるようにします。 | ||
| + | PBSを使用する全ユーザーは、管理ノードで以下を実行してください。 | ||
| + | |||
| + | < | ||
| + | $ ssh-keygen -t rsa -N "" | ||
| + | $ cat ~/ | ||
| + | $ chmod 600 ~/ | ||
| + | $ echo " | ||
| + | </ | ||
| + | ==== UFWの設定 ==== | ||
| + | |||
| + | ファイアウォールにUFWを使っている場合、プライベートLAN内の通信をすべて許可してやります。 | ||
| + | 管理ノードで以下のコマンドを実行します。 | ||
| + | |||
| + | < | ||
| + | $ sudo ufw allow from 192.168.0.0/ | ||
| + | </ | ||
| ==== hostsファイルの編集 ==== | ==== hostsファイルの編集 ==== | ||
| - | 管理ノードで行います | + | 管理ノードと計算ノードで行います |
| - | - /etc/hosts に、管理ノードと計算ノードのプライベートLAN内におけるIPアドレスとホスト名を登録します< | + | * Ubuntuでは自己参照アドレス(localhost)に127.0.1.1が割り当てられていますが、このままだと動かなくなるので削除します。< |
| - | 127.0.0.1 localhost | + | # Your system has configured ' |
| - | 127.0.0.1 kanri | + | # As a result, if you wish for changes to this file to persist |
| - | 192.168.0.1 kanri | + | # then you will need to either |
| - | 192.168.0.11 | + | # a.) make changes to the master file in / |
| - | 192.168.0.12 keisan12 | + | # b.) change or remove the value of ' |
| - | 192.168.0.13 keisan13 | + | # / |
| - | (以下略) | + | # |
| + | 127.0.0.1 localhost | ||
| + | |||
| + | # The following lines are desirable for IPv6 capable hosts | ||
| + | ::1 localhost ip6-localhost ip6-loopback | ||
| + | ff02::1 ip6-allnodes | ||
| + | ff02::2 ip6-allrouters | ||
| </ | </ | ||
| - | * Ubuntuでは自己参照アドレスに127.0.1.1が割り当てられていますが、このままだと後述のQmgrがなぜか編集できなくなるので変更します。 | + | * 再起動すると / |
| - | - NISの情報を更新します< | + | * cloud_init_modulesのupdate_etc_hostsをコメントアウト |
| - | $ sudo make -C /var/yp | + | * manage_etc_hosts: |
| - | </ | + | |
| Line 73: | Line 101: | ||
| postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \ | postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \ | ||
| libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \ | libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \ | ||
| - | automake | + | automake |
| </ | </ | ||
| * PBS Proの実行に必要なもの(管理ノードと計算ノードの両方にインストール)< | * PBS Proの実行に必要なもの(管理ノードと計算ノードの両方にインストール)< | ||
| - | $ sudo apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin tcl tk libical3 postgresql-server-dev-all libhwloc-dev | + | $ sudo apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin tcl tk libical3 postgresql-server-dev-all libhwloc-dev |
| - | $ sudo apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin tcl tk libical3 postgresql-server-dev-all # PBS Pro v19 | + | |
| </ | </ | ||
| * 必要なパッケージはOSのバージョンによるので、必ず https:// | * 必要なパッケージはOSのバージョンによるので、必ず https:// | ||
| Line 95: | Line 122: | ||
| $ make | $ make | ||
| </ | </ | ||
| - | * 現在のバージョン(pbs20.0.0)ではPythonのバージョンが3.5であることを要求してくるので、configureで文句を言われたときはpyenvなどを使って変更してください。 | ||
| - | * https:// | ||
| - PBSのインストールを完了させます< | - PBSのインストールを完了させます< | ||
| $ sudo make install | $ sudo make install | ||
| $ sudo / | $ sudo / | ||
| </ | </ | ||
| - | * (Ubuntu20.04 & pbs20.0.0) pbs_postinstallの際に" | + | * (Ubuntu26.04 & pbs23.06.06) pbs_postinstallの際に" |
| $ sudo update-rc.d pbs defaults | $ sudo update-rc.d pbs defaults | ||
| </ | </ | ||
| - 設定ファイルで PBS_START_SERVER, | - 設定ファイルで PBS_START_SERVER, | ||
| - | $ sudo vi / | + | $ sudo nano / |
| </ | </ | ||
| PBS_SERVER=kanri | PBS_SERVER=kanri | ||
| Line 123: | Line 148: | ||
| $ sudo / | $ sudo / | ||
| </ | </ | ||
| - | - いったんログアウトして、再ログインします(インストール時に設置された | + | - 環境変数を読み込む設定をします。すべてのユーザーがPBSを使えるように /etc/bash.bashrcを編集します< |
| - | $ exit | + | $ sudo nano / |
| - | </ | + | </ |
| + | (略) | ||
| + | . / | ||
| + | </ | ||
| + | - いったんログアウトして、再ログインします | ||
| ===== 計算ノードでの作業 ===== | ===== 計算ノードでの作業 ===== | ||
| Line 132: | Line 161: | ||
| $ sudo / | $ sudo / | ||
| </ | </ | ||
| - | * (Ubuntu20.04 & pbs20.0.0) pbs_postinstallの際に" | + | * (Ubuntu26.04 & pbs23.06.06) pbs_postinstallの際に" |
| $ sudo update-rc.d pbs defaults | $ sudo update-rc.d pbs defaults | ||
| </ | </ | ||
| - | * 管理ノードと計算ノードでOSのバージョンが異なる場合はインストールがうまくいかないことがあります。そのときは計算ノードでも「PBS Proのコンパイルに必要なもの」をインストールした後、管理ノードと同様に make を行ってください。その際はNFSの共有ディレクトリにインストールしないようprefixを変更してください。 | ||
| - 設定ファイルで PBS_START_MOM=1 とすることで、このノードが計算ノードであることを指定します。またPBSサーバのホスト名を PBS_SERVER で設定します。< | - 設定ファイルで PBS_START_MOM=1 とすることで、このノードが計算ノードであることを指定します。またPBSサーバのホスト名を PBS_SERVER で設定します。< | ||
| - | $ sudo vi / | + | $ sudo nano / |
| </ | </ | ||
| PBS_SERVER=kanri | PBS_SERVER=kanri | ||
| Line 199: | Line 227: | ||
| < | < | ||
| - | Qmgr: create node keisan11 | + | Qmgr: create node node10 |
| - | Qmgr: create node keisan12 | + | Qmgr: create node node11 |
| ... | ... | ||
| </ | </ | ||
| Line 206: | Line 234: | ||
| ノードあたりに使用できる最大スレッド数も指定できます(ここでは24コア)。 | ノードあたりに使用できる最大スレッド数も指定できます(ここでは24コア)。 | ||
| < | < | ||
| - | Qmgr: set node keisan11 | + | Qmgr: set node node10 |
| - | Qmgr: set node keisan12 | + | Qmgr: set node node11 |
| ... | ... | ||
| + | </ | ||
| + | |||
| + | ノードの設定状況も確認できます | ||
| + | < | ||
| + | Qmgr: print node node10 | ||
| + | # | ||
| + | # Create nodes and set their properties. | ||
| + | # | ||
| + | # | ||
| + | # Create and define node node10 | ||
| + | # | ||
| + | create node node10 | ||
| + | set node node10 state = free | ||
| + | set node node10 resources_available.arch = linux | ||
| + | set node node10 resources_available.host = node10 | ||
| + | set node node10 resources_available.mem = 131666992kb | ||
| + | set node node10 resources_available.ncpus = 24 | ||
| + | set node node10 resources_available.vnode = node10 | ||
| + | set node node10 resv_enable = True | ||
| </ | </ | ||
| 使わなくなったノードはdeleteで消せます | 使わなくなったノードはdeleteで消せます | ||
| < | < | ||
| - | Qmgr: delete node keisan11 | + | Qmgr: delete node node10 |
| </ | </ | ||
| Line 243: | Line 290: | ||
| --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- | --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- | ||
| 1.kanri | 1.kanri | ||
| - | Job run at Tue Dec 03 at 04:56 on (keisan11:ncpus=1) | + | Job run at Tue Dec 03 at 04:56 on (node10:ncpus=1) |
| </ | </ | ||
| Sの列が状態を表し、Qだと実行待ち、Rだと実行中を意味します。 | Sの列が状態を表し、Qだと実行待ち、Rだと実行中を意味します。 | ||
| - | ジョブが計算ノードkeisan11で実行されていることがわかります。 | + | ジョブが計算ノードnode10で実行されていることがわかります。 |
| ジョブを終了または削除したい場合は qdel を使います | ジョブを終了または削除したい場合は qdel を使います | ||
| Line 259: | Line 306: | ||
| ===== MPIの設置 ===== | ===== MPIの設置 ===== | ||
| - | * OpenMPI, MPICH2, Intel MPIなどのMPIライブラリを管理ノードの | + | * OpenMPI, MPICH2, Intel MPIなどのMPIライブラリを管理ノードの /opt にインストールし、NFSによって各計算ノードに共有してください |
| - | * 学生であれば Intel Parallel Studio XE が無償で使えて便利です | + | |
| ===== ソースコード ===== | ===== ソースコード ===== | ||
| Line 328: | Line 373: | ||
| < | < | ||
| $ cat run.sh.o1 | $ cat run.sh.o1 | ||
| - | Hello world: rank 0 of 48 running on keisan11 | + | Hello world: rank 0 of 48 running on node10 |
| - | Hello world: rank 1 of 48 running on keisan11 | + | Hello world: rank 1 of 48 running on node10 |
| (略) | (略) | ||
| - | Hello world: rank 23 of 48 running on keisan11 | + | Hello world: rank 23 of 48 running on node10 |
| - | Hello world: rank 24 of 48 running on keisan12 | + | Hello world: rank 24 of 48 running on node11 |
| - | Hello world: rank 25 of 48 running on keisan12 | + | Hello world: rank 25 of 48 running on node11 |
| (略) | (略) | ||
| - | Hello world: rank 47 of 48 running on keisan12 | + | Hello world: rank 47 of 48 running on node11 |
| </ | </ | ||
| Line 373: | Line 418: | ||
| * ompthreadsはMPIの1プロセスあたりのOpenMPのスレッド数です | * ompthreadsはMPIの1プロセスあたりのOpenMPのスレッド数です | ||
| - | * mpiprocs * ompthreads = ncpus となるようにしてください | + | * 基本的には |
| - | * OpenMPのスレッド数は、1つの計算ノードに含まれるCPUコア数以下になるようにしてください | + | |
| ====== Fairshare ====== | ====== Fairshare ====== | ||
| Line 382: | Line 426: | ||
| * https:// | * https:// | ||
| + | |||
| + | ====== ノードごとの負荷の分散 ====== | ||
| + | |||
| + | ジョブを投入したら、デフォルトでは1番目の計算ノードにジョブを埋めていき、その計算ノードのリソースが全て埋まってから次の計算ノードでジョブが走るようになります。 | ||
| + | これを、各ノードの負荷を分散させるようにジョブが投入されるように変更します。 | ||
| + | |||
| + | 設定ファイル < | ||
| + | |||
| + | * 使用しているCPUのコア数が一番少ないノードにジョブを割り当てたい場合< | ||
| + | node_sort_key: | ||
| + | </ | ||
| + | |||
| + | * 使用していないCPUのコア数が一番多いノードにジョブを割り当てたい場合< | ||
| + | node_sort_key: | ||
| + | </ | ||
| + | |||
| + | (各計算ノードのコア数がすべて同じ場合は、どちらも同じ結果になります) | ||
| + | |||
| + | PBSを再起動します。 | ||
| + | |||
| + | < | ||
| + | sudo / | ||
| + | </ | ||
| + | |||
| + | * PBS Professional 2022.1 Administrator' | ||
| ====== アンインストール ====== | ====== アンインストール ====== | ||
自作クラスタ計算機/pbs_proの基本設定.1682906793.txt.gz · Last modified: 2023/05/01 11:06 by koudai
