
Many large scale computation problems are sparse matrix inversions of one kind or another. And the way to parallelize, or Beowulfize them, is to take a matrix shaped like this, , and split it like this: . Each portion of the matrix is assigned to a single process that then goes through the matrix in some iteration (Jacobi, GaussSeidell, Successive Over Relaxation, et cetera). Note that I am signifying the sparsity of the matrix by making the rectangle thin. The next thing to do is this: . Here we are assigning the portions of each matrix section that each process has to share with its neighbor: . What I would like to do is to be able to write the set of procedures that do this in a way that will enable others not to have to rewrite the wheel. Hence my libstripe effort. Libstripe wants to be independent of the structure of the sparse matrix. It works on the assumption that the matrix rows have some sort of defined coherent organization and proceeds from there. Now, in most cases, we can rationally expect each process in this lineup to be dependent only on its neighbors for continued work on its dataset. 
