1# libCEED Benchmarks 2 3This directory contains benchmark problems for performance evaluation of libCEED 4backends. 5 6## Running the Benchmarks 7 8Example: 9```sh 10benchmark.sh -c /cpu/self -r petsc-bp1.sh -n 16 -p 16 11``` 12where the option `-c <specs-list>` specifies a list of libCEED specs to 13benchmark, `-n 16` is the total number of processors and `-p 16` is the number 14of processors per node. 15 16Multiple backends and multiple processor configurations can be benchmarked with: 17```sh 18benchmark.sh -c "/cpu/self /cpu/self/blocked" -r petsc-bp1.sh -n "16 32 64" -p "16 32 64" 19``` 20 21The results from the benchmarks are written to files named `*-output.txt`. 22 23For a short help message, use the option `-h`. 24 25When running the tests `petsc-bp1.sh` and `petsc-bp3.sh`, the following 26variables can be set on the command line: 27* `max_dofs_node=<number>`, e.g. `max_dofs_node=1000000` - this sets the upper 28 bound of the problem sizes, per compute node; the default value is 3*2^20. 29* `max_p=<number>`, e.g. `max_p=12` - this sets the highest degree for which the 30 tests will be run (the lowest degree is 1); the default value is 8. 31 32## Post-processing the results 33 34After generating the results, use the `postprocess-plot.py` script (which 35requires the python package matplotlib) or the `postprocess-table.py` script, 36e.g.: 37```sh 38python postprocess-plot.py petsc-bp1-output.txt 39``` 40The plot ranges and some other options can be adjusted by editing the values 41in the beginning of the script `postprocess-plot.py`. 42 43Note that the `postprocess-*.py` scripts can read multiple files at a time just 44by listing them on the command line and also read the standard input if no files 45were specified on the command line. 46