GIRET Jean-Christophe via petsc-users <petsc-users@mcs.anl.gov> writes:

> Hello,
>
> Thanks Mark and Jed for your quick answers.
>
> So the idea is to define all the Vecs on the world communicator, and perform 
> the communications using traditional scatter objects? The data would still be 
> accessible on the two sub-communicators as they are both subsets of the 
> MPI_COMM_WORLD communicator, but they would be used while creating the Vecs 
> or the IS for the scatter. Is that right?

I would use two global Vecs (on COMM_WORLD) to perform the scatter.
Those global Vec memory can be aliased to Vecs on subcomms with the same
local sizes.

> I’m currently trying, without success, to perform a Scatter from a MPI Vec 
> defined on a subcomm to another Vec defined on the world comm, and 
> vice-versa. But I don’t know if it’s possible.
>
> I can imagine that trying doing that seems a bit strange. However, I’m 
> dealing with code coupling (and linear algebra for the main part of the 
> code), and my idea was trying to use the Vec data structures to perform data 
> exchange between some parts of the software which would have their own 
> communicator. It would eliminate the need to re-implement an ad-hoc solution.
>
> An option would be to stick on the world communicator for all the PETSc part, 
> but I could face some situations where my Vecs could be small while I would 
> have to run the whole simulation on an important number of core for the 
> coupled part. I imagine that It may not really serve the linear system 
> solving part in terms of performance. Another one would be perform all the 
> PETSc operations on a sub-communicator and use “raw” MPI communications 
> between the communicators to perform the data exchange for the coupling part.
>
> Thanks again for your support,
> Best regards,
> Jean-Christophe
>
> De : Mark Adams [mailto:mfad...@lbl.gov]
> Envoyé : mardi 7 mai 2019 21:39
> À : GIRET Jean-Christophe
> Cc : petsc-users@mcs.anl.gov
> Objet : Re: [petsc-users] Question about parallel Vectors and communicators
>
>
>
> On Tue, May 7, 2019 at 11:38 AM GIRET Jean-Christophe via petsc-users 
> <petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov>> wrote:
> Dear PETSc users,
>
> I would like to use Petsc4Py for a project extension, which consists mainly 
> of:
>
> -          Storing data and matrices on several rank/nodes which could not 
> fit on a single node.
>
> -          Performing some linear algebra in a parallel fashion (solving 
> sparse linear system for instance)
>
> -          Exchanging those data structures (parallel vectors) between 
> non-overlapping MPI communicators, created for instance by splitting 
> MPI_COMM_WORLD.
>
> While the two first items seems to be well addressed by PETSc, I am wondering 
> about the last one.
>
> Is it possible to access the data of a vector, defined on a communicator from 
> another, non-overlapping communicator? From what I have seen from the 
> documentation and the several threads on the user mailing-list, I would say 
> no. But maybe I am missing something? If not, is it possible to transfer a 
> vector defined on a given communicator on a communicator which is a subset of 
> the previous one?
>
> If you are sending to a subset of processes then VecGetSubVec + Jed's tricks 
> might work.
>
> https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecGetSubVector.html
>
>
> Best regards,
> Jean-Christophe

Reply via email to