the second approach of the MPI vector did it for me, thanks
On Tue, Mar 18, 2014 at 3:20 PM, Mohammad Bahaa <[email protected]>wrote: > 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 > -- Mohamamd Bahaa ElDin
