Forgive me as my expression "sum up" was misguiding or misplaced, I didn't mean to literally sum the values in the vectors, I meant I want to put all values from each local vector into one global vector that can be accessed by all processes, "COMM_WORLD" communicator for instance
On Tue, Mar 18, 2014 at 3:09 PM, Matthew Knepley <[email protected]> wrote: > On Tue, Mar 18, 2014 at 7:53 AM, Mohammad Bahaa > <[email protected]>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 > -- Mohamamd Bahaa ElDin
