If there is a minimal performance oriented test of this function, I can ask the compiler team to study it w.r.t. unrolling heuristics.<span></span><div><br></div><div>Jeff <br><br>On Wednesday, September 28, 2016, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
Mr Hong Zhang has found that removing the manual unrolling from MatMult_SeqAIJ_Inode() (at least with inode size 2) results in a good bump in performance on KNL and pointed me to the Intel gospel <a href="https://software.intel.com/en-us/articles/avoid-manual-loop-unrolling" target="_blank">https://software.intel.com/en-<wbr>us/articles/avoid-manual-loop-<wbr>unrolling</a> which we've always ignored in the past. It would be good try the unrolled and non-unrolled also on Xeon.<br>
<br>
We've never done a good job of managing our unrolling, where, how and when we do it and macros for unrolling such as PetscSparseDensePlusDot. Intel would say just throw it all away.<br>
<br>
Barry<br>
<br>
<br>
<br>
</blockquote></div><br><br>-- <br>Jeff Hammond<br><a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br><a href="http://jeffhammond.github.io/" target="_blank">http://jeffhammond.github.io/</a><br>