ukri-excalibur / excalibur-tests

Performance benchmarks and regression tests for the ExCALIBUR project
https://ukri-excalibur.github.io/excalibur-tests/
Apache License 2.0
19 stars 16 forks source link

Benchmarking results post-processing #70

Open ilectra opened 1 year ago

ilectra commented 1 year ago

When a benchmark is run, it generates a number of outputs: perflogs and environment logs. Those files have to be moved to an appropriate location (see #16 ), and then we'd like to provide some generic tools/scripts for the users to process them and produce tables and plots. The intention is for the scripts provided in this repository to be quite basic, and the user would clone/fork it and add their own. Scripts needed:

tkoskela commented 1 year ago

@t-young31 has done more work on this in the DiRAC project than I had realised. As far as I can understand, he has already written a lot of the code needed for parsing the perflogs and plotting data for different use cases. His feedback was

  1. It was difficult for the plotting tool to be generic because there are too many variables to plot (compiler version, library versions, clusters, env variables, etc.)
  2. It was not clear what the use cases are
ilectra commented 1 year ago

Need to save spack spec as well. There's a hash for every spec, save it in the perflog as a field, as well as the spec in a separate file (name same as hash for simplicity) which will be updated only when something changes.

ilectra commented 1 year ago

Different ways to print results in the perflog:

After some tests, to see what's printed to the perflog for parameters and various names, the content of perflogs/myriad/compute-node/SombreroBenchmark_One_5.log is 2023-03-07T16:41:24|reframe 3.12.0|SombreroBenchmark %param_test1=One %param_test2=5 @myriad:compute-node+default|jobid=3420395|flops=1.07|num_tasks=1|num_cpus_per_task=1|num_tasks_per_node=1|ref=1|lower=-0.2|upper=null|units=Gflops/seconds|spack_spec=sombrero@2021-08-16|name=SombreroBenchmark_One_5|display_name=SombreroBenchmark %param_test1=One %param_test2=5|short_name=null|unique_name=SombreroBenchmark_One_5|descr=SombreroBenchmark %param_test1=One %param_test2=5|variables={"OMP_NUM_THREADS": "1"}|tags= Note: This naming scheme changes with ReFrame version 4.0, see https://reframe-hpc.readthedocs.io/en/stable/manpage.html#test-naming-scheme

ilectra commented 1 year ago

For posterity, some of Tom's DiRAC work is in Lokesh's repo - the reading in the perflog part.

ilectra commented 1 year ago

Created a bunch of sub-issues to this one: #104 , #105 , #106, #107 , #108, #109 , #110