<div dir="ltr"><div class="gmail_default" style="color:#674ea7">Thanks Lawrence for your suggestion. It did work and the BuildTwoSided time is almost zero now:</div><div class="gmail_default" style="color:#674ea7"><br></div><div class="gmail_default" style="color:#674ea7"><div><span style="color:rgb(181,206,168)"></span></div><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:"Droid Sans Mono","monospace",monospace,"Droid Sans Fallback";font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><div><div class="gmail_default" style="color:rgb(103,78,167)"></div><div class="gmail_default" style="color:rgb(103,78,167)"><div><span style="color:rgb(212,212,212)">BuildTwoSided          </span><span style="color:rgb(181,206,168)">4</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">1.0</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">1.6279e-0310</span><span style="color:rgb(212,212,212)">.1 </span><span style="color:rgb(181,206,168)">0.00e+00</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">0.0</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">2.0e+02</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">4.0e+00</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">4.0e+00</span></div></div><span style="color:rgb(212,212,212)"></span></div><div><span style="color:rgb(212,212,212)">BuildTwoSidedF         </span><span style="color:rgb(181,206,168)">3</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">1.0</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">1.5969e-0310</span><span style="color:rgb(212,212,212)">.5 </span><span style="color:rgb(181,206,168)">0.00e+00</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">0.0</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">2.0e+02</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">3.6e+03</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">3.0e+00</span></div></div></div></div><div class="gmail_default" style="color:#674ea7"><br></div><div class="gmail_default" style="color:#674ea7">Mohammad<br></div><div class="gmail_default" style="color:#674ea7"><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:"Droid Sans Mono","monospace",monospace,"Droid Sans Fallback";font-weight:normal;font-size:14px;line-height:19px;white-space:pre"></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 25, 2021 at 4:54 AM Lawrence Mitchell <<a href="mailto:wence@gmx.li">wence@gmx.li</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
> On 24 Mar 2021, at 01:30, Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> wrote:<br>
> <br>
> This is true, but all the PETSc operations are speeding up by a factor 2x. It is hard to believe these were run on the same machine.<br>
> For example, VecScale speeds up!?!  So it is not network, or optimizations. I cannot explain this.<br>
> <br>
<br>
VecMDot speeds up by a factor of 8!<br>
<br>
Unrelatedly, one thing I see, which _may_ offer potential for much more speedup, is this:<br>
<br>
BuildTwoSided      17548 1.0 4.9331e+00 9.9 0.00e+00 0.0 5.9e+05 4.0e+00 1.8e+04<br>
BuildTwoSidedF     17547 1.0 5.0489e+00 7.3 0.00e+00 0.0 1.2e+06 3.6e+03 1.8e+04<br>
<br>
...<br>
<br>
MatAssemblyBegin   17547 1.0 8.8252e+00 1.1 0.00e+00 0.0 1.2e+06 3.6e+03 1.8e+04<br>
MatAssemblyEnd     17547 1.0 2.6903e+00 2.8 2.79e+07 2.7 2.1e+02 2.0e+02 1.0e+01<br>
<br>
I think these BuildTwoSided calls are coming from the MatAssemblyBegin/End pairs.<br>
<br>
If you preallocate and fill your matrices with zeros in all the possible places that you might end up putting a non-zero, then calling<br>
<br>
MatSetOption(mat, MAT_SUBSET_OFF_PROC_ENTRIES, PETSC_TRUE)<br>
<br>
on the matrix you create will reduce this time in BuildTwoSided to almost zero.<br>
<br>
Lawrence<br>
<br>
</blockquote></div>