<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: Times New Roman; font-size: 12pt; color: #000066'><P>Jed:</P>
<P> </P>
<P>I just implemented the basic frame of the BSTRM and SBTRM into PETSc. It works not bad on IBM chips, since IBM power chip has a hardware piece called prefetching eninge to hanlde multiple data prefetching streams. The following data shows some initial tests of SpMV on a IBM Power7 machine with one memory controller. You can get the "cfd.2.10" from PETSc group.</P>
<P> </P>
<P>The efficiency of the format depends on the enough cache size and memory bandwidth, power bus rate, and etc. We didn't test it on many Intel and AMD chips yet, although we like to if we can find more machines. I will add in more functions when I have time. If you like, you can add in more functions into it yourself and make it better.  </P>
<P> </P>
<P>Thanks, </P>
<P> </P>
<P>Dahai</P>
<P> </P>
<P>MATRIX: cfd.2.10 with bs = 5 (10 times with warm-up cache)</P>
<P></P>
<P>MPI = 1</P>
<DIV style="FONT-FAMILY: Times New Roman; COLOR: #000066; FONT-SIZE: 12pt">
<DIV style="FONT-FAMILY: Times New Roman; COLOR: #000066; FONT-SIZE: 12pt">
<DIV>--- dt1_BAIJ, dt2_BSTRM = 48726, 28774, <SPAN id=OBJ_PREFIX_DWT40 class=Object><FONT color=#00008b><SPAN id=OBJ_PREFIX_DWT80 class=Object>R = 1</SPAN></FONT></SPAN>.69 </DIV>
<DIV>--- dt1_SBAIJ, dt2_SBSTRM = 48726, 21365, <SPAN id=OBJ_PREFIX_DWT41 class=Object><FONT color=#00008b><SPAN id=OBJ_PREFIX_DWT81 class=Object>R = 2</SPAN></FONT></SPAN>.28 </DIV>
<DIV></DIV>
<DIV>
<P>MPI = 2</P></DIV>
<DIV>--- dt1_BAIJ, dt2_BSTRM = 26877, 16321, <SPAN id=OBJ_PREFIX_DWT42 class=Object><FONT color=#00008b><SPAN id=OBJ_PREFIX_DWT82 class=Object>R = 1</SPAN></FONT></SPAN>.65 </DIV>
<DIV>--- dt1_SBAIJ, dt2_SBSTRM = 26877, 15032, <SPAN id=OBJ_PREFIX_DWT44 class=Object><FONT color=#00008b><SPAN id=OBJ_PREFIX_DWT83 class=Object>R = 1</SPAN></FONT></SPAN>.79 </DIV>
<DIV></DIV>
<DIV>
<P>MPI = 4</P></DIV>
<DIV>--- dt1_BAIJ, dt2_BSTRM = 14978, 10631, <SPAN id=OBJ_PREFIX_DWT46 class=Object><FONT color=#00008b><SPAN id=OBJ_PREFIX_DWT84 class=Object>R = 1</SPAN></FONT></SPAN>.41 </DIV>
<DIV>--- dt1_SBAIJ, dt2_SBSTRM = 14978, 9109, <SPAN id=OBJ_PREFIX_DWT50 class=Object><FONT color=#00008b><SPAN id=OBJ_PREFIX_DWT85 class=Object>R = 1</SPAN></FONT></SPAN>.64 </DIV>
<DIV></DIV>
<DIV>
<P>MPI = 8</P></DIV>
<DIV>--- dt1_BAIJ, dt2_BSTRM = 9071, 9738, <SPAN id=OBJ_PREFIX_DWT54 class=Object><FONT color=#00008b><SPAN id=OBJ_PREFIX_DWT86 class=Object>R = 0</SPAN></FONT></SPAN>.93 (-- not sure why, maybe it is because this P7 chip only has one memory controller )</DIV>
<DIV>--- dt1_SBAIJ, dt2_SBSTRM = 9174, 6329, <SPAN id=OBJ_PREFIX_DWT62 class=Object><FONT color=#00008b><SPAN id=OBJ_PREFIX_DWT87 class=Object>R = 1</SPAN></FONT></SPAN>.45 </DIV>
<DIV><BR></DIV></DIV></DIV>
<P><BR><BR> </P>
<P>
<HR id=zwchr>
</P>
<P><B>From: </B>"Jed Brown" <jed@59A2.org><BR><B>To: </B>"For users of the development version of PETSc" <petsc-dev@mcs.anl.gov><BR><B>Cc: </B>"Dahai Guo" <dhguo@ncsa.uiuc.edu><BR><B>Sent: </B>Monday, May 9, 2011 8:55:47 AM<BR><B>Subject: </B>(S)BSTRM implementations for block sizes other than 4 and 5?<BR><BR>I was curious to try a benchmark, but don't have a problem with these block sizes handy. Are other block sizes planned? Does someone have benchmarks against current (S)BAIJ implementations (with software prefetch)? I've seen the HPCA paper from Guo and Gropp, but I think that work was done before BAIJ had software prefetch, but also perhaps with a version of BSTRM that did not software prefetch, so I wonder how they compare now. Also, how is the performance for multiple processes per socket on Intel and AMD? </P></div></body></html>