<div class="gmail_quote">On Sat, Jan 28, 2012 at 11:50, Stefano Zampini <span dir="ltr"><<a href="mailto:stefano.zampini@gmail.com">stefano.zampini@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":26y">I was able to reproduce the error using src/ksp/ksp/examples/tutorials/ex2.c using the patch attached.<br>Please see the error log obtained by executing with -n 10 -m 10 by command line.<br>If you uncomment MatGetOwnershipRange, the code will work fine</div>
</blockquote></div><br><div>Okay, sorry. You can't get away with not calling anything that is "maybe collective" before inserting values. Just call MatSetUpPreallocation() before inserting values.</div><div>
<br></div><div>The problem is this: deadlock is possible if we make setting preallocation automatic on the first call to MatSetValues() because if some procs don't own any rows, they might not set any values. That scenario is most likely to occur on coarse levels when running at large scale where it is hard to debug and might burn up allocation while deadlocked. So you have to be explicit about when preallocation occurs so that MatSetValues() is never collective.</div>