Task-based sparse Matrix-Vector Multiplication (spMVM)
This branch implements task-based spMVM to overlap MPI communication with local computation.
- When running a single MPI process with multiple threads thread 0 will not act as a worker thread. For scaling with a single MPI process this means that only t-1 threads are actively sharing work when OMP_NUM_THREADS=t.
- Single-MPI mode does not work with Eisenstat preconditioner.