Should PetscObjectName be collective?

Barry Smith bsmith at mcs.anl.gov
Mon Nov 16 10:03:07 CST 2009


    Jed points out a flaw in the simple minded naming scheme we have.  
Lisandro points out the lack of generality of Jed's fix.

    To insure unique names and consistent names across ranks for a  
parallel object we could use the following scheme:

    classname_MPI-comm-id_counter

     where MPI-comm-id is obtained somehow from the communicator  (and  
then set as an attribute) and counter is a another attribute of that  
communicator that is cranked up each time it is obtained.  For a given  
communicator after setting the MPI-comm-id no communication is needed  
for each new name it hands out (and the debug version of PETSc would  
do a communication to check that everyone's counter is the same as a  
sanity check).

    I do not know a way to generate unique MPI-comm-id's. Any  
thoughts? Some feature of MPI I don't know?


  Barry


On Nov 16, 2009, at 9:48 AM, Lisandro Dalcin wrote:

> On Mon, Nov 16, 2009 at 10:49 AM, Jed Brown <jed at 59a2.org> wrote:
>> Since it is not collective, the names can get out of sync, even with
>> "reasonable" usage.  Consider a case where rank 0 views a serial Vec
>> (say with the Matlab viewer), and then a parallel Vec (e.g. to
>> HDF5). The result would either be deadlock (with collective IO) or a
>> file where Vec_0 contains all but rank 0's part, and Vec_1 contains  
>> only
>> rank 0's part (and an HDF5 error once another vector is viewed  
>> because
>> the Vec_1 dataspace cannot be created if it already exists).
>>
>> Is it reasonable to make PetscObjectName (and necessary dependents)
>> collective where it performs this?
>>
>>  MPI_Allreduce(MPI_IN_PLACE,&counter,1,MPI_INT,MPI_MAX,obj->comm);
>>
>
> And what about VecView() of serial objects on two different processes?
> What about parallel Vec's on subcommunicators of COMM_WORLD?
>
>
> -- 
> 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




More information about the petsc-dev mailing list