<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 7, 2014 at 4:40 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="">Mani Chandra <<a href="mailto:mc0710@gmail.com">mc0710@gmail.com</a>> writes:<br>
<br>
> I have a heavy residual evaluation function which I cannot seem to<br>
> vectorize at all, so then I tried changing the global data layout putting<br>
> each variable in a contiguous chunk and it finally does vectorize.<br>
<br>
</div>I suggest locally extracting from interlaced to fill vector registers at<br>
the cell level (e.g., group of a 4 cells).  The memory performance<br>
(number of streams and cache reuse) is better with interlaced and if you<br>
have enough flops that local vectorization matters, packing will be<br>
cheap.<br>
</blockquote></div><br>This is EXACTLY what you should do, and what PetscFE does now.</div><div class="gmail_extra"><br></div><div class="gmail_extra">   Matt<br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>