[petsc-users] Custom vector owenrship ranges

Matthew Knepley knepley at gmail.com
Tue Mar 18 08:09:28 CDT 2014


On Tue, Mar 18, 2014 at 7:53 AM, Mohammad Bahaa <m.bahaa.eldein at gmail.com>wrote:

> I'm using "PETSC_COMM_SELF" communicator for running n serial independent
> processes, I need to sum up a certain vector from the n processes in one
> vector, however, vectors involved in each process vary in size, and I
> couldn't find any function to define custom ownership ranges, so assuming I
> have a 4 processes run with each computing an "x" vector as follows:
>
> 1. process (1) with x of length 51
> 2. process (2) with x of length 49
> 3. process (3) with x of length 52
> 4. process (4) with x of length 48
>

Let your local length be n, so that on proc 3 n== 52. Then

  VecCreate(comm, &v);
  VecSetSizes(v, n, PETSC_DETERMINE);
  VecSetFromOptions(v);
  <fill up v>
  VecSum(v, &sum);

You could also make a parallel Vec from your Seq vecs:

  VecGetArray(lv, &array);
  VecCreateMPIWithArray(comm, 1, n, PETSC_DETERMINE, array, &v);

  Thanks,

     Matt


> The processes sum up to 100 elements, when I define a vector "x_all" of
> size "100" with "PETSC_COMM_WORLD" communicator, the ownership ranges are
> equal, which isn't the case, how to customize them ?
>
> --
> Mohamamd Bahaa ElDin
>



-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140318/39f2d084/attachment.html>


More information about the petsc-users mailing list