Initial step toward continuous benchmarking
This MR sets a performance evaluation framework for PETSc's SpMV kernels. It can be easily extended to solvers and other components. The workflow follows the Ginkgo project and reuses its web application that facilitates interactive analysis of performance data. This allows us to compare directly with published Ginkgo results.
- Set up
ARCHIVE_LOCATION
in the utility scriptssget
(used to download SuiteSparse matrices automatically). - Compile the driver
PetscSpMV
undersrc/benchmarks
and run the benchmark scriptrun_petsc_benchmarks.sh
. Performance results as well as the meta data will be saved as json files in a structured folder
results
└── cuda
└── SuiteSparse
├── ACUSIM
│ └── Pres_Poisson.json
├── Alemdar
│ └── Alemdar.json
├── AMD
│ ├── G2_circuit.json
│ └── G3_circuit.json
├── Andrews
│ └── Andrews.json
- The json files can be parsed and visualized by Ginkgo performance explorer https://ginkgo-project.github.io/gpe/ Scripts and examples can be found at https://github.com/caidao22/petsc-data The figure generated shows that cuSPARSE's SpMV is significantly faster than the Kokkos' SpMV (configured with TPL turned off).