LLNL / benchpark

An open collaborative repository for reproducible specifications of HPC benchmarks and cross site benchmarking environments
https://software.llnl.gov/benchpark/
Apache License 2.0
25 stars 23 forks source link

Progress on adding some benchmarks to benchpark #317

Open august-knox opened 1 month ago

august-knox commented 1 month ago

Just checking in on some of my progress. I changed quicksilver to run on multiple nodes, and created an implementation of the ior benchmark (not too sure about the FOMs though). I also added remhos, although it is unable to run on the LLNL-Tioga-HPECray-zen3-MI250X-Slingshot system configuration due to issues with the external mvapich package. This seems like a known issue though.

pearce8 commented 1 month ago

Attempting to capture the status on Ruby, Lassen, Tioga. OpenMP versions for 4 benchmarks:

Question about Branson input file:

pearce8 commented 1 month ago

Question about Branson input file:

  • In order to change the load, you must change the number of photons, which is a value specified within the input file. Would you know of any ways to potentially edit the file for each individual run? (if there isn't a natural way to do this, we might ask Branson developers for a parameterized solution).

It sounds like Branson developers use sed. Can you try something like this:

executable('setup_experiment',
           template=[
               'cp {input_path}/* {experiment_run_dir}/.',
               'sed -i "s|<pattern to replace>|<new_pattern>|g" {experiment_run_dir}/<file_name>'
           ])

here’s an example: https://github.com/GoogleCloudPlatform/ramble/blob/develop/var/ramble/repos/builtin/applications/lammps/application.py#L86-L93 alternative option (I am not sure what is better): There is a filter_file method that Ramble and Spack share that is basically a python implementation of sed (but with much better UI). If there’s not a better way to do it, we can parametrize the file in the application.py file and use the filter_file method to apply the parameters. I’d probably inject a new phase into the application definition that calls filter_file after make_experiments and handle generating the parameterize inputs there rather than as part of the experiment. Something like this:

register_phase('parameterize_inputs', pipeline='setup', run_after=['make_experiments'])
def _parameterize_inputs(self, workspace, app_inst=None):
  # Copy input files from the inputs directory to '{experiment_run_dir}'
  filter_file( .... )