Skip to content

Commit

Permalink
チュートリアル:OCI HPCテクニカルTips集
Browse files Browse the repository at this point in the history
カテゴリ:OCI HPCポータル
更新内容:"Slurmによるリソース管理・ジョブ管理システム運用Tips"に複数ジョブによる計算/GPUノード共有方法の記述追加、これらに伴う修正及び誤記訂正・軽微な修正
  • Loading branch information
fwiw6430 committed Dec 24, 2024
1 parent cad06f7 commit 8308037
Show file tree
Hide file tree
Showing 8 changed files with 159 additions and 77 deletions.
4 changes: 2 additions & 2 deletions tutorials/_hpc/benchmark/bios-setting.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ header:

ベアメタルインスタンスは、デプロイ時にBIOS設定を指定することが可能ですが、この中にはHPCワークロードの実行時パフォーマンスに影響する以下の項目が含まれます。

- **NPS**NUMA nodes per socket)
- **NUMA nodes per socket** (以降 **NPS** と呼称
**NPS** は、CPUソケット当たりの **NUMA**(Non-Umiform Memory Access)ノード数を指定するBIOS設定です。
現在のサーバ用途CPUでメモリ性能を向上させるために採用されているメモリインタリーブは、インターリーブするメモリチャネルを同一NUMAノードに接続されるものに限定します。このため、NPSを適切に調整することで、あるCPUコアから見て距離的に同じメモリチャネルのみをインターリーブし、 **[STREAM](https://www.cs.virginia.edu/stream/)** ベンチマークのようなメモリアクセスパターンを持つアプリケーションの性能を向上させることが可能でです。

Expand All @@ -34,7 +34,7 @@ header:

※1)2CPUソケットを1 **NUMA** ノードとして構成

- **SMT**Simultanious Multi Threading
- **Simultanious Multi Threading**以降 **SMT** と呼称
**SMT** は、CPUコア当たりに2個の論理スレッドを割当てるかどうかのBIOS設定です。
HPCワークロードにみられるCPUインテンシブなアプリケーションは、この **SMT** を無効化する(CPUコア当たりに1個の論理スレッドを割当てる)ことで、性能が向上することがあります。

Expand Down
83 changes: 33 additions & 50 deletions tutorials/_hpc/benchmark/openfoam-tuning.md

Large diffs are not rendered by default.

Binary file modified tutorials/_hpc/benchmark/openfoam-tuning/process_binding.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tutorials/_hpc/benchmark/openfoam-tuning/process_binding2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 12 additions & 2 deletions tutorials/_hpc/benchmark/topology-aware-cn-tuning.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,19 +83,29 @@ SwitchName=ss0 Switches=ls[0-1]
- それ以外のリーフスイッチ定義行を実際のリーフスイッチ数分作成
- リーフスイッチ定義行の **Nodes=** に実際のインスタンスの名前解決可能なホスト名を記載

次に、Slurmマネージャと全ての計算ノードで **slurm.conf** を以下のように修正します。
次に、Slurmマネージャ、Slurmクライアント、及び全ての計算ノードで **slurm.conf** を以下のように修正します。

```
$ diff slurm.conf_org slurm.conf
6c6
< SelectType=select/linear
---
> SelectType=select/cons_tres
28a29
22c22
< NodeName=inst-aaaaa-x9,inst-bbbbb-x9 CPUs=36 Boards=1 SocketsPerBoard=2 CoresPerSocket=18 ThreadsPerCore=1 RealMemory=500000 TmpDisk=10000 State=UNKNOWN
---
> NodeName=inst-aaaaa-x9,inst-bbbbb-x9,inst-ccccc-x9,inst-ddddd-x9 CPUs=36 Boards=1 SocketsPerBoard=2 CoresPerSocket=18 ThreadsPerCore=1 RealMemory=500000 TmpDisk=10000 State=UNKNOWN
23c23
< PartitionName=sltest Nodes=ALL Default=YES MaxTime=INFINITE State=UP
---
> PartitionName=sltest Nodes=ALL Default=YES MaxTime=INFINITE State=UP OverSubscribe=Exclusive
24a25
> TopologyPlugin=topology/tree
$
```

この設定は、リソース選択アルゴリズムを指定する **SelectType** 行に **Topology-aware resource allocation** を可能にする **select/cons_tres** を指定し、これに伴い計算ノードのジョブ共有が有効となってしまうパーティション **sltest****OverSubscribe=Exclusive** を指定することで再度ノード占有パーティションであることを宣言し、スパイン・リーフトポロジーのためのプラグイン **topology/tree****TopologyPlugin** 行に定義しています。

次に、以下コマンドをSlurmマネージャのopcユーザで実行し、先の **slurm.conf** の修正を反映します。

```
Expand Down
1 change: 1 addition & 0 deletions tutorials/_hpc/tech-knowhow/install-openfoam.md
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,7 @@ $
この設定は、GNOMEデスクトップのログインに使用するユーザがパスワード認証を無効にしている場合、スクリーンロックがかかった場合にロック解除が出来なくなることを防止します。
***
# 4. CFD解析フロー実行
## 4-0. 概要
Expand Down
14 changes: 3 additions & 11 deletions tutorials/_hpc/tech-knowhow/setup-slurm-cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ table, th, td {

以上の利点を享受するべく本テクニカルTipsは、 **OpenMPI** のMPI並列アプリケーションを **PMIx** の大規模並列ジョブに対する利点を生かして実行することを念頭に、 **PMIx****[UCX](https://openucx.org/)** を取り込んだ **Slurm** 環境を構築し、初期化処理時間の効果を検証すべく、 **[Intel MPI Benchmarks](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-mpi-benchmarks.html)** PingPongのレイテンシに着目して比較・検証を実施します。

なお、本テクニカルTipsで使用する **OpenMPI** を構築する方法は、**[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)****[Slurm環境での利用を前提とするUCX通信フレームワークベースのOpenMPI構築方法](/ocitutorials/hpc/tech-knowhow/build-openmpi/)** を参照してください。

***
# 1. 前提システム

Expand All @@ -57,7 +55,7 @@ table, th, td {
![画面ショット](architecture_diagram.png)

※2)本テクニカルTipsは、 **[VM.Optimized3.Flex](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#flexible)** を使用します。
※3)本テクニカルTipsは、 **クラスタ・ネットワーク** に接続された2ノードの **[BM.Optimized3.36](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-hpc-optimized)** を使用します
※3)本テクニカルTipsは、 **クラスタ・ネットワーク** に接続された2ノードの **[BM.Optimized3.36](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-hpc-optimized)** を、 **[OCI HPCパフォーマンス関連情報](/ocitutorials/hpc/#2-oci-hpcパフォーマンス関連情報)****[パフォーマンスに関連するベアメタルインスタンスのBIOS設定方法](/ocitutorials/hpc/benchmark/bios-setting/)** の手順に従い、 **Simultanious Multi Threading** (以降 **SMT** と呼称)を無効化して使用します
※4)**ファイル・ストレージ** やベア・メタル・インスタンスNFSサーバ等、任意の手法で構築されたNFSサーバです。NFSでサービスするファイル共有ストレージ構築方法は、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)****[HPC/GPUクラスタ向けファイル共有ストレージの最適な構築手法](/ocitutorials/hpc/tech-knowhow/howto-configure-sharedstorage/)** を参照ください。
※5)NFSサーバがサービスするジョブ投入ユーザのホームディレクトリは、Slurmクライアントと計算ノードでNFSマウントします。
※6)**Oracle Linux** 8.10ベースのHPC **[クラスタネットワーキングイメージ](/ocitutorials/hpc/#5-13-クラスタネットワーキングイメージ)** で、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)****[クラスタネットワーキングイメージの選び方](/ocitutorials/hpc/tech-knowhow/osimage-for-cluster/)****[1. クラスタネットワーキングイメージ一覧](/ocitutorials/hpc/tech-knowhow/osimage-for-cluster/#1-クラスタネットワーキングイメージ一覧)** のイメージ **No.12** です。Slurmマネージャは、計算ノードにインストールする **Slurm** のRPMをビルドするため、Slurmクライアントは、計算ノードのアプリケーション開発環境の役割を担うため、計算ノードと同じOSを採用します。
Expand Down Expand Up @@ -400,18 +398,12 @@ AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageHost=slurm-srv
AccountingStoragePort=7004
MpiDefault=pmix
NodeName=DEFAULT CPUs=72 Boards=1 SocketsPerBoard=2 CoresPerSocket=18 ThreadsPerCore=2 RealMemory=500000 TmpDisk=10000 State=UNKNOWN
NodeName=inst-aaaaa-x9,inst-bbbbb-x9
NodeName=inst-aaaaa-x9,inst-bbbbb-x9 CPUs=36 Boards=1 SocketsPerBoard=2 CoresPerSocket=18 ThreadsPerCore=1 RealMemory=500000 TmpDisk=10000 State=UNKNOWN
PartitionName=sltest Nodes=ALL Default=YES MaxTime=INFINITE State=UP
TaskPlugin=task/affinity
```

なお、 **SlurmctldHost****AccountingStorageHost** 、及び **NodeName** の設定値は、自身の環境に合わせて修正します。
また、計算ノードのSMTが無効化されている場合は、 **NodeName=DEFAULT** で始まる行を以下に変更します。

```sh
NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=2 CoresPerSocket=18 ThreadsPerCore=1 RealMemory=500000 TmpDisk=10000 State=UNKNOWN
```
なお、 **SlurmctldHost****AccountingStorageHost** 、及び **NodeName** の設定値は、自身の環境に合わせて修正します。

[ **slurmdbd.conf** ]
```sh
Expand Down
Loading

0 comments on commit 8308037

Please sign in to comment.