Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add options to benchmark scripts #3097

Draft
wants to merge 9 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]

### Added

- Allow update offsets of ±timestep in ExtData2G

### Changed

- Added commandline options to `checkpoint_benchmark.x` and `restart_benchmark.x` to allow for easier testing of different configurations. Note that the old configuration file style of input is allowed via the `--config_file` option (which overrides any other command line options)
- Update ESMF version for Baselibs to match that of Spack for consistency

### Fixed
Expand Down
37 changes: 29 additions & 8 deletions benchmarks/io/checkpoint_simulator/README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,40 @@
This benchmark simulates writing a series of 3D variables of a given cubed-sphere resolution to a file using the same strategies as used by the real checkpoint code in MAPL

The code has the following options and needs an ESMF rc file named checkpoint\_benchmark.rc
The code has the following command line options:
```
optional arguments:
-h, --help This message.
--config_file The configuration file to use
--nx The number of cells in the x direction (default: 4)
--ny The number of cells in the y direction (default: 4)
--im_world The resolution of the cubed sphere (default: 90)
--lm The number of levels in each 3D variable (default: 137)
--num_writers The number of processes that will write (default: 1)
--num_arrays The number of 3D arrays to write (default: 5)
--ntrials The number of trials to run (default: 3)
--split_file Split the file into multiple files (default: do not split)
--gather_3d Gather all levels at once instead of one at a time (default: gather one at a time)
--write_barrier Add a barrier after every write (default: no barrier)
--static_data Use static data (rank of process) instead of random data (default: random data)
--suppress_writes Do not write data (default: write data)
--write_binary Write binary data instead of NetCDF (default: write NetCDF)
--no_chunking Do not chunk output (default: chunk the output)
```

NOTE 1: If you specify a `config_file` it must be an ESMF Config file with the following options:

- "NX:" the x distribution for each face
- "NY:" the y distribution for each face
- "IM\_WORLD:" the cube resolution
- "LM:" the number of levels
- "NUM\_WRITERS:" the number of writing processes either to a single or independent files
- "NUM\_ARRAYS:" the number of 3D variables to write to the file
- "CHUNK:" whether to chunk, default true
- "GATHER\_3D:" gather all levels at once (default is false which means a level at a time is gathered)
- "SPLIT\_FILE:" default false, if true, each writer writes to and independent file
- "WRITE\_BARRIER:" default false, add a barrier before each write to for synchronization
- "DO\_WRITES:" default true, if false skips writing (so just an mpi test at that point)
- "CHUNK:" whether to chunk, default `.true.`
- "GATHER\_3D:" gather all levels at once (default is `.false.` which means a level at a time is gathered)
- "SPLIT\_FILE:" default `.false.`, if `.true.`, each writer writes to and independent file
- "WRITE\_BARRIER:" default `.false.`, add a barrier before each write to for synchronization
- "DO\_WRITES:" default `.true.`, if `.false.` skips writing (so just an mpi test at that point)
- "NTRIALS:" default 1, the number of trials to make writing
- "RANDOM\_DATA:" default true, if true will arrays with random data, if false sets the array to the rank of the process
- "RANDOM\_DATA:" default `.true.`, if `.true.` will arrays with random data, if `.false.` sets the array to the rank of the process

Note that whatever you set NX and NY to the program must be run on `6*NX*NY` processors and the number of writers must evenly divide `6*NY`
NOTE 2: that whatever you set NX and NY to the program must be run on `6*NX*NY` processors and the number of writers must evenly divide `6*NY`
Loading