[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Interlaced vectors.



  You can simply create the vector with VecCreateGhost() with 
n and N 3 times as big, nghost 3 times as big and the 
ghosts[] array three times as long. (filled with 3*ghosts[0], 
3*ghosts[0]+1,3*ghosts[0]+2,3*ghosts[1],3*ghosts[1]+1,3*ghosts[1]+2, etc
where ghosts is what you use currently.

   Barry

On Thu, 5 Jul 2007, billy@xxxxxxxxxxxxx wrote:

> 
> Right now, they are 3 separate VecCreateGhost that are updated at the same time 
> using 3 calls to VecGhostUpdateBegin and VecGhostUpdateEnd. I read that putting 
> them into a single call might accelerate communication. The question what is 
> the best way to do this? 
> 
> Billy.
> 
> 
> Citando Lisandro Dalcin <dalcinl@xxxxxxxxx>:
> 
> > On 7/4/07, billy@xxxxxxxxxxxxx <billy@xxxxxxxxxxxxx> wrote:
> > > Hi,
> > >
> > > I have a velocity vector (u,v,w) with 3 updates. Is there an efficient way
> > to
> > > interlace the 3 vectors into 1 update without creating a new data
> > structure?
> > 
> > Look at VecStrideScatter, but not sure exactly what you need. Can
> > elaborate a bit more? What are x,u,v? Sepparate PETSc Vec's, or just a
> > Vec with consecutive entries?
> > 
> > -- 
> > Lisandro Dalcín
> > ---------------
> > Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
> > Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
> > Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
> > PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> > Tel/Fax: +54-(0)342-451.1594
> > 
> > 
> 
> 
>