Read-only mirror of https://github.com/MeteoSwiss/anemoi-hpc-benchmarks — MeteoSwiss. Issues & pull requests at the source.
  • Python 69.7%
  • Shell 30.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-08-25 14:18:14 +02:00
config_weak Merge in one branch 2025-08-25 14:18:14 +02:00
.gitignore Interpolator scaling on balfrin 2025-06-25 15:26:06 +02:00
elapsed_from_logs.py Merge in one branch 2025-08-25 14:18:14 +02:00
job_scaling_weak_balfrin.sh Merge in one branch 2025-08-25 14:18:14 +02:00
job_scaling_weak_lumi.sh Merge in one branch 2025-08-25 14:18:14 +02:00
LICENSE Add BSD 3-Clause LICENSE 2025-08-21 08:51:56 +02:00
pyproject.toml Merge in one branch 2025-08-25 14:18:14 +02:00
README.md Merge in one branch 2025-08-25 14:18:14 +02:00
scaling.py Add template for benchmarking 2025-05-06 12:26:27 +02:00
scaling_results_strong.txt New scaling results on balfrin 2025-06-27 08:57:10 +02:00
scaling_results_weak.txt New scaling results on balfrin 2025-06-27 08:57:10 +02:00
scaling_strong.py Interpolator scaling on balfrin 2025-06-25 15:26:06 +02:00
scaling_weak.py Interpolator scaling on balfrin 2025-06-25 15:26:06 +02:00
strong_from_weak.py Interpolator scaling on balfrin 2025-06-25 15:26:06 +02:00
strong_scaling.png New scaling results on balfrin 2025-06-27 08:57:10 +02:00
uv.lock Merge in one branch 2025-08-25 14:18:14 +02:00
weak_scaling.png New scaling results on balfrin 2025-06-27 08:57:10 +02:00

mch-anemoi-benchmarks

Template repository for benchmarking.

Setup

  1. Go straight to scratch (first figure out where it is, on lumi you can type lumi-workspaces to see relevant scratch folders)... Because creating env in your home directory might result in a disk quota exceeded error. In some cases, disk storage is limited to 100K files and the environment cannot be created. Default uv cache to scratch too by adding those lines to your ~/.bashrc.
SCRATCH=<project_scratch_dir>
CACHE_DIR=$SCRATCH/.uv-cache
TMPDIR=$SCRATCH/.tmp
  1. Clone the repository
git clone https://github.com/MeteoSwiss/mch-anemoi-benchmarks.git
  1. Create a new branch (for example, lumi-proposal)
git switch --create <your-branch-name>
  1. Install uv (see uv documentation for more details)

  2. Sync uv environment

cd anemoi-hpc-benchmarks
uv venv -p 3.11
uv sync

Get data

  1. Copy credentials from CSCS:
scp -r ~/.config/anemoi <username>@<hpc_address>://users/<username>/.config
  1. Download data for emulator experiments from the anemoi catalog:
anemoi-datasets copy s3://ml-datasets/mch-co2-an-archive-0p02-2015-2020-6h-v3-pl13.zarr . --resume

and global 6-hourly data:

anemoi-datasets copy s3://ml-datasets/aifs-od-an-oper-0001-mars-n320-2016-2023-6h-v8.zarr . --resume
  1. Download the data for the interpolator from the anemoi catalog:
anemoi-datasets copy s3://ml-datasets/mch-co2-an-archive-0p02-2015-2020-1h-v3-pl13.zarr . --resume

and global hourly data:

anemoi-datasets copy s3://ml-datasets/aifs-ea-an-oper-0001-mars-o96-1979-2022-1h-v4.zarr . --resume

Run the benchmarks

  1. Write benchmarking config your usecase, save them in config (stageC_benchmark, etc); limit training to 1 epoch and a portion of the dataset. Set sanity steps to 0 to avoid latency at the start of training.
  2. Copy example_run_scaling.sh and adjust the config name. Run it.
  3. Compute wall times for each node number and number of GPUs using elapsed_from_logs.py. The script will save the wall times in results text file.
  4. Print benchmarks with scaling.py. Results should look like this:
GPUs Wall Time(s) Speed-up Efficiency Job ID
1 18683.27 1.00 1.00 1412346
4 9567.43 1.95 0.98 1412347
8 7869.86 2.37 0.79 1412348
16 6015.32 3.11 0.78 1412349