No results found
We couldn't find anything using that term, please try searching for something else.
0. 概要 このチュートリアルは、HPCワークロードの実行に最適な、 Intel Ice Lake プロセッサを搭載する BM.Optimized3.36 を クラスタ・ネットワーク でノード間接続するHPCクラスタを構築し、そのインターコネクト性能を Intel MPI Benchmarks で
このチュートリアルは、HPCワークロードの実行に最適な、 Intel Ice Lake プロセッサを搭載する BM.Optimized3.36 を クラスタ・ネットワーク でノード間接続するHPCクラスタを構築し、そのインターコネクト性能を Intel MPI Benchmarks で検証します。
この チュートリアル で 作成 する 環境 is 可能 は 、 ユーザ 管理 、 ホスト 名 管理 、 ファイル 共有 ストレージ 、 プログラム 開発 環境 、 ジョブスケジューラ 等 、 必要 な ソフトウェア 環境 を この 上 に 整備 し 、 ご 自身 の 要件 に 沿う た HPC クラスタ を 構築 する 際 の 基礎 インフラストラクチャ と し て 利用 する こと is 可能 が 可能 です 。
なお 、 これ ら の クラスタ 管理 に 必要 な ソフトウェア の 導入 まで を 自動 化 する HPC クラスタ スタック も 利用 可能 で 、 詳細 は oci HPC チュートリアル 集 の HPC クラスタ を 構築 する ( スタティック クラスタ 自動 構築 編 ) を 参照 ください 。
また この チュートリアル は 、 環境 構築 後 に より 大 規模 な 計算 を 実施 する 必要 が 生ずる たり 、 メンテナンス に より ノード を 入れる 替える 必要 が 生じる こと を 想定 し 、 既存 の クラスタ ・ ネットワーク に 計算 ノード を 追加 する 方法 と 、 特定 の 計算 ノード を 入れる 替える 方法 is 学習 も 学習 し ます 。
所要時間 : 約2時間
前提 条件 : クラスタ ・ ネットワーク を 収容 する コンパートメント ( ルート ・ コンパートメント で も OK です ) の 作成 と 、 この コンパートメント に 対する 必要 な リソース 管理 権限 が ユーザー に 付与 さ れ て いる こと 。
注意 : 本コンテンツ内の画面ショットは、現在のOCIコンソール画面と異なっている場合があります。
本章は、計算ノードをTCP接続する 仮想クラウド・ネットワーク と、インターネットから直接アクセス出来ないプライベートサブネットに接続する計算ノードにログインする際の踏み台となるBastionノードを、HPCクラスタ作成前に予め用意します。
なおこの 仮想クラウド・ネットワーク は、既存のものを使用することが可能です。
ただしこの場合、計算ノードが接続するサブネットは、 クラスタ・ネットワーク 接続に使用する Oracle Cloud Agent HPCプラグインの動作条件を満たしている必要があります。
この 詳細 is 参照 は 、 oci HPC テクニカル tips 集 の クラスタ ネット ワーキング イメージ を 使う た クラスタ ・ ネットワーク 接続 方法 の 1 – 2 . 接続 サブネット の 動作 条件 充足 確認 を 参照 し て ください 。
本章 is 作成 は 、 計算 ノード を TCP 接続 する 仮想 クラウド ・ ネットワーク を 作成 し ます 。
仮想クラウド・ネットワーク の作成は、 OCIチュートリアル の その2 – クラウドに仮想ネットワーク(VCN)を作る の手順通りに実行し、以下のリソースを作成します。
この 仮想クラウド・ネットワーク は、 セキュリティリスト で以下のアクセス制限が掛けられています。
本章は、計算ノードにログインする際の踏み台となるBastInノードを作成します。
bastion ノード の 作成 is 作成 は 、 oci チュートリアル の その 3 – インスタンス を 作成 する の 手順 を 参考 に 、 ご 自身 の 要件 に 沿う た インスタンス を 先 の 手順 で 仮想 クラウド ・ ネットワーク を 作成 し た コンパートメント と パブリック サブネット を 指定 し て 作成 し ます 。
本チュートリアルは、以下属性のインスタンスをBastionノードとして作成します。
※1)OCI HPCテクニカルTips集 の クラスタネットワーキングイメージの選び方 の 1. クラスタネットワーキングイメージ一覧 のイメージ No.12 です。
次に、このBastionノード上でSSHの鍵ペアを作成します。このSSH鍵は、Bastionノードから計算ノードにログインする際に使用します。
先のチュートリアル インスタンスを作成する に記載のインスタンスへの接続方法に従い、BastionノードにopcユーザでSSHログインして以下コマンドでSSH鍵ペアを作成、作成された公開鍵を後の クラスタ・ネットワーク 作成手順で指定します。
$ssh-keygen
GeneratIng public/private rsa key pair.
Enter file Inwhich to save the key (/home/opc/.ssh/id_rsa):
Enter passphrase (empty forNO passphrase):
Enter same passphrase agaIn:
Your identification has been saved In /home/opc/.ssh/id_rsa.
Your public key has been saved In / home / opc / . ssh / ID _ rsa . pub .
THE Key fIngerprInt IS :
sha 256 : 2 evr 7 fxteyasdknjg 1 oreie 1 KV 2 r 1 pn 3 oyrycp / xlyg opc @ bast
THE KEYS randomart image IS :
+ ー [ RSA 2048 ] ー +
| +=*= . ..oo.|
| *B.+ o . ..|
| ooo* + . ‥ |
| ‥ + . +. .|
| . s ‥ |
| ... . |
| o . + o o |
| . + *e . +*. |
| . + .=+.o o|
+----[SHA256]-----+
$cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD0TDo4QJPbXNRq/c5wrc+rGU/dLZdUziHPIQ7t/Wn+00rztZa/3eujw1DQvMsoUrJ+MHjE89fzZCkBS2t4KucqDfDqcrPuaKF3+LPBkgW0NdvytBcBP2J9zk15/O9tIVvsX8WBi8jgPGxnQMo4mQuwfvMh1zUF5dmvX3gXU3p+lH5akZa8sy/y16lupge7soN01cQLyZfsnH3BA7TKFyHxTe4MOSHnbv0r+6Cvyy7Url0RxCHpQhApA68KBIbfvhRHFg2WNtgggtVGWk+PGmTK7DTtYNaiwSfZkuqFdEQM1T6ofkELDruB5D1HgDi3z+mnWYlHMNHZU5GREH66acGJ opc@bast
$
次に、以降作成する計算ノードの名前解決をインスタンス名で行うため、 OCI HPCテクニカルTips集 の 計算ノードの効果的な名前解決方法 の手順を実施します。
次に、以降作成する計算ノードで実施する手順を pdshを使用して効率よく進めるため、 OCI HPCテクニカルTips集 の pdshで効率的にクラスタ管理オペレーションを実行 の 1. pdshインストール・セットアップ の手順を実施し、 pdshをインストール・セットアップします。
なおこの手順は、該当する手順を全ての計算ノードで実施する場合、必要ありません。
本章は、 クラスタ・ネットワーク を作成することでHPCクラスタを作成します。
クラスタ ・ ネットワーク は 、 作成 時 に 指定 する インスタンス 構成 に 基づく て 使用 する シェイプ を 決定 し 、 作成 時 に 指定 する ノード 数 の インスタンス を デプロイ 、 これ を クラスタ ・ ネットワーク に 接続 し ます 。
計算ノードに使用する BM.Optimized3.36 に装備されるNVMeローカルディスクは、OS起動時点でファイルシステムが作成されていないため、 cloud-Init でこの作成を行います。
以上 より HPC クラスタ の 作成 is 行い は 、 以下 の 手順 を 経る て 行う ます 。
なお計算ノードのOSは、 Oracle LInux 8.10ベースのHPC クラスタネットワーキングイメージ を使用します。
本 チュートリアル is 使用 は 、 cloud – Init を 以下 の 目的 で 使用 し ます 。
以下は、本チュートリアルで使用する BM.Optimized3.36 用の cloud-Init 設定ファイル(cloud- config)で、OCIコンソールを実行している端末上にテキストファイルで保存します。
#cloud- config
#
# Change time zone to JST
timezone : Asia / Tokyo
runcmd :
#
# mount NVMe Local storage
- vgcreate nvme / dev / nvme 0 N 1
- lvcreate- l 100%FREE nvme
- mkfs.xfs -L localscratch /dev/nvme/lvol0
- mkdir - p /mnt/localdisk
- echo "LABEL=localscratch /mnt/localdisk/ xfs defaults,noatime 0 0" >> /etc/fstab
- systemctl daemon-reload
- mount /mnt/localdisk
#
# Stop firewalld
- systemctl disable --now firewalld
OCIコンソールにログインし、HPCクラスタをデプロイする リージョン を選択後、 コンピュート → インスタンス構成 とメニューを辿ります。
表示される以下画面で、 インスタンス構成の作成 ボタンをクリックします。
表示 さ れる インスタンス 構成 の 作成 画面 で 、 以下 の 情報 を 入力 し 作成 ボタン を クリック し ます 。
なお 、 ここ に 記載 の ない フィールド is し は 、 デフォルト の まま と し ます 。
インスタンス構成情報 フィールド
インスタンスの作成先のコンパートメント フィールド:計算ノードをデプロイする コンパートメント
配置 フィールド
イメージとシェイプ フィールド
※2)このイメージは、 OCI HPCテクニカルTips集 の クラスタネットワーキングイメージの選び方 の 1. クラスタネットワーキングイメージ一覧 のイメージ No.12 です。
プライマリVNIC情報 フィールド
ssh キー の 追加 フィールド
管理 フィールド(以下 拡張オプションの表示 ボタンを選択して表示)
Oracle cloud エージェント フィールド ( 以下 Oracle cloud エージェント タブ を 選択 し て 表示 )
OCIコンソールにログインし、HPCクラスタをデプロイする リージョン を選択後、 コンピュート → クラスタ・ネットワーク とメニューを辿ります。
表示される以下画面で、クラスタ・ネットワークの作成 ボタンをクリックします。
次に、表示される クラスタ・ネットワークの作成 画面で、以下の情報を入力し クラスタ・ネットワークの作成 ボタンをクリックします。
なお 、 ここ に 記載 の ない フィールド is し は 、 デフォルト の まま と し ます 。
名前 フィールド : クラスタ ・ ネットワーク に 付与 する 名前
コンパートメント に 作成 フィールド : クラスタ ・ ネットワーク を 作成 する コンパートメント
可用性ドメイン フィールド:クラスタ・ネットワーク をデプロイする 可用性ドメイン
ネットワーキングの構成 フィールド
インスタンス・プールの構成 フィールド
※ 3 ) ここ で 付与 し た 名前 is 使用 は 、 計算 ノード の ホスト 名 の 接尾 辞 と し て 使用 さ れ ます 。
例えば x 9 と 指定 し た 場合 、 計算 ノード の ホスト 名 is なり は Inst – xxxxx – x 9 と なり ます 。 ( xxxxx は ランダム な 文字 列 )
次に、表示される以下 クラスタ・ネットワークの詳細 画面で、ステータスが プロビジョニング中 と表示されれば、 クラスタ・ネットワーク と計算ノードの作成が実施されています。
ステータスが 実行中 となれば、 クラスタ・ネットワーク と計算ノードの作成が完了しています。
作成が完了するまでの所要時間は、計算ノードのノード数が2ノードの場合で10分程度です。
本章 is 確認 は 、 以下 の ステップ で デプロイ さ れ た 計算 ノード の 環境 を 確認 し ます 。
計算ノードは、プライベートサブネットに接続されており、インターネットからログインすることが出来ないため、Bastionノードを経由してSSHログインします。
Bastionノードから計算ノードへのログインは、計算ノードのインスタンス名を使用します。
計算 ノード の インスタンス 名 は 、 oci コンソール で 計算 ノード を デプロイ し た リージョン を 選択 後 、 コンピュート → インスタンス と メニュー を 辿る 、 以下 の インスタンス 一覧 から その インスタンス 名 を 確認 し ます 。
またこの画面は、計算ノードのIPアドレスも表示しており、これを使用してBastionノードからSSHログインすることも可能です。
計算ノードへのログインは、以下のようにBastionノードからopcユーザでSSHログインします。
cloud-Init は、計算ノードが起動してSSHログインできる状態であっても、その処理が継続している可能性があるため、以下コマンドをBastionノードのopcユーザで実行し、そのステータスが done となっていることで cloud-Init の処理完了を確認します。
ステータスが runnIng の場合は、 cloud-Init の処理が継続中のため、処理が完了するまで待ちます。
$pdsh- g all 'sudo cloud-Init status' | dshbak- c
----------------
Inst - ijeeq - x 9 , Inst - mpdri - x 9
----------------
status: done
$
以下コマンドをBastionノードのopcユーザで実行し、タイムゾーンがJSTになっていることを確認します。
$pdsh- g all 'date' | dshbak- c
----------------
Inst - ijeeq - x 9 , Inst - mpdri - x 9
----------------
Mon Jan 29 12:08:00 JST 2024
$
以下 コマンド を bastion ノード の opc ユーザ で 実行 し 、 NVMe ローカル ディスク 領域 が / mnt / localdisk に マウント さ れ て いる こと を 確認 し ます 。
$pdsh- g all 'sudo df -h /mnt/localdisk' | dshbak- c
----------------
Inst - ijeeq - x 9 , Inst - mpdri - x 9
----------------
Filesystem size used avail Use % mounted on
/ dev / nvme 0 N 1 p 1 3.5 t 25 g 3.5 t 1 % / mnt / localdisk
$
以下コマンドをBastionノードのopcユーザで実行し、ファイアーウォールが停止されていることを確認します。
$pdsh- g all 'sudo systemctl status firewalld | grep -e Active -e disabled' | dshbak- c
----------------
Inst - ijeeq - x 9 , Inst - mpdri - x 9
----------------
loaded : loaded(/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: Inactive (dead)
$
以下コマンドをBastionノードのopcユーザで実行し、 クラスタ・ネットワーク 接続用のネットワークインターフェース( rdma0 )に 10.224.0.0/12 のネットワークアドレスに属するIPアドレスが設定されていることを確認します。(※4)
※4)このデフォルトのネットワークアドレスを変更する方法は、 OCI HPCテクニカルTips集 の クラスタネットワーキングイメージを使ったクラスタ・ネットワーク接続方法 の 1-4. ネットワークアドレスのデフォルトからの変更 を参照してください。
$pdsh- g all 'ifconfig rdma0' | dshbak- c
----------------
Inst- ptma1-x9
----------------
rdma0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 4220
Inet 10.224.0.72 netmask 255.240.0.0 broadcast 10.239.255.255
Inet6 fe80::ac0:ebff:fe88:34d0 prefixlen 64 scopeid 0x20<lInk>
ether 08 : c 0 : eb : 88 : 34 : d 0 txqueuelen 20000 (Ethernet)
RX packets 12 bytes 4479(4.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
tx packets 45 bytes 8033(7.8 kib)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
----------------
Inst-rnak1-x9
----------------
rdma0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 4220
Inet 10.224.0.208 netmask 255.240.0.0 broadcast 10.239.255.255
Inet6 fe80::ac0:ebff:fe88:34f0 prefixlen 64 scopeid 0x20<lInk>
ether 08:c0:eb:88:34:f0 txqueuelen 20000 (Ethernet)
RX packets 12 bytes 4479(4.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 44 bytes 7942 (7.7 KiB)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$
本章は、計算ノードのHPC クラスタネットワーキングイメージ に含まれる OpenMPI と Intel MPI Benchmark を使用し、 クラスタ・ネットワーク のノード間インターコネクト性能を確認します。
OpenMPI を計算ノード間で実行するためには、mpirunを実行する計算ノード(いわゆるヘッドノード)から OpenMPI 実行に参加する他の全ての計算ノードに対して、パスフレーズ無しでSSH接続できる必要があります。
また OpenMPI の実行は、これを実行する計算ノード間で必要なポートにアクセス出来る必要があるため、先に作成したプライベートサブネットのセキュリティリストを修正する必要があります。
以上 より 、 本章 で 実施 する Intel MPI benchmark に よる MPI プログラム 実行 is 行い は 、 以下 の 手順 を 経る て 行う ます 。
計算 ノード 間 を パスフレーズ 無し で ssh 接続 する ため の 環境 構築 is 実現 は 、 先 に bastion ノード で 作成 し た ssh 秘密 鍵 を 全て の 計算 ノード に コピー する こと で これ を 実現 し ます 。
以下 コマンド を bastion ノード の opc ユーザ で 実行 し 、 bastion ノード の ssh 秘密 鍵 を 全 計算 ノード に コピー し ます 。
$forhnameIn `cat ~ / hostlist . txt`; do echo $ hname; scp -oStrictHostKeyCheckIng=accept-new - p ~/.ssh/id_rsa $ hname: ~ /.ssh/; done
次に、以下コマンドをBastionノードのopcユーザで実行し、先のSSH秘密鍵のコピーでBastionノードに作成された全計算ノードのエントリを含むknown_hostsファイルを全計算ノードにコピーします。
$forhnameIn `cat ~ / hostlist . txt`; do echo $ hname; scp - p ~/.ssh/known_hosts $ hname: ~ /.ssh/; done
次に、以下コマンドをBastionノードのopcユーザで実行し、後の Intel MPI Benchmark PIng-Pongを実行する際に使用する計算ノードのホスト名リストを全計算ノードにコピーします。
なお、ホスト名リストを作成していない場合は、 OCI HPCテクニカルTips集 の 計算/GPUノードのホスト名リスト作成方法 を参照してこれを作成し、Bastionノードのopcユーザのホームディレクトリにファイル名 hostlist.txt で配置します。
$forhnameIn `cat ~ / hostlist . txt`; do echo $ hname; scp - p ~ / hostlist . txt $ hname: ~ /; done
OCIコンソールにログインし、計算ノードをデプロイしたリージョンを選択後、 ネットワーキング → 仮想クラウド・ネットワーク とメニューを辿ります。
次に、表示される画面で、先に作成した 仮想クラウド・ネットワーク をクリックします。
次に、表示される以下 サブネット フィールドで、先に作成したプライベートサブネットをクリックします。
次に、表示される以下 セキュリティ・リスト フィールドで、プライベートサブネットに適用されている セキュリティリスト をクリックします。
次 に 、 表示 さ れる 以下 イングレス ・ ルール フィールド で 、 ssh アクセス を 許可 し て いる ルール の 編集 メニュー を クリック し ます 。
次に、表示される以下 イングレス・ルールの編集 サイドバーで、 IPプロトコル フィールドを すべてのプロトコル に変更し、 変更の保存 ボタンをクリックします。
次に、表示される以下 イングレス・ルール フィールドで、変更したルールの IPプロトコル が すべてのプロトコル に変更されていることを確認します。
本章は、 Intel MPI Benchmark のPIng-Pongを実行します。
OCI HPCパフォーマンス関連情報 の Intel MPI Benchmark実行方法 の OpenMPIでIntel MPI Benchmarkを実行する場合 の手順に従い、2ノードを使用するPIng-Pongを実行します。
本章 is 拡張 は 、 作成 し た クラスタ ・ ネットワーク に 接続 する 計算 ノード を 2 ノード 追加 し て 4 ノード に 拡張 し ます 。
この手順は、 OCI HPCテクニカルTips集 の 計算/GPUノードの追加・削除・入れ替え方法 の 2. ノード数を増やす の手順に従い、計算ノードを2ノードから4ノードに拡張します。
本章は、追加した2ノードを含めた計4ノードで Intel MPI Benchmark のAll-Reduceを実行します。
本章は、追加した2ノードを含めた4ノードの計算ノード間で、パスフレーズ無しのSSH接続ができる環境を構築します。
具体 的 な 手順 is 参照 は 、 3 – 1 . 計算 ノード 間 ssh 接続 環境 構築 を 参照 ください 。
本章は、 Intel MPI Benchmark のAll-Reduceを実行します。
OCI HPCパフォーマンス関連情報 の Intel MPI Benchmark実行方法 の OpenMPIでIntel MPI Benchmarkを実行する場合 の手順に従い、4ノードを使用するAll-Reduceを実行します。
本章は、構築した4ノードクラスタのうち1ノードにハードウェア障害等が発生した場合を想定し、この計算ノードを新たな計算ノードに入れ替えます。
この手順は、 OCI HPCテクニカルTips集 の 計算/GPUノードの追加・削除・入れ替え方法 の 3. ノードを置き換える の手順を実施します。
再度 5. MPIプログラム実行(4ノード編) に従い Intel MPI Benchmark を実行、インターコネクト性能が十分出ていることを確認します。
本章は、 クラスタ・ネットワーク を終了することで、作成したクラスタ・ネットワークと計算ノードを削除します。
OCIコンソールメニューから コンピュート → クラスタ・ネットワーク を選択し、表示される以下画面で作成した クラスタ・ネットワーク の 終了 メニューをクリックします。
クラスタ・ネットワーク の 状態 が 終了済 となれば、削除が完了しています。
これ で 、 この チュートリアル is 終了 は 終了 です 。