Solving sparse linear systems is a crucial step in many applications.
Very often, banded linear systems play a critical role there.
For example, they arise frequently after a general sparse system is reordered
in some fashion. In other instances, they are constructed as effective preconditioners
to general sparse systems where they are solved via iterative methods.
Existing parallel software using direct methods for banded matrices are mostly
based on LU factorization. In contrast, SPIKE
is based on a "DS" decomposition method that naturally leads to lower
communication cost at the expense of increased arithmetic cost. This tradeoff
is advantageous in modern architectures where the increase in arithmetic
performance outpaces memory performance.
The current SPIKE package supports the Intel64 architecture on Linux. The solver uses MPI to express parallelism so a standard-compliant MPI implementation is required. Libraries are provided to work either using Intel Fortran or gfortran and C compilers.
Frequently Asked Questions
Q: Why do I want to use this solver?
A: The SPIKE Solver offers superior parallel scalability compared with alternatives such as the band solver in ScaLAPACK. The good scalability is mainly due to algorithm differences as opposed to implementation technique.
Q: Does the SPIKE Solver require MPI?
A: Yes. SPIKE is a parallel library that uses MPI.
Q: What happens if the SPIKE solver is invoked with only one process?
A: SPIKE is a parallel library. At least two MPI processes are required for parallel computation. The solver will fall-through to LAPACK if launched with only one process.