<div class="gmail_quote">On Sat, Aug 27, 2011 at 13:04, Milan Mitrovic <span dir="ltr">&lt;<a href="mailto:milan.v.mitrovic@gmail.com">milan.v.mitrovic@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div id=":w5">well... I added matrix elements by row (~150 nonzero elements) but I<br>
have 7.5k rows per processor... I know the exact nonzero pattern and I<br>
preallocated the storage so it is not that... and its all done<br>
locally... I couldn&#39;t insert blocks because there is no common<br>
structure to the nonzero pattern of different rows...<br>
<br>
so to me it seems that creating the matrix like this should be fast...<br>
computing the values took &lt;3 seconds but the setvalues routine took<br>
more than a minute!</div></blockquote></div><br><div>Preallocation must have been wrong. Perhaps it was destroyed/ignored by calling the function too early (the matrix type has to be set _before_ preallocation). Try MatSetOption(A,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_TRUE) and run in a debugger to see where new entries are being allocated. With petsc-dev, you can just run with -mat_new_nonzero_allocation_err.</div>