[petsc-users] PetscObjectGetComm

Patrick Sanan patrick.sanan at gmail.com
Wed Apr 22 08:55:16 CDT 2020


Perhaps the confusion here is related to the fact that an MPI_Comm is not
an integer identifying the communicator. Rather,
it's a pointer to a data structure which contains information about the
communicator (I'm not positive but probably something like this
<https://github.com/pmodels/mpich/blob/master/src/include/mpir_comm.h#L150>
).

You're converting that pointer to an int and printing it out. The value
happens to be the same on all ranks except 0, but this
doesn't directly tell you anything about equality of the MPI_comm objects
that those pointers point to.

Am Mi., 22. Apr. 2020 um 15:28 Uhr schrieb Matthew Knepley <
knepley at gmail.com>:

> On Wed, Apr 22, 2020 at 3:07 AM Marius Buerkle <mbuerkle at web.de> wrote:
>
>> I see, but I am still puzzeled, why are the communicators different on
>> different notes eventhough it is the same object.
>>
>
> This is the output of MPI_Comm_dup() on line 126 of tagm.c. Therefore, dup
> comms are not guaranteed to have the same id
> across multiple processes.
>
>   Thanks,
>
>      Matt
>
>
>>
>>
>> PETSc creates a duplicate of the communicator during object creation.
>>
>> https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscCommDuplicate.html
>>
>> Jose
>>
>>
>> > El 22 abr 2020, a las 8:40, Marius Buerkle <mbuerkle at web.de> escribió:
>> >
>> > Hi Dave,
>> >
>> > I want to use it in Fortran if possible. But I tried both C and Fortran
>> just to see if it works in general. I am using MPICH 3.3.2. I attached the
>> MWE for C and Fortran with the output I get.
>> >
>> > Marius
>> >
>> >
>> >
>> >
>> >
>> > Hi,
>> >
>> > What is PetscObjectGetComm expected to return?
>> >
>> > As Patrick said, it returns the communicator associated with the petsc
>> object.
>> >
>> > I thought it would give the MPI communicator the object lives on. So if
>> I create A matrix on PETSC_COMM_WORLD a call of PetscObjectGetComm for A it
>> would return PETSC_COMM_WORLD? But it seems to return something else, and
>> while most of the nodes return a similar communicator some are giving a
>> different one.
>> >
>> > How are you actually comparing the communicators (send code snippet)?
>> Which MPI implementation are you using? And when are comparing comms is the
>> comparison code written in C it FORTRAN?
>> >
>> >
>> > That said, is there a way to get the MPI communicator a matrix lives on?
>> >
>> > You are using the correct function. There is a macro as well but it’s
>> best to use the function.
>> >
>> > Thanks,
>> > Dave
>> >
>> >
>> >
>> >
>> > Best,
>> > Marius
>> > <test_comm.tar.gz>
>>
>>
>
>
> --
> 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
>
> https://www.cse.buffalo.edu/~knepley/
> <http://www.cse.buffalo.edu/~knepley/>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200422/5a3ed305/attachment-0001.html>


More information about the petsc-users mailing list