Compare System Specs

lib/scripts/diffSystemSpecs.py

Compare two system specs .yaml files generated by benchpark system init. This script enables the user to compare changes to a system.py between commits by comparing .yaml files generated from benchpark system init .... This script is helpful when it is unclear if changes made to system.py will affect the resulting system configuration.

Stages that occur during this script:
  • benchpark system init

Example: Identical System

In this example, we compare the llnl-sierra/system.py on the develop branch against the develop branch. As we expect, the generated system configuration files are identical, since no changes were made to the system.py

$ benchpark-python diffSystemSpecs.py -n develop -s llnl-sierra

llnl-sierra
     llnl-sierra/system_id.yaml
             The YAML files benchpark-old/llnl-sierra/system_id.yaml and benchpark-new/llnl-sierra/system_id.yaml are identical.
     llnl-sierra/software.yaml
             The YAML files benchpark-old/llnl-sierra/software.yaml and benchpark-new/llnl-sierra/software.yaml are identical.
     llnl-sierra/variables.yaml
             The YAML files benchpark-old/llnl-sierra/variables.yaml and benchpark-new/llnl-sierra/variables.yaml are identical.
     llnl-sierra/auxiliary_software_files/packages.yaml
             The YAML files benchpark-old/llnl-sierra/auxiliary_software_files/packages.yaml and benchpark-new/llnl-sierra/auxiliary_software_files/packages.yaml are identical.
     llnl-sierra/auxiliary_software_files/compilers.yaml
             The YAML files benchpark-old/llnl-sierra/auxiliary_software_files/compilers.yaml and benchpark-new/llnl-sierra/auxiliary_software_files/compilers.yaml are identical.

Example: Different CMake Version

In another example, we have modified the cmake package version from 3.29.2 to 3.23.1.

# llnl-sierra/system.py
"cmake": {
   "externals": [
      {
            "spec": "cmake@3.23.1",
            "prefix": "/usr/tce/packages/cmake/cmake-3.23.1",
      }
   ],
   "buildable": False,
},

The script will appropriately identify the change to the package version:

$ benchpark-python diffSystemSpecs.py -n changeCMakeBranch -s llnl-sierra

llnl-sierra
     llnl-sierra/system_id.yaml
             The YAML files benchpark-old/llnl-sierra/system_id.yaml and benchpark-new/llnl-sierra/system_id.yaml are identical.
     llnl-sierra/software.yaml
             The YAML files benchpark-old/llnl-sierra/software.yaml and benchpark-new/llnl-sierra/software.yaml are identical.
     llnl-sierra/variables.yaml
             The YAML files benchpark-old/llnl-sierra/variables.yaml and benchpark-new/llnl-sierra/variables.yaml are identical.
     llnl-sierra/auxiliary_software_files/packages.yaml
             The YAML files benchpark-old/llnl-sierra/auxiliary_software_files/packages.yaml and benchpark-new/llnl-sierra/auxiliary_software_files/packages.yaml are different. Here are the differences:
               {'values_changed': {"root['packages']['cmake']['externals'][0]['prefix']": {'new_value': '/usr/tce/packages/cmake/cmake-3.23.1',
                                                                                          'old_value': '/usr/tce/packages/cmake/cmake-3.29.2'},
                                 "root['packages']['cmake']['externals'][0]['spec']": {'new_value': 'cmake@3.23.1',
                                                                                       'old_value': 'cmake@3.29.2'}}}
     llnl-sierra/auxiliary_software_files/compilers.yaml
             The YAML files benchpark-old/llnl-sierra/auxiliary_software_files/compilers.yaml and benchpark-new/llnl-sierra/auxiliary_software_files/compilers.yaml are identical.

Note

This script does not need to be ran on the target system to work correctly, e.g. the above example for llnl-sierra can be ran from your local machine.