ハイパフォーマンスコンピューティングのベンチマークを簡単に
Doug Eadline オリジナル記事「A Short Sit on the HPC Benchpark」

ほとんどのHPCユーザは、新しいハードウェアをテストしたり、既存のハードウェアを比較したりするためのベンチマークセットを持っている。新しいプラットフォームで作業を行うには、多くの場合、ベンチマークファイルやMakefileを手作業で微調整する必要があり、これは骨の折れる作業で、多くの時間を要する。
![]() |
|
ローレンス・リバモア国立研究所(LLNL)のプロジェクトであるBenchparkは、この状況を変え、HPCベンチマークをより簡単にしようというものである。Benchparkは、オルガ・ピアース氏、アレック・スコット氏、グレッグ・ベッカー氏、リヤズ・ハク氏、ネイサン・ハンフォード氏によって開発された。
ウェブサイトによると、BenchparkはHPCベンチマークの再現可能な仕様を共有するオープンな共同リポジトリである。Benchparkは、再現可能な作業仕様を共有するメカニズムを提供することで、ベンチマークに関するサイト間の共同作業を可能にする。
- システム仕様(ベンチマークや実験に依存しない)
-ハードウェア情報
-システムソフトウェア環境情報(利用可能なコンパイラ、MPI)
-スケジューラおよびランチャー - ベンチマーク仕様(システムや実験に依存しない)
-ソースリポジトリおよびバージョン
-ビルド構成(Spackを使用)
-実行構成(Rambleを使用) - 実験仕様(システム仕様における特定のベンチマーク実験)
-特定のシステム上でのベンチマークのプログラミングモデル(OpenMP、CUDA、ROCmなど)
-研究における個々の実行のパラメータ
特殊化リストは、多くのベンチマーク要件の独自性を捉えている。例えば、パフォーマンスを測定するために、ユーザは特定のベンチマークに対して異なるコンパイラやMPIオプションをテストすることが多い。このプロセスは、異なる組み合わせに特有の多くの依存関係があるため、面倒になる可能性がある。
Benchparkは、構成を指定するために以下のオープンソースプロジェクトを使用している。
- Spack:ベンチマークと依存関係の構築
- Ramble:実行構成
概要
入門セクションはわかりやすい。gitクローニングと環境設定を済ませたら、Benchparkのルートディレクトリに含まれるrequirements.txtファイルを使用して、Pythonの依存関係をインストールできる。
すべてがセットアップされると、Benchparkシステムでサポートされているベンチマークとシステムを照会することができる。コマンド benchpark list を実行すると、サポートされているベンチマークとシステムが報告される。ベンチマークのリストはかなり多い(つまり、若いプロジェクトではもっと少ないと予想していた)。リストには、各ベンチマークに必要なソフトウェア環境(cuda、openmp、mpi、rocmなど)も含まれている。例えば、
- amg2023/cuda
- amg2023/openmp
- amg2023/rocm
- branson/openmp
- genesis/openmp
- gromacs/cuda
- gromacs/openmp
- gromacs/rocm
- hpcc/mpi-only
- hpcg/openmp
- hpl/openmp
- ior/mpi-only
- kripke/cuda
- kripke/openmp
- kripke/rocm
- laghos/mpi-only
- lammps/openmp
- lammps/rocm
- md-test/mpi-only
- osu-micro-benchmarks/mpi-only
- phloem/mpi-only
- quicksilver/openmp
- qws/openmp
- raja-perf/cuda
- raja-perf/mpi-only
- raja-perf/openmp
- raja-perf/rocm
- remhos/mpi-only
- salmon/openmp
- saxpy/cuda
- saxpy/openmp
- saxpy/rocm
- stream/openmp
システムサポートも非常に広範囲にわたる。
- CSC-LUMI-HPECray-zen3-MI250X-Slingshot
- CSCS-Daint-HPECray-haswell-P100-Infiniband
- CSCS-Eiger-HPECray-zen2-Slingshot
- JSC-JUWELS-Booster-rome-A100-Infiniband
- LLNL-Dane-DELL-sapphirerapids-OmniPath
- LLNL-Magma-Penguin-icelake-OmniPath
- LLNL-Pascal-Penguin-broadwell-P100-OmniPath
- LLNL-Ruby-icelake-OmniPath
- LLNL-Sierra-IBM-power9-V100-Infiniband
- LLNL-Tioga-HPECray-zen3-MI250X-Slingshot
- RCCS-Fugaku-Fujitsu-A64FX-TofuD
- TAMU-Grace-Dell-cascadelake-Infiniband
- nosite-AWS_PCluster_Hpc6a-zen3-EFA
- nosite-AWS_PCluster_Hpc7a-zen4-EFA
- nosite-HPECray-zen3-MI250X-Slingshot
- nosite-x86_64
- test-extra-batch-opts
ベンチマークの設定は、Benchparkで実験を設定することで行う。各実験には、ベンチマーク、システム、ベンチマーク設定を指定できる。
Benchparkシステムは、以下のワークフロー図をサポートするように設計されており、既存の構成を実行できるか、またはBenchparkファイルを追加または編集する必要があるかを判断するのに役立つ。既存のシステムで実行しており、ベンチマークと実験がすでに設定されている場合は、Benchparkの実行に直接進むことができる。
![]() |
Benchparkワークフロープロセス、クリックで拡大。出典:Benchpark |
Benchparkはオープンソースプロジェクトである。質問、ディスカッション、新しいベンチマーク、システム、実験の提案、既存の仕様に対する更新や改善は歓迎される。
BenchparkはApache 2.0 w/ LLVM Exceptionライセンスでリリースされており、GitHubで入手できる。