Skip to content

Commit 5af5647

Browse files
AlexanderAlexander
authored andcommitted
instructions for Frontier
1 parent 880c009 commit 5af5647

3 files changed

Lines changed: 238 additions & 243 deletions

File tree

docs/content/useful/cluster-setups.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ This section goes over some instructions on how to compile & run the `Entity` on
5252

5353
=== "`Frontier` (ORNL)"
5454

55-
_WIP_
55+
--8<-- "docs/content/useful/clusters/frontier.md"
56+
57+
_Last updated: 04/21/2026_
5658

5759
=== "(IAS)"
5860

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
['Frontier'](https://docs.olcf.ornl.gov/systems/frontier_user_guide.html#system-overview) is a HPE Cray EX supercomputer.
2+
The system has 77 Olympus rack HPE cabinets, each with 128 AMD compute nodes, and a total of 9,856 AMD compute nodes.
3+
Each node has 8 GPUs,each having 64 GB of high-bandwidth memory (HBM2E).
4+
5+
**Installing the dependencies**
6+
7+
The list of required modules is
8+
9+
```sh
10+
module load PrgEnv-cray
11+
module load cmake
12+
module load rocm
13+
module load cray-mpich
14+
module load craype-accel-amd-gfx90a
15+
```
16+
17+
**Compiling & running the code**
18+
19+
Even though the documentaion states that the MPI implementation is Cray’s MPICH, which is “GPU-aware", it seems to be bugged,
20+
so you will always need to add the flag `gpu_aware_mpi=OFF`.
21+
22+
Your `cmake` setting should look something like this:
23+
```sh
24+
cmake -B build \
25+
-D pgen=<PGEN> \
26+
-D mpi=ON \
27+
-D Kokkos_ENABLE_HIP=ON \
28+
-D Kokkos_ARCH_AMD_GFX90A=ON \
29+
-D CMAKE_CXX_COMPILER=hipcc \
30+
-D CMAKE_C_COMPILER=hipcc \
31+
-D gpu_aware_mpi=OFF \
32+
-D CMAKE_CXX_FLAGS="-Wno-c++11-narrowing -munsafe-fp-atomics" \
33+
-D CMAKE_C_FLAGS="-Wno-c++11-narrowing -munsafe-fp-atomics"
34+
```
35+
36+
The queue policies encourage users to run jobs on Frontier that are as large as possible. To that end, OLCF implements queue policies that enable large jobs to run in a timely fashion:
37+
38+
| Bin | Min Nodes | Max Nodes | Max Walltime (Hours) | Aging Boost (Days) |
39+
| --- | --------- | --------- | -------------------- | ------------------ |
40+
| 1 | 5,645 | 9,472 | 12.0 | 8 |
41+
| 2 | 1,882 | 5,644 | 12.0 | 4 |
42+
| 3 | 184 | 1,881 | 12.0 | 0 |
43+
| 4 | 92 | 183 | 6.0 | 0 |
44+
| 5 | 1 | 91 | 2.0 | 0 |
45+
46+
Jobs are aged according to the job’s requested node count (older age equals higher queue priority).
47+
48+
Finally an example `SLURM` script using the full node looks like this:
49+
50+
```slurm
51+
#!/bin/bash
52+
#SBATCH -A <YOUR_PROJECT_ID>
53+
#SBATCH -J entity_prod
54+
#SBATCH -o entity_prod_%j.out
55+
#SBATCH -t 12:00:00
56+
#SBATCH -p batch
57+
#SBATCH -N 184
58+
59+
module load PrgEnv-cray
60+
module load cmake
61+
module load rocm
62+
module load cray-mpich
63+
module load craype-accel-amd-gfx90a
64+
65+
srun -N184 -n1472 -c1 --gpus-per-task=1 --gpu-bind=closest ./entity -input <INPUT>.toml
66+
```
67+
For post-processing and visualization it is possible to use `extended` partition. This allows to have 24-Hour maximum wall time with 64-Node maximum job size.
68+
69+
```slurm
70+
#!/bin/bash
71+
#SBATCH -A <YOUR_PROJECT_ID>
72+
#SBATCH -J entity_postproc
73+
#SBATCH -o entity_postproc_%j.out
74+
#SBATCH -t 06:00:00
75+
#SBATCH -p extended
76+
#SBATCH -N 1
77+
78+
module load cray-python
79+
source ~/.venv/bin/activate
80+
81+
python3 <your_script.py>
82+
```

0 commit comments

Comments
 (0)