Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] [Score-P support] Compile errors of Fedora rawhide
From: Ralph Castain (rhc_at_[hidden])
Date: 2014-03-11 19:18:35


Clarification: MPI_Address was deprecated for MPI_Get_address (which properly has the const in it). The MPI_Info_set problem is a bug and I'll commit a fix for that one now.

What you might want to do is update your Score-P code to the current standard, since you are striving for MPI-3 compliance anyway.

On Mar 11, 2014, at 4:15 PM, Ralph Castain <rhc_at_[hidden]> wrote:

> Hmmm....well, we appear to have a problem. According to our Forum reps, those functions were deprecated by the Forum and hence the standard was actually NOT updated with "const" declarations. For some odd reason, MPICH went ahead and updated them anyway - leaving MPICH out of compliance with the standard.
>
> So we aren't entirely sure what we should do here. We're going to discuss it tomorrow, but our initial decision was to follow the standard and just note that MPICH is out of compliance.
>
>
> On Mar 11, 2014, at 3:55 PM, Orion Poplawski <orion_at_[hidden]> wrote:
>
>> On 03/11/2014 11:30 AM, Jeff Squyres (jsquyres) wrote:
>>> The safest thing for scoreP (and *any* MPI application/middleware) is to not wholly rely on the MPI_VERSION macros.
>>>
>>>> From a theoretical sense, the MPI_VERSION macro should be sufficient.
>>>
>>> But in reality, the upgrade of an MPI implementation to support all of MPI-3 is a gradual thing and takes time. Hence, OMPI 1.7.4 supports *part* of MPI-3, but not all of it. There's simply no way to indicate this "partial MPI-3 support" with the simplistic MPI_VERSION macro -- that macro is pretty much an all-or-nothing value. Which simply doesn't reflect reality. Sorry. :-\
>>>
>>> If it helps, you might try an OMPI 1.7.5rc (I'm due to make rc2 later this afternoon). 1.7.5 should be full MPI-3 compliant -- if there are any const's missing, those are bugs.
>>>
>>
>> Thanks for the help. However, with 1.7.5rc2 I'm still seeing:
>>
>> ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi_Misc.c:64:1: error: conflicting types for 'MPI_Address'
>> MPI_Address( SCOREP_MPI_CONST_DECL void* location, MPI_Aint* address )
>> ^
>> In file included from ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi.h:32:0,
>> from ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi_Misc.c:45:
>> /usr/include/openmpi-x86_64/mpi.h:1176:44: note: previous declaration of 'MPI_Address' was here
>> OMPI_DECLSPEC int MPI_Address(void *location, MPI_Aint *address)
>> ^
>> ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi_Misc.c:651:1: error: conflicting types for 'MPI_Info_set'
>> MPI_Info_set( MPI_Info info, SCOREP_MPI_CONST_DECL char* key, SCOREP_MPI_CONST_DECL char* value )
>> ^
>> In file included from ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi.h:32:0,
>> from ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi_Misc.c:45:
>> /usr/include/openmpi-x86_64/mpi.h:1512:44: note: previous declaration of 'MPI_Info_set' was here
>> OMPI_DECLSPEC int MPI_Info_set(MPI_Info info, char *key, char *value);
>> ^
>> The MPI-3 spec seems to side with Score-P here for MPI_Info_set. I couldn't find a definition for MPI_Address in the MPI-3 spec. Mpich appears to delare it const void *location.
>>
>>
>>> That being said, to fully support OMPI 1.7.4, more fine-grained configure checks for const will likely be required.
>>
>> At this point I'm hoping to just skip 1.7.4 and move to 1.7.5.
>>
>>> (keep in mind that this same thing is going to happen for MPI 3.1, MPI 4.0, ...etc.)
>>
>> Yup.
>>
>> - Orion
>>
>>>
>>>
>>>
>>>
>>> On Mar 11, 2014, at 1:14 PM, Orion Poplawski <orion_at_[hidden]> wrote:
>>>
>>>> FYI -
>>>>
>>>> Looks like the mix of MPI 3 compliant and older declarations is causing a bit of an issue for Score-P support. The current Score-P code bases adding the const qualifiers on MPI_VERSION >= 3. But openmpi 1.7.4 is still MPI_VERSION 2 (SUB 2). If I change scorep to add the const qualifiers for openmpi 1.7.4, then it has trouble with some different routines that are missing the const qualifiers, for example MPI_Address and MPI_Info_set. It's tough to support a mix like this.
>>>>
>>>> - Orion
>>>>
>>>> -------- Original Message --------
>>>> Subject: Re: [Score-P support] Compile errors of Fedora rawhide
>>>> Date: Tue, 11 Mar 2014 14:16:46 +0100
>>>> From: Daniel Lorenz <d.lorenz_at_[hidden]>
>>>> To: Orion Poplawski <orion_at_[hidden]>
>>>> CC: Score-P Support <support_at_[hidden]>
>>>>
>>>> Hi,
>>>>
>>>> I can reproduce the results with openmpi 1.7.4. It seems that openmpi 1.7.4 added const qualifiers to some MPI function parameters which cause this error. For MPI 3 many function arguments get such a const qualifier, and openmpi 1.7.4 added some MPI 3 features. However, not all function signatures in openmpi 1.7.4 are changed to the MPI 3 standard. Thus, there is a mixture of MPI 2 compliant functions and MPI 3 compliant functions. To support such mixtures we need to add a couple of additional checks. If you want to use the current Score-P with openmpi 1.7.4, the easiest workaround you could try is to build Score-P with the mpi.h header from openmpi 1.7.3. However there is no guarantee that it works. Another option is to adapt the Score-P MPI function wrapper signatures to the openmpi 1.7.4.
>>>>
>>>> Regards,
>>>> Daniel
>>>>
>>>> On 11 Mar 2014, at 03:35, Orion Poplawski <orion_at_[hidden]> wrote:
>>>>
>>>>> scorep 1.2.3 is compiling fine on Fedora 20, but failing on Fedora
>>>>> Rawhide during the openmpi build. Full build log is here:
>>>>> http://kojipkgs.fedoraproject.org//work/tasks/191/6620191/build.log
>>>>>
>>>>> errors are like:
>>>>>
>>>>> ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi_Cg.c:334:1: error:
>>>>> conflicting types for 'MPI_Group_excl'
>>>>> MPI_Group_excl( MPI_Group group, int n, SCOREP_MPI_CONST_DECL int*
>>>>> ranks, MPI_Group* newgroup )
>>>>> ^
>>>>> In file included from ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi.h:32:0,
>>>>> from
>>>>> ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi_Cg.c:44:
>>>>> /usr/include/openmpi-i386/mpi.h:1451:20: note: previous declaration of
>>>>> 'MPI_Group_excl' was here
>>>>> OMPI_DECLSPEC int MPI_Group_excl(MPI_Group group, int n, const int
>>>>> ranks[],
>>>>> ^
>>>>> ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi_Cg.c:371:1: error:
>>>>> conflicting types for 'MPI_Group_incl'
>>>>> MPI_Group_incl( MPI_Group group, int n, SCOREP_MPI_CONST_DECL int*
>>>>> ranks, MPI_Group* newgroup )
>>>>> ^
>>>>> In file included from ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi.h:32:0,
>>>>> from
>>>>> ../../build-mpi/../src/adapters/mpi/SCOREP_Mpi_Cg.c:44:
>>>>> /usr/include/openmpi-i386/mpi.h:1455:20: note: previous declaration of
>>>>> 'MPI_Group_incl' was here
>>>>> OMPI_DECLSPEC int MPI_Group_incl(MPI_Group group, int n, const int
>>>>> ranks[],
>>>>> ^
>>>>>
>>>>> one difference is openmpi 1.7.4 instead of 1.7.3. Let me know what else
>>>>> I can provide.
>>>>>
>>>>> - Orion
>>>>>
>>>>> --
>>>>> Orion Poplawski
>>>>> Technical Manager 303-415-9701 x222
>>>>> NWRA/CoRA Division FAX: 303-415-9702
>>>>> 3380 Mitchell Lane orion_at_[hidden]
>>>>> Boulder, CO 80301 http://www.cora.nwra.com
>>>>> _______________________________________________
>>>>> Support mailing list for Score-P
>>>>> support_at_[hidden]
>>>>> https://mailman.zih.tu-dresden.de/groups/listinfo/scorep-support
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> devel mailing list
>>>> devel_at_[hidden]
>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>> Link to this post: http://www.open-mpi.org/community/lists/devel/2014/03/14320.php
>>>
>>>
>>
>>
>> --
>> Orion Poplawski
>> Technical Manager 303-415-9701 x222
>> NWRA, Boulder/CoRA Office FAX: 303-415-9702
>> 3380 Mitchell Lane orion_at_[hidden]
>> Boulder, CO 80301 http://www.nwra.com
>> _______________________________________________
>> devel mailing list
>> devel_at_[hidden]
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> Link to this post: http://www.open-mpi.org/community/lists/devel/2014/03/14329.php
>