Skip to content

Commit 6698619

Browse files
committed
Added more HPC applications
1 parent 96c2b2b commit 6698619

23 files changed

Lines changed: 1080 additions & 17 deletions

File tree

script/README.md

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# MLCommons Automation Scripts
22

3-
*Last updated: 2026-04-18 05:31:02*
3+
*Last updated: 2026-04-20 15:26:08*
44

55
This directory contains automation scripts for MLPerf benchmarks, AI/ML workflows, and development operations.
66

@@ -668,12 +668,42 @@ This directory contains automation scripts for MLPerf benchmarks, AI/ML workflow
668668

669669
## HPC Application
670670

671+
- **[app-cloverleaf](app-cloverleaf/)**
672+
- app-cloverleaf
673+
- Tags: `app`, `cloverleaf`, `hpc`
671674
- **[app-cp2k](app-cp2k/)**
672675
- app-cp2k
673676
- Tags: `app`, `cp2k`
677+
- **[app-gromacs](app-gromacs/)**
678+
- app-gromacs
679+
- Tags: `app`, `gromacs`, `hpc`
680+
- **[app-hmmer](app-hmmer/)**
681+
- app-hmmer
682+
- Tags: `app`, `hmmer`, `hpc`
683+
- **[app-lammps](app-lammps/)**
684+
- app-lammps
685+
- Tags: `app`, `lammps`, `hpc`
686+
- **[app-namd](app-namd/)**
687+
- app-namd
688+
- Tags: `app`, `namd`, `hpc`
674689
- **[app-nwchem](app-nwchem/)**
675690
- app-nwchem
676691
- Tags: `app`, `nwchem`, `hpc`
692+
- **[app-openfoam](app-openfoam/)**
693+
- app-openfoam
694+
- Tags: `app`, `openfoam`, `hpc`
695+
- **[app-quantum-espresso](app-quantum-espresso/)**
696+
- app-quantum-espresso
697+
- Tags: `app`, `quantum-espresso`, `hpc`
698+
- **[app-roms](app-roms/)**
699+
- app-roms
700+
- Tags: `app`, `roms`, `hpc`
701+
- **[app-vasp](app-vasp/)**
702+
- app-vasp
703+
- Tags: `app`, `vasp`, `hpc`
704+
- **[app-wrf](app-wrf/)**
705+
- app-wrf
706+
- Tags: `app`, `wrf`, `hpc`
677707

678708
## MLCommons automation
679709

@@ -932,6 +962,9 @@ This directory contains automation scripts for MLPerf benchmarks, AI/ML workflow
932962
- **[detect-cpu](detect-cpu/)**
933963
- detect-cpu
934964
- Tags: `detect`, `cpu`, `detect-cpu`, `info`
965+
- **[detect-host-system-details](detect-host-system-details/)**
966+
- detect-host-system-details
967+
- Tags: `detect`, `host`, `system`, `details`
935968
- **[detect-os](detect-os/)**
936969
- detect-os
937970
- Tags: `detect-os`, `detect`, `os`, `info`
@@ -1165,7 +1198,7 @@ This directory contains automation scripts for MLPerf benchmarks, AI/ML workflow
11651198

11661199
## Statistics
11671200

1168-
- **Total Scripts**: 340
1201+
- **Total Scripts**: 351
11691202
- **Categories**: 33
11701203

11711204
## Usage

script/app-cloverleaf/customize.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from mlc import utils
2+
import os
3+
4+
5+
def preprocess(i):
6+
7+
os_info = i['os_info']
8+
if os_info['platform'] == 'windows':
9+
return {'return': 1, 'error': 'Windows is not supported for CloverLeaf builds'}
10+
11+
return {'return': 0}
12+
13+
14+
def postprocess(i):
15+
16+
env = i['env']
17+
18+
src_path = env.get('MLC_CLOVERLEAF_SRC_PATH', '')
19+
install_dir = os.path.join(src_path, 'install')
20+
bin_dir = os.path.join(install_dir, 'bin')
21+
22+
clover_bin = os.path.join(bin_dir, 'clover_leaf')
23+
if not os.path.isfile(clover_bin):
24+
# Try source directory
25+
clover_bin = os.path.join(src_path, 'clover_leaf')
26+
if not os.path.isfile(clover_bin):
27+
return {'return': 1, 'error': f'CloverLeaf binary not found in {bin_dir} or {src_path}'}
28+
bin_dir = src_path
29+
30+
env['MLC_CLOVERLEAF_BIN_PATH'] = bin_dir
31+
env['MLC_CLOVERLEAF_INSTALL_PATH'] = install_dir
32+
env['+PATH'] = [bin_dir]
33+
34+
return {'return': 0}

script/app-cloverleaf/meta.yaml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
alias: app-cloverleaf
2+
uid: a7b4c5d6e8f9012b
3+
automation_alias: script
4+
automation_uid: 5b4e0237da074764
5+
category: HPC Application
6+
tags:
7+
- app
8+
- cloverleaf
9+
- hpc
10+
cache: true
11+
new_env_keys:
12+
- MLC_CLOVERLEAF_SRC_PATH
13+
- MLC_CLOVERLEAF_INSTALL_PATH
14+
- MLC_CLOVERLEAF_BIN_PATH
15+
- +PATH
16+
new_state_keys: []
17+
deps:
18+
- tags: detect,cpu
19+
- tags: get,generic,sys-util,_libopenmpi-dev
20+
- tags: get,generic,sys-util,_gfortran
21+
names:
22+
- gfortran
23+
- tags: get,git,repo
24+
names:
25+
- cloverleaf-repo
26+
extra_cache_tags: cloverleaf,repo,cloverleaf-repo
27+
env:
28+
MLC_GIT_CHECKOUT_PATH_ENV_NAME: MLC_CLOVERLEAF_SRC_PATH
29+
force_env_keys:
30+
- MLC_GIT_*
31+
update_tags_from_env_with_prefix:
32+
_branch.:
33+
- MLC_GIT_CHECKOUT
34+
_repo.:
35+
- MLC_GIT_REPO_URL
36+
_tag.:
37+
- MLC_GIT_CHECKOUT_TAG
38+
prehook_deps: []
39+
posthook_deps: []
40+
post_deps: []
41+
variations:
42+
repo.#:
43+
env:
44+
MLC_GIT_REPO_URL: '#'
45+
group: repo
46+
repo.official:
47+
default: true
48+
env:
49+
MLC_GIT_REPO_URL: https://github.com/UK-MAC/CloverLeaf_ref.git
50+
group: repo
51+
branch.#:
52+
env:
53+
MLC_GIT_CHECKOUT: '#'
54+
tag.#:
55+
env:
56+
MLC_GIT_CHECKOUT_TAG: '#'
57+
group: version
58+
version.1.3:
59+
default: true
60+
group: version
61+
env:
62+
MLC_GIT_CHECKOUT_TAG: v1.3
63+
version.1.1:
64+
group: version
65+
env:
66+
MLC_GIT_CHECKOUT_TAG: v1.1
67+
master:
68+
env:
69+
MLC_GIT_CHECKOUT: master
70+
default_env: {}
71+
tests:
72+
run_inputs:
73+
- variations_list:
74+
- repo.official

script/app-cloverleaf/run.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
if [[ -z "${MLC_CLOVERLEAF_SRC_PATH}" ]]; then
6+
echo "CloverLeaf source not found!"
7+
exit 1
8+
fi
9+
10+
SRC="${MLC_CLOVERLEAF_SRC_PATH}"
11+
INSTALL_DIR="${SRC}/install"
12+
CORES="${MLC_HOST_CPU_TOTAL_PHYSICAL_CORES:-$(nproc)}"
13+
14+
echo "Building CloverLeaf-ref..."
15+
echo "Source: ${SRC}"
16+
17+
cd "${SRC}"
18+
19+
# CloverLeaf-ref uses Makefile with MPI Fortran
20+
make COMPILER=GNU MPI_COMPILER=mpif90 C_MPI_COMPILER=mpicc -j${CORES}
21+
22+
# Install binary
23+
mkdir -p "${INSTALL_DIR}/bin"
24+
cp clover_leaf "${INSTALL_DIR}/bin/"
25+
26+
echo "CloverLeaf-ref built successfully."

script/app-gromacs/customize.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from mlc import utils
2+
import os
3+
4+
5+
def preprocess(i):
6+
7+
os_info = i['os_info']
8+
if os_info['platform'] == 'windows':
9+
return {'return': 1, 'error': 'Windows is not supported for GROMACS builds'}
10+
11+
return {'return': 0}
12+
13+
14+
def postprocess(i):
15+
16+
env = i['env']
17+
18+
src_path = env.get('MLC_GROMACS_SRC_PATH', '')
19+
install_dir = os.path.join(src_path, 'install')
20+
bin_dir = os.path.join(install_dir, 'bin')
21+
22+
gmx_bin = os.path.join(bin_dir, 'gmx_mpi')
23+
if not os.path.isfile(gmx_bin):
24+
return {'return': 1, 'error': f'GROMACS binary (gmx_mpi) not found in {bin_dir}'}
25+
26+
env['MLC_GROMACS_BIN_PATH'] = bin_dir
27+
env['MLC_GROMACS_INSTALL_PATH'] = install_dir
28+
env['+PATH'] = [bin_dir]
29+
env['+LD_LIBRARY_PATH'] = [os.path.join(install_dir, 'lib')]
30+
31+
return {'return': 0}

script/app-gromacs/meta.yaml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
alias: app-gromacs
2+
uid: d4e1f2a3b5c6789e
3+
automation_alias: script
4+
automation_uid: 5b4e0237da074764
5+
category: HPC Application
6+
tags:
7+
- app
8+
- gromacs
9+
- hpc
10+
cache: true
11+
new_env_keys:
12+
- MLC_GROMACS_SRC_PATH
13+
- MLC_GROMACS_INSTALL_PATH
14+
- MLC_GROMACS_BIN_PATH
15+
- +PATH
16+
- +LD_LIBRARY_PATH
17+
new_state_keys: []
18+
deps:
19+
- tags: detect,cpu
20+
- tags: get,generic,sys-util,_libopenmpi-dev
21+
- tags: get,cmake
22+
- tags: get,generic,sys-util,_libfftw3-dev
23+
- tags: get,git,repo
24+
names:
25+
- gromacs-repo
26+
extra_cache_tags: gromacs,repo,gromacs-repo
27+
env:
28+
MLC_GIT_CHECKOUT_PATH_ENV_NAME: MLC_GROMACS_SRC_PATH
29+
force_env_keys:
30+
- MLC_GIT_*
31+
update_tags_from_env_with_prefix:
32+
_branch.:
33+
- MLC_GIT_CHECKOUT
34+
_repo.:
35+
- MLC_GIT_REPO_URL
36+
_tag.:
37+
- MLC_GIT_CHECKOUT_TAG
38+
prehook_deps: []
39+
posthook_deps: []
40+
post_deps: []
41+
variations:
42+
repo.#:
43+
env:
44+
MLC_GIT_REPO_URL: '#'
45+
group: repo
46+
repo.official:
47+
default: true
48+
env:
49+
MLC_GIT_REPO_URL: https://github.com/gromacs/gromacs.git
50+
group: repo
51+
branch.#:
52+
env:
53+
MLC_GIT_CHECKOUT: '#'
54+
tag.#:
55+
env:
56+
MLC_GIT_CHECKOUT_TAG: '#'
57+
group: version
58+
version.2025.2:
59+
default: true
60+
group: version
61+
env:
62+
MLC_GIT_CHECKOUT_TAG: v2025.2
63+
version.2024.5:
64+
group: version
65+
env:
66+
MLC_GIT_CHECKOUT_TAG: v2024.5
67+
main:
68+
env:
69+
MLC_GIT_CHECKOUT: main
70+
default_env: {}
71+
tests:
72+
run_inputs:
73+
- variations_list:
74+
- repo.official

script/app-gromacs/run.sh

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
if [[ -z "${MLC_GROMACS_SRC_PATH}" ]]; then
6+
echo "GROMACS source not found!"
7+
exit 1
8+
fi
9+
10+
SRC="${MLC_GROMACS_SRC_PATH}"
11+
BUILD_DIR="${SRC}/build"
12+
INSTALL_DIR="${SRC}/install"
13+
CORES="${MLC_HOST_CPU_TOTAL_PHYSICAL_CORES:-$(nproc)}"
14+
15+
echo "Building GROMACS..."
16+
echo "Source: ${SRC}"
17+
echo "Build directory: ${BUILD_DIR}"
18+
19+
mkdir -p "${BUILD_DIR}"
20+
cd "${BUILD_DIR}"
21+
22+
cmake "${SRC}" \
23+
-DGMX_MPI=ON \
24+
-DGMX_OPENMP=ON \
25+
-DGMX_FFT_LIBRARY=fftw3 \
26+
-DCMAKE_BUILD_TYPE=Release \
27+
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
28+
-DGMX_BUILD_OWN_FFTW=OFF
29+
30+
echo "Building GROMACS with ${CORES} cores..."
31+
cmake --build . -j${CORES}
32+
33+
echo "Installing GROMACS..."
34+
cmake --install .
35+
36+
echo "GROMACS built successfully."

script/app-hmmer/customize.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from mlc import utils
2+
import os
3+
4+
5+
def preprocess(i):
6+
7+
os_info = i['os_info']
8+
if os_info['platform'] == 'windows':
9+
return {'return': 1, 'error': 'Windows is not supported for HMMER builds'}
10+
11+
return {'return': 0}
12+
13+
14+
def postprocess(i):
15+
16+
env = i['env']
17+
18+
src_path = env.get('MLC_HMMER_SRC_PATH', '')
19+
install_dir = os.path.join(src_path, 'install')
20+
bin_dir = os.path.join(install_dir, 'bin')
21+
22+
hmmsearch_bin = os.path.join(bin_dir, 'hmmsearch')
23+
if not os.path.isfile(hmmsearch_bin):
24+
return {'return': 1, 'error': f'HMMER binary (hmmsearch) not found in {bin_dir}'}
25+
26+
env['MLC_HMMER_BIN_PATH'] = bin_dir
27+
env['MLC_HMMER_INSTALL_PATH'] = install_dir
28+
env['+PATH'] = [bin_dir]
29+
30+
return {'return': 0}

0 commit comments

Comments
 (0)