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);


-gideon

> On Feb 14, 2017, at 3:48 PM, Matthew Knepley <[email protected]> wrote:
> 
> On Tue, Feb 14, 2017 at 2:46 PM, Gideon Simpson <[email protected] 
> <mailto:[email protected]>> 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

Reply via email to