On Thu, May 5, 2011 at 23:15, Paul Monday (Parallel Scientific) <
paul.mon...@parsci.com> wrote:

> Hi, I'm hoping someone can help me locate a SpMV benchmark that runs w/
> Open MPI so I can benchmark how my systems are interacting with the network
> as I add nodes / cores to the pool of systems.  I can find SpMV benchmarks
> for single processor / OpenMP all over, but these networked ones are proving
> harder to come by.  I located Lis (http://www.ssisc.org/lis/) but it seems
> more of a solver then a benchmarking program.
>

I would suggest using PETSc. It is a solvers library rather than a contrived
benchmark suite, but the examples give you access to many different matrices
and you can use many different formats without changing the code. If you run
with -log_summary, you will get a useful table showing the performance of
different operations (time/balance/communication/reductions/flops/etc). Also
note that SpMV is usually not an end in its own right, usually it is part of
a preconditioned Krylov iteration, so the performance of all the pieces
matter.

If you are concerned with absolute performance then you should consider
using petsc-dev since it tends to have better memory performance due to
software prefetch. This is important for good reuse of high-level caches
since otherwise the matrix entries flush out the useful stuff. It usually
makes between a 20 and 30% improvement, a bit more for some symmetric and
triangular kernels. Many of the sparse matrix kernels did not have software
prefetch as of the 3.1 release. Remember:

"The easiest way to make software scalable is to make it sequentially
inefficient." (Gropp, 1999)

Reply via email to