本ドキュメントは、HPCワークロードの実行に最適な、高帯域・低遅延RDMA対応RoCEv2採用の クラスタ・ネットワーク でHPCワークロード向けベアメタルインスタンス BM.Optimized3.36 をノード間接続するHPCクラスタで、標準ベンチマークの HPL を実行する方法を解説します。


0. 概要

本ドキュメントで解説する HPL の実行は、 Intel oneAPI Math Kernel Library for Linux (本ドキュメントで使用するバージョンは2023.2)に含まれるIntelの HPL 実装である Intel Distribution for LINPACK BenchmarkIntel MPI Library (本ドキュメントで使用するバージョンは2021.10)と共に使用します。
なお、 Intel oneAPI Math Kernel Library for LinuxIntel MPI Library は、 Intel oneAPI HPC Toolkit (本ドキュメントで使用するバージョンは2023.2)に含まれているものを使用します。

HPL を実行するHPCクラスタは、HPCワークロード向けベアメタルシェイプ BM.Optimized3.36 2インスタンスを クラスタ・ネットワーク で接続した構成とし、 HPL の性能向上を目的にインスタンスをデプロイする際のBIOS設定 NUMA settingNPS2 とします。
計算ノードのOSは、 Oracle Linux 8ベースの HPCクラスタネットワーキングイメージ を使用し、 OCI HPCチュートリアル集 のカテゴリ HPCクラスタ のチュートリアルの手順に従う等により、計算ノード間でMPIが実行できるよう予め構築しておきます。

以上より、本ドキュメントで解説する HPL 実行は、以下の手順を経て行います。

  • HPCクラスタのデプロイ
  • Intel oneAPI HPC Toolkit インストール
  • Intel Distribution for LINPACK Benchmark セットアップ
  • HPL 実行

本ドキュメントは、以下の環境で HPL を実行しており、以下の性能が出ています。

[実行環境]

  • シェイプ: BM.Optimized3.36
  • OS: Oracle Linux 8.7 (HPC クラスタネットワーキングイメージ )
  • HPL : Intel oneAPI Math Kernel Library for Linux (バージョン2023.2)の Intel Distribution for LINPACK Benchmark
  • MPI: Intel MPI Library (バージョン2021.10)
  • ノード数: 2
  • ノード間接続: クラスタ・ネットワーク
  • 問題サイズ(N): 353,280
  • ブロックサイズ(NB): 384
  • プロセスグリッド(PxQ): 2x4

[実行結果]

  • FLOPS: 4,925 GFLOPS
  • 所要時間: 5,969秒

1. HPCクラスタのデプロイ

本章は、計算ノードに使用する BM.Optimized3.36 のBIOS設定 NUMA settingNPS2 とし、2ノードのHPCクラスタをデプロイします。

HPCクラスタデプロイ時の計算ノードのBIOS設定は、 パフォーマンス関連Tips集パフォーマンスに関連するベア・メタル・インスタンスのBIOS設定方法 を参照ください。


2. Intel oneAPI HPC Toolkitインストール

本章は、 HPL を実行するHPCクラスタの計算ノードに Intel oneAPI HPC Toolkit をインストールします。

以下コマンドを全計算ノードのopcユーザで実行し、 Intel oneAPI HPC Toolkit をインストールします。

$ sudo yum-config-manager --add-repo https://yum.repos.intel.com/oneapi
$ sudo rpm --import https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
$ sudo dnf install -y intel-basekit
$ sudo dnf install -y intel-hpckit

3. Intel Distribution for LINPACK Benchmarkセットアップ

本章は、先にインストールした Intel oneAPI HPC Toolkit に含まれる Intel Distribution for LINPACK Benchmark を、2ノードの BM.Optimized3.36 (AVX-512搭載プロセッサ・主記憶容量512GB)で実行する際に最大の性能を得るよう、事前準備を実施します。
具体的には、以下の作業を実施します。

  • Intel Distribution for LINPACK Benchmark 実行用ディレクトリ作成
  • HPL.dat 1修正
  • runme_intel64_dynamic 2修正
  1. 以下コマンドを全計算ノードのopcユーザで実行し、 Intel Distribution for LINPACK Benchmark 実行用のディレクトリを作成します。
    コマンド中の dest_dir は、全計算ノードで共有されるディレクトリがあればその配下に、無ければ /tmp ディレクトリとします。このディレクトリを共有ディレクトリ配下にすることで、この実行用ディレクトリ作成と後の HPL.dat の修正を実施する対象ノードを1ノードで済ますことが可能になります。

     $ cp -pR /opt/intel/oneapi/mkl/latest/benchmarks/mp_linpack /dest_dir/
    
  2. Intel Distribution for LINPACK Benchmark 実行用ディレクトリ( /dest_dir/mp_linpack )直下のファイル HPL.dat 中の HPL 関連パラメータを、以下のように設定します。

    ファイル中の行・カラム パラメータ 設定値 備考
    6行目・1カラム目 問題サイズN 353,280 デプロイ直後の計算ノード空きメモリサイズ490 GiBに10 GiB程度の余裕を持たせて算出
    8行目・1カラム目 ブロックサイズNB 384 Intel oneAPI Math Kernel Library for Linux ドキュメントに記載のAVX-512搭載プロセッサ用推奨値
    11行目・1カラム目 プロセスグリッドのP値 2 使用するMPIプロセス数8からPxQを2x4に設定
    12行目・1カラム目 プロセスグリッドのQ値 4 使用するMPIプロセス数8からPxQを2x4に設定
           
  3. Intel Distribution for LINPACK Benchmark 実行用ディレクトリ( /dest_dir/mp_linpack )直下のファイル runme_intel64_dynamic 中の MPI 関連パラメータを、以下のように設定します。

    ファイル中の行 パラメータ 設定値 備考
    20行目 MPI_PROC_NUM 8 NUMAノード当たり1 MPIプロセス・2ノードトータルで8プロセス
    25行目 MPI_PER_NODE 4 NUMAノード当たり1 MPIプロセス・ノード当たり4プロセス
           

4. HPL実行

本章は、先に設定した HPLMPI の実行パラメータを使用し、 HPL を実行します。
具体的には、以下の作業を実施します。

  • ホストリストファイル3作成・配布
  • スワップ領域の無効化
  • OS再起動
  • HPL 実行
  1. OCI HPCテクニカルTips集計算ノードのホスト名リスト作成方法 の手順を実施し、以下のように全ての計算ノードのホスト名を含むホスト名リストをファイル名 hostlist.txt で作成し、これを全計算ノードの /dest_dir/mp_linpack ディレクトリにコピーします。

     inst-wyr6m-comp
     inst-9wead-comp
    
  2. /etc/fstabのスワップ領域を指定する行を以下のように削除し、以降のOS再起動でスワップ領域が無効化されるようにします。

     $ diff /etc/fstab_org /etc/fstab
     30d29
     < /.swapfile	none	swap	sw,comment=cloudconfig	0	0
    
  3. 以下コマンドを全計算ノードのopcユーザで実行し、OSを再起動します。

     $ sudo shutdown -r now
    
  4. 以下コマンドを計算ノードのうちの1ノードでopcユーザで実行します。
    この HPL 実行は、 ノード当たり4プロセス・プロセス当たり9スレッド で実行します。
    この際、プロセス当たりのスレッド数は、 Intel oneAPI Math Kernel Library for Linux がノードのコア配置から自動的にに設定するため、改めて指定する必要はありません。
    本ドキュメントの前提となる環境・設定で HPL 実行に要する時間は、2時間弱です。

     $ source /opt/intel/oneapi/setvars.sh
     $ export I_MPI_HYDRA_HOST_FILE=/dest_dir/mp_linpack/hostlist.txt
     $ export UCX_NET_DEVICES=mlx5_2:1
     $ cd /dest_dir/mp_linpack
     $ ./runme_intel64_dynamic
    
  1. HPLを実行する際のパラメータ値を指定する設定ファイル 

  2. Intel_Distribution_for_LINPACK_Benchmarkが提供するHPL実行スクリプト 

  3. MPIを使用して2ノードでHPLを実行するため、この際に必要となる。 

更新日時: