Tpetra: Establish baseline for performance of solver kernels
Created by: mhoemmen
@trilinos/tpetra Epic: #820 (@jjellio, I can't assign you yet, but I will :-) See #819 (closed).)
Establish baseline performance of Tpetra's solver kernels, by comparing their performance against that of a reference (single-threaded CPU) implementation. Here are some options for the reference implementation:
- Hand-written simple C or Fortran code (use C or Fortran to forestall complaints that "C++ is slow"; if C, build with a C compiler)
- Epetra/AztecOO (be sure to set
Trilinos_ENABLE_OpenMP:BOOL=OFF
, else Epetra may use OpenMP for sparse mat-vec and axpy (vector add) by default) - PETSc
- Hypre (be sure to disable OpenMP, since Hypre may use OpenMP in some places)
Focus on solve, though setup comparisons would be interesting too (use Epetra/AztecOO, PETSc, or Hypre for this). See parent epic #820 for list of kernels.
If we take the "hand-written C or Fortran" approach, here is a way to avoid writing lots of C or Fortran utilities:
- Use the convenient Tpetra utilities to read e.g., a Matrix Market sparse matrix file
- Dump out as binary whatever data we need for C or Fortran
- Load those data into the (separate) C or Fortran executable