[petsc-users] Custom vector owenrship ranges

Mohammad Bahaa m.bahaa.eldein at gmail.com
Tue Mar 18 11:00:58 CDT 2014


I used
call VecCreateMPIWithArray(PETSC_COMM_WORLD,1,nc,ncall,myx,xall,ierr)

however, when I use process 0 to write a file containing the combined
values (the xall vector), the values seem not to be updated by some
processes, eventhough I use PetscBarrier, in other words, values locally
owned by processes 0 and 2 are ok, but those owned by process 1 & 3 aren't !


On Tue, Mar 18, 2014 at 3:43 PM, Mohammad Bahaa <m.bahaa.eldein at gmail.com>wrote:

> the second approach of the MPI vector did it for me, thanks
>
>
> On Tue, Mar 18, 2014 at 3:20 PM, Mohammad Bahaa <m.bahaa.eldein at gmail.com>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 <knepley at gmail.com>wrote:
>>
>>> 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
>>>
>>
>>
>>
>> --
>> Mohamamd Bahaa ElDin
>>
>
>
>
> --
> Mohamamd Bahaa ElDin
>



-- 
Mohamamd Bahaa ElDin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140318/733c9979/attachment.html>


More information about the petsc-users mailing list