[Trilinos-Users] Cache performance of Trilinos MatVec

Heroux, Michael A maherou at sandia.gov
Mon Aug 3 23:12:21 MDT 2009


Please send a bit more detail, perhaps off-list, and I can look at it.  I have been working with OSKI myself lately.

CMake support of additional features is growing but not complete.  If we don't get them all in right away, there is always the manual definition of CXXFLAGS, etc. to help us in the mean time.



On 8/3/09 6:07 PM, "James C. Sutherland" <James.Sutherland at utah.edu> wrote:

Mike et al,

I have tried building trilinos with OSKI.  It appears that the OSKI examples are not built (at least in 9.0.2 which I am using).  Do you have local builds or regression tests that are functional with OSKI?  Is there a way of building the examples through the trilinos build system?

I am having runtime errors when trying to use OSKI matrices rather than CRS matrices in my application.  I am trying to discern whether this is a problem in my usage of Epetra_OskiMatrix or if there is a problem in the trilinos interface to OSKI.

FYI, it looks like the new CMake build system is even less aware of OSKI.


James C. Sutherland
Assistant Professor, Chemical Engineering
The University of Utah
50 S. Central Campus Dr, 3290 MEB
Salt Lake City, UT 84112-9203
(801) 585-1246
http://www.che.utah.edu/~sutherland <http://www.che.utah.edu/~sutherland>

On Jun 10, 2009, at 8:16 AM, Heroux, Michael A wrote:


 As Alan mentioned, sparse MV is notorious for poor cache performance.  Some of the best work in addressing this issue has been done by the BeBOP project at UC-Berkeley in the OSKI library.  Epetra can use OSKI for sparse operations via Epetra_Oski* classes.  These classes rely on the OSKI library (which you download and build yourself).  The following tech report describes the interface and performance results:


 You might also consider the Epetra_JadMatrix class, which can work well on the latest microprocessors that support streaming well.  Epetra_JadMatrix can be especially useful for very sparse matrices (the 3-4 nonzeros per row collections you have).  It is a just a few line change to your code to try these options.


 On 6/10/09 9:01 AM, "Alan Williams" <william at sandia.gov> wrote:

 For matrix-vector product y = A*x, the core of the sparse matvec is a statement like this:
   y[i] += Acoefs[j]*x[Acols[j]]

 So depending on how the column-indices of A are ordered, lots of cache misses in the x vector could occur.
 A matrix reordering may help in some cases.


 > -----Original Message-----
 > From: trilinos-users-bounces at software.sandia.gov
 > [mailto:trilinos-users-bounces at software.sandia.gov] On Behalf
 > Of James C. Sutherland
 > Sent: Tuesday, June 09, 2009 5:23 PM
 > To: trilinos-users at software.sandia.gov
 > Subject: [Trilinos-Users] Cache performance of Trilinos MatVec
 > Does anyone know if there has been a study of, or effort to
 > optimize,
 > cache performance of MatVec operations in Trilinos?
 > Specifically, I am finding that epetra_dcrsmv (sparse matvec) has
 > extremely bad cache performance (lots of cache misses) on an intel
 > chipset that I have.  This seems to be problematic for a range of
 > matrix sizes.  I have very sparse matrices (3-10 nonzero entries per
 > row), and these can range in size from O(10^2-10^10^5) rows.
 > Any thoughts?
 > James
 > _______________________________________________
 > Trilinos-Users mailing list
 > Trilinos-Users at software.sandia.gov
 > http://software.sandia.gov/mailman/listinfo/trilinos-users
 Trilinos-Users mailing list
 Trilinos-Users at software.sandia.gov

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://software.sandia.gov/pipermail/trilinos-users/attachments/20090803/55a2baa5/attachment.html 

More information about the Trilinos-Users mailing list