<div dir="ltr"><div><div>Jed,<br><br></div>Thank you for the response. But where exactly are the values from MatSetValues() stored or located? That is, are they in main memory, or are they occupying space in the L1/L2/L3 cache?<br><br></div><div>Thanks,<br></div>Justin<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Apr 26, 2015 at 6:54 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="HOEnZb"><div class="h5">Justin Chang <<a href="mailto:jychang48@gmail.com">jychang48@gmail.com</a>> writes:<br>
<br>
> Hello everyone,<br>
><br>
> Pardon me if this might be a PETSc 101 question, but what exactly is meant<br>
> when routines like MatSetValues() "caches the values"? Specifically, what<br>
> happens say, after I iterate through each element within the<br>
> ComputeJacobian() routine, when I call MatAssemblyBegin/End(). If there's<br>
> documentation or a paper somewhere that explains this that would be very<br>
> helpful, because I can't seem to find anything in the PETSc manual<br>
> describing this process in detail.<br>
<br>
</div></div>The exact protocol probably isn't interesting unless you're trying to<br>
develop something similar, in which case you can read the source code.<br>
The basic idea is that there is a rendezvous so that each process can<br>
determine from which other processes it will need to receive values,<br>
followed by actually sending/receiving those values.<br>
</blockquote></div><br></div>