E3SM-Project / E3SM-Project/E3SM

EAMxx: Performance issue on Frontier

Open
#7,403 10 comments 0 reactions 0 assignees View on GitHub
EAMxx Frontier
Dominant language
Fortran
Stars
440
Forks
481
Avg merge
4d 6h
Merged PRs (30d)
36

Description

There seems to be a potential performance issue running a recent version of EAMxx at large-nodes on Frontier. My first setup is based on uniform ne256pg2 grid and 'F2010-SCREAMv1' compset designed to perform a year-long simulation. On 256-nodes with 12h wall-clock submission, the simulation advanced about 8-months. I expected the simulation would advance a couple months further based on my earlier benchmarks. However, when I plotted the difference in hourly file creation timestamps, I noticed there is a slowdown after about 3-months (~ 3x745) and gradually becoming slower later. So, normally it takes about 3-4 seconds for the setup to generate 2D hourly files, but later it shows 10s or slower to generate such files (plot 1). The issue showed up again for the next restart submission with hourly file generation taking 30s or more (plot 2). I also have daily averaged 2D outputs along with 30-days restart outputs which correspond to some of the peaks.

![plot1](https://github.com/user-attachments/assets/5547c40b-adf0-4374-bdbd-192cf169d8ee)

![plot2](https://github.com/user-attachments/assets/8bd74e0b-97a3-40db-aa5e-3d207fa77f79)

My second setup is based on an high-res RRM grid and again utilizing 256-nodes. For this setup, slowdown is more significant (from 10s per file to ~150s and more) as it is shown in plots 3 and 4. Plot 4 is generated from a new re-submission of the same case. In both RRM runs, slowdown starts right at the same file - `output.scream.SurfVars1.INSTANT.nhours_x1.2017-03-04-28800.nc` (about 1-h into the simulation). Following shows a sample of file listing to highlight differences in file creation timestamps.

```
...
2025-05-29_19:44:23 output.scream.SurfVars1.INSTANT.nhours_x1.2017-03-04-18000.nc
2025-05-29_19:44:33 output.scream.SurfVars1.INSTANT.nhours_x1.2017-03-04-21600.nc
2025-05-29_19:44:42 output.scream.SurfVars1.INSTANT.nhours_x1.2017-03-04-25200.nc
2025-05-29_19:46:07 output.scream.SurfVars1.INSTANT.nhours_x1.2017-03-04-28800.nc
2025-05-29_19:48:20 output.scream.SurfVars1.INSTANT.nhours_x1.2017-03-04-32400.nc
2025-05-29_19:50:31 output.scream.SurfVars1.INSTANT.nhours_x1.2017-03-04-36000.nc
2025-05-29_19:52:46 output.scream.SurfVars1.INSTANT.nhours_x1.2017-03-04-39600.nc
...
```

![plot3](https://github.com/user-attachments/assets/90e01295-c4d4-4259-92a4-fc95646627eb)

![plot4](https://github.com/user-attachments/assets/2243061a-5792-47ba-8fb9-46314514495e)

Based on discussions in frontier-e3sm channel, it is more likely that this issue is code related, thus we are documenting the case here for further comments and investigation.

Contributor guide

Open the contributing guide

Research direction

Reproduce the slowdown using the two described 256-node Frontier setups: the ne256pg2 F2010-SCREAMv1 case and the high-resolution RRM case. Start by examining hourly file-creation intervals around output.scream.SurfVars1.INSTANT.nhours_x1.2017-03-04-28800.nc and compare them with the supplied plots and listings. Done means identifying the cause of the increasing output time and confirming the performance behavior is corrected.

Written by the indexing model from the issue text.

Assessment

Tech stack
fortran
Domain
performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.