The SPIKE algorithm is a hybrid parallel solver for narrow-banded linear systems developed by Eric Polizzi and Ahmed Sameh.[1][2]
Description
The SPIKE algorithm deals with a linear system AX = F, where A is a banded
matrix of bandwidth much less than
, and F is an
matrix containing
right-hand sides. It is divided into a preprocessing stage and a postprocessing stage.
Preprocessing stage
In the preprocessing stage, the linear system AX = F is partitioned into a block tridiagonal form
.
Assume, for the time being, that the diagonal blocks Aj (
) are nonsingular. Define a block diagonal matrix
- D = diag(A1,…,Ap),
then D is also nonsingular. Left-multiplying D−1 to both sides of the system gives
,
which is to be solved in the postprocessing stage. Due to the narrow-banded nature of A, only a few leftmost columns of each Vj and a few rightmost columns of each Wj can be nonzero. These columns are called spikes.
Postprocessing stage
Without loss of generality, assume that each spike contains exactly
columns (
is much less than
) (pad the spike with columns of zeroes if necessary). Partition the spikes in all Vj and Wj into
and 
where V (t)
j , V (b)
j , W (t)
j and W (b)
j are of dimensions
. Partition similarly all Xj and Gj into
and
.
Notice that the system produced by the preprocessing stage can be reduced to a block pentadiagonal system of much smaller size (recall that
is much less than
)
.
Once all X (t)
j and X (b)
j are found, all X′j can be recovered via

SPIKE as a polyalgorithm
Despite being logically divided into two stages, computationally, the SPIKE algorithm comprises three stages:
- LU-factorizing the diagonal blocks,
- computing the spikes,
- solving the reduced system.
Each of these stages can be accomplished in several ways, allowing a multitude of variants. Two notable variants are the recursive SPIKE algorithm for non-diagonally-dominant cases and the truncated SPIKE algorithm for diagonally-dominant cases. In particular, the former uses LU factorization without pivoting but a diagonal boosting strategy to handle the cases where the block diagonal matrix D is singular.
Implmentations
Intel offers an implementation of the SPIKE algorithm under the name Intel Adaptive Spike-Based Solver.[3]
References
- ^ Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1016/j.parco.2005.07.005, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1016/j.parco.2005.07.005 instead.
- ^ Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1016/j.compfluid.2005.07.005, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1016/j.compfluid.2005.07.005 instead.
- ^ "Intel® Adaptive Spike-Based Solver - Intel® Software Network". Retrieved 2009-03-23.