<div dir="ltr">with sequential vectors (ie VECSEQ type), you don't need to call VecAssembly<div>The VecAssembly calls are designed to communicate any off-process value set to the owner process (e.g with VECMPI) or to send the values to the GPU (VECCUDA).</div><div>With VECSEQ, VecSetValues just writes the values you have specified into the raw memory of the vector.<br><div>Anyway, it is good practice to add those calls, if in the future you would like to try a different class (parallel or that uses GPU) for which the VecAssembly call is needed.</div></div></div><br><div class="gmail_quote"><div dir="ltr">Il giorno mar 13 nov 2018 alle ore 17:15 Timothée Nicolas via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Dear all,<div><br></div><div>I realized our code has some calls to VecSetValues not followed by calls to VecAssemblyBegin/VecAssemblyEnd, and no errors are thrown, although the manual says they must be called. The corresponding vectors are sequential vectors created with VecCreateSeq. Is this normal behaviour? Do we still need to call VecAssemblyBegin/End in this case? And btw what does assembly exactly correspond to?</div><div><br></div><div>Best regards</div><div><br></div><div>Timothee</div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Stefano</div>