[petsc-users] prefix (i.e. cumulative) sum

Gideon Simpson gideon.simpson at gmail.com
Tue Feb 14 17:19:37 CST 2017


Yes, that’s the kind of thing that I want.

-gideon

> On Feb 14, 2017, at 5:28 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> 
> 
>> On Feb 14, 2017, at 3:01 PM, Gideon Simpson <gideon.simpson at gmail.com> wrote:
>> 
>> I gather I’d use something like this?
>> 
>> VecGetArray(x, &xarray);
>> VecGetArray(y, &yarray);
>> 
>> MPI_Scan(array, array, nglobal, MPIU_SCALAR, MPI_SUM, PETSC_COMM_WORLD);
>> 
>> VecRestoreArray(x, &xarray);
>> VecRestoreArray(y, &yarray);
> 
>  This definitely won't work!  What do you want to do take a PETSc vector that lies across process and produce a new PETSc vector that lies across processes in the same way but each entry in the new vector contains the sum of the entries "to the left of that entry, plus the current entry" For example
> 
> [1 3 ]   [8 1]
> 
> becomes
> 
> [1 4] [12 13]?
> 
> Where [] represents the values on each process? and you have two processes in this example.
> 
> Barry
> 
> 
> 
>> 
>> 
>> -gideon
>> 
>>> On Feb 14, 2017, at 3:48 PM, Matthew Knepley <knepley at gmail.com> wrote:
>>> 
>>> On Tue, Feb 14, 2017 at 2:46 PM, Gideon Simpson <gideon.simpson at gmail.com> wrote:
>>> Is there a clever way to handle a prefix (cumulative) sum in petsc?  I think I can see how to do with using some underlying MPI, but I was wondering if there were some built in routines that could be useful.
>>> 
>>> It is one MPI call (MPI_Scan), but you could do it by assigning sizes to a PetscLayout (which is how I have done it several places).
>>> 
>>>  Thanks,
>>> 
>>>    Matt
>>> 
>>> -gideon
>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> 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/20170214/6375d116/attachment.html>


More information about the petsc-users mailing list