We want to start a new project to solve a large-scale inverse problem (O(10^6) number of parameters) to invert for subsurface wave speeds. We will use FEM to solve forward and adjoint PDEs. In our project, we will need to have both sparse and dense solvers. Previously in similar projects, we were using PETSc library but today when I was searching for new libraries, SLATE library came to my attention (link). I was just wondering if there is any comparison between these two libraries from the performance point of view. Perhaps to make this question richer, I know Trilinos is another competitive library, but based on my personal experience and research that I did, I found PETSc is faster while Trilinos is more reliable. Please comment on this if you have any objections.

  • 2
    $\begingroup$ Doesn't PETSc just farm out all of its dense linear algebra to BLAS (which then could in fact be SLATE itself)? $\endgroup$ Nov 25, 2020 at 20:53
  • $\begingroup$ Thank you for your comment. I am not quite sure about that. I know PETSc supports Elemental as well but don't know whether Elemental uses OpenBLAS as a backend or has its own solvers. If they are using the same thing as a backend, PETSc should be faster since it's in C and SLATE is in C++ and may have some related overhead of template programming. $\endgroup$ Nov 25, 2020 at 22:08
  • 5
    $\begingroup$ The belief that C++ is slower than C is an artifact from the 1990s and has not been true for a very very long time. I wished that that notion would finally die. $\endgroup$ Nov 26, 2020 at 3:22
  • $\begingroup$ I thought SLATE focused on dense matrices. PETSc focuses on sparse matrices, although they support outsourcing of dense matrices as noted already. Thus, I’m not sure what performance comparison makes sense. $\endgroup$ Nov 26, 2020 at 19:15


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.