<div dir="ltr"><div dir="ltr"><br><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Sep 30, 2021 at 8:39 AM Hannes Phil Niklas Brandt <<a href="mailto:s6hsbran@uni-bonn.de">s6hsbran@uni-bonn.de</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"><u></u><div><div dir="ltr"><p><span style="color:rgb(0,0,0)">
Hello,</span></p><p> </p><p> </p><p><span style="color:rgb(0,0,0)">I
intend to compute a parallel Matrix-Vector-Product (via MPI) and
therefore would like to scatter the entries of the input MPI-Vec v
to
a local vector containing all entries relevant to the current
process. </span></p><p> </p><p><span style="color:rgb(0,0,0)">To
achieve this I tried defining
a VecScatter, which
scatters
from v
to a sequential Vec
v_seq (each process has it's own version of v_seq). However,
storing v_seq (which has one
entry for each global row, thus
containing a large amount of
zero-entries)
may demand too
much storage space (in
comparison to my data-sparse Matrix-Storage-Format).</span> </p></div></div></blockquote><div> What you said is exactly what petsc's MatMult does. It builds a VecScatter object (aij->Mvctx), and has a local vector (aij->lvec). It does not communicate or store unneeded remote entries. The code is at <a href="https://gitlab.com/petsc/petsc/-/blob/main/src/mat/impls/aij/mpi/mmaij.c#L9">https://gitlab.com/petsc/petsc/-/blob/main/src/mat/impls/aij/mpi/mmaij.c#L9</a></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="ltr"><p><span style="color:rgb(0,0,0)">I
am interested in possibilities to scatter v to a sparse Vec-type
to avoid storing unnecessary large
amounts of
zero-entries. Is there a sparse Vector format in Petsc
compatible to
the VecScatter procedure
or is there another efficient way to compute
Matrix-Vector-Products
without usinglarge amounts
of storage space on each process?
</span></p><p> </p><p> </p><p><span style="color:rgb(0,0,0)">Best
Regards</span></p><p><span style="color:rgb(0,0,0)"> Hannes
Brandt</span></p><p><span style="color:rgb(0,0,0)"></span></p></div></div>
</blockquote></div></div>