Spark98: Sparse Matrix Kernels for Shared Memory and Message Passing Systems As you know, it's always hard to find examples of sparse parallel codes that are realistic and yet still small enough for one person to understand, modify, and experiment with. Well, worry no more! I've released a set of 10 sparse matrix kernels (called Spark98) for shared memory and message passing systems that are designed to help developers of parallel computers, DSM libraries, message passing libraries, and parallelizing compilers understand the performance of sparse codes on their systems. The kernels are realistic (the matrices come from unstructured finite element earthquake simulations of the San Fernando Valley), short (each is about 1000 lines of code, most of which parse the input file), and portable (ANSI C + SGI threads, Posix threads, or MPI). They can be downloaded from www.cs.cmu.edu/~quake/spark98.html Each kernel consists of a program and an unstructured finite element mesh that defines a sparse matrix. There are 5 programs and 2 meshes for a total of 10 kernels. Each program computes the same sequence of sparse matrix vector product (SMVP) operations using a block symmetric sparse matrix where each entry is a 3x3 submatrix of double precision floating point numbers. The symmetry of the matrix is exploited to conserve memory, which makes the code challenging to parallelize because each nonzero coefficient contributes to two different entries in the output vector. The programs compute identical results and differ only in the way they are parallelized. Smv is the baseline sequential program. Lmv is a shared memory program based on locks. Rmv is a shared memory program based on reductions. Mmv is a message passing program based on a sophisticated precomputed mesh partition. Hmv is a hybrid that is written in a message passing style but uses shared memory copy operations instead of sends and recieves to transfer the data. The companion tech report on the Web page has more info and gives performance numbers on a SGI Power Challenge. I hope the Spark98 kernels are helpful to your research. Let me know if you have any questions or comments. Dave -- David R. O'Hallaron, Research Computer Scientist -- School of Computer Science, Carnegie Mellon Univ, -- 5000 Forbes Avenue, Pittsburgh, PA 15213-3891 -- phone: (412)268-8199 email: droh@cs.cmu.edu -- fax : (412)268-5576 web : http://www.cs.cmu.edu/~droh/