Performance monitoring
You can follow the performance of Eigen along its development there:
- Skylake-AVX512, clang7.0
- Haswell-FMA, Apple’s clang
- Haswell-FMA, GCC6
- SandyBridge-AVX, GCC5
- SandBridge-AVX, clang3.8
Run those tests on your own computer
Generating those graph for your own computer and compiler flags is
fairly easy. From Eigen’s sources, make a copy of
script/eigen_monitor_perf.sh to some location, adjust the different
variables to match your setup, update the rsync and ssh lines if you
want to upload the graph to your own server (or comment them if you
don’t want to share your results), and then run the script. That’s all.
The charts are generated in
$EIGEN_SOURCE_PATH/bench/perf_monitoring/$PREFIX/.
When running those benchmarks, make sure to disable turbo-boost and, on Linux, to enable the performance cpu governor.
If you re-run the script, only new changesets will be updated. To reduce
system noise, you can re-run the script multiple times with the -up
command-line option to enforce the recomputation of the benchmarks: each
measure will be replaced by the best of the old and new run. You can
also update a subset of the revisions by passing the
-s rev1 rev2 rev3 ... command-line option (the two options are
exclusive).
Customization
- You can adjust the matrix/vector sizes by editing the files
*_settings.txt. - You can add/remove changesets by editing the
changesets.txtfile. - You can run the benchmarks manually with:
CXX=... CXX_FLAGS="..." $EIGEN_SOURCE_PATH/bench/perf_monitoring/run.sh test_name
where test_name must be replaced by one of the tests present in
bench/perf_monitoring/*.cpp. You can also pass the -up or
-s rev1 rev2 ... options to this script.