On Sat, Apr 30, 2011 at 12:58 PM, Tabrez Ali <span dir="ltr">&lt;<a href="mailto:stali@geology.wisc.edu">stali@geology.wisc.edu</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Petsc Developers/Users<br>
<br>
I having some performance issues with preallocation in a fully unstructured FE code. It would be very helpful if those using FE codes can comment.<br>
<br>
For a problem of size 100K nodes and 600K tet elements (on 1 cpu)<br>
<br>
1. If I calculate the _exact_ number of non-zeros per row (using a running list in Fortran) by looping over nodes &amp; elements, the code takes 17 mins (to calculate nnz&#39;s/per row, assemble and solve).<br>
2. If I dont use a running list and simply get the average of the max number of nodes a node might be connected to (again by looping over nodes &amp; elements but not using a running list) then it takes 8 mins<br>
3. If I just magically guess the right value calculated in 2 and use that as average nnz per row then it only takes 25 secs.<br>
<br>
Basically in all cases Assembly and Solve are very fast (few seconds) but the nnz calculation itself (in 2 and 3) takes a long time. How can this be cut down? Is there a heuristic way to estimate the number (as done in 3) even if it slightly overestimates the nnz&#39;s per row or are efficient ways to do step 1 or 2. Right now I have do i=1,num_nodes; do j=1,num_elements ... which obviously is slow for large number of nodes/elements.<br>
</blockquote><div><br></div><div>If you want to see my code doing this, look at</div><div><br></div><div>  include/petscdmmesh.hh:preallocateOperatorNew()</div><div><br></div><div>which handles the determination of nonzero structure for a FEM operator. It should look mostly</div>
<div>like your own code.</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Thanks in advance<br><font color="#888888">
Tabrez<br>
</font></blockquote></div><br><br clear="all"><br>-- <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<br>