Open MPI logo

Hardware Locality Users' Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Users mailing list

Subject: Re: [hwloc-users] hwloc-1.6.1rc2 Build failure with Cray compiler
From: Jeff Hammond (jhammond_at_[hidden])
Date: 2013-01-17 15:06:25


Okay, I'll see if I can verify this. However, I wonder why you need
to build with Cray compilers? hwloc has a C API, no? A C library
built with GCC should link against an application compiled with Cray.
I really don't see any value in using the Cray optimizing compiler for
a library that clearly isn't performance critical.

Jeff

On Thu, Jan 17, 2013 at 2:00 PM, Erik Schnetter <schnetter_at_[hidden]> wrote:
> Given that the Cray compiler aborts on this code with an incorrect error
> message, I would actually call it a compiler bug. The compiler may possibly
> want to complain that it doesn't know __builtin_ffsl, but its error message
> (Declaration is incompatible with "int ffsl(long)") indicates that there is
> some other problem. Note that hwloc never declares ffsl; it only calls
> __builtin_ffsl.
>
> However, I have a work-around, and leave it up to you to report this or not.
>
> -erik
>
>
> On Thu, Jan 17, 2013 at 2:40 PM, Jeff Hammond <jhammond_at_[hidden]> wrote:
>>
>> Well then, this is most certainly not a Cray bug :-) The compiler is
>> doing exactly what you asked it to do.
>>
>> I would configure hwloc without this flag and assume that this
>> resolves the issue.
>>
>> Jeff
>>
>> On Thu, Jan 17, 2013 at 1:27 PM, Erik Schnetter <schnetter_at_[hidden]>
>> wrote:
>> > I realise I did not mention the flags I used when configuring hwloc. I
>> > am
>> > using
>> >
>> > -g -h gnu -O3
>> >
>> > which explicitly asks to recognise GNU extensions. (I need to use -h gnu
>> > to
>> > compile certain other code.) This would explain why __GNUC__ is
>> > defined...
>> > Apologies for omitting this earlier.
>> >
>> > -erik
>> >
>> >
>> >
>> > On Thu, Jan 17, 2013 at 2:21 PM, Jeff Hammond <jhammond_at_[hidden]>
>> > wrote:
>> >>
>> >> I was not able to reproduce the behavior described by Erik on the
>> >> NERSC Cray XE6, which is to say, Cray C does not claim to be GCC
>> >> there. As I can't verify the problem, I can't report it.
>> >>
>> >> I have no experience with Cray bug fix latency but I suspect this
>> >> needs to be worked-around (I refuse to call it a fix since there is no
>> >> problem in hwloc) because Cray won't backport whatever fix they
>> >> implement to all their compilers that users might come across.
>> >>
>> >> Jeff
>> >>
>> >> On Thu, Jan 17, 2013 at 1:15 PM, Erik Schnetter <schnetter_at_[hidden]>
>> >> wrote:
>> >> > I have no idea how fast Cray acts in such a case.
>> >> >
>> >> > -erik
>> >> >
>> >> >
>> >> > On Thu, Jan 17, 2013 at 2:05 PM, Brice Goglin <brice.goglin_at_[hidden]>
>> >> > wrote:
>> >> >>
>> >> >> Does Cray fix such bugs quickly usually? If so, no need to change
>> >> >> hwloc.
>> >> >> If not, I'll need somebody to test the change on other cray
>> >> >> platforms
>> >> >> and
>> >> >> compiler versions.
>> >> >> Brice
>> >> >>
>> >> >>
>> >> >>
>> >> >> Jeff Hammond <jhammond_at_[hidden]> a écrit :
>> >> >>>
>> >> >>> This is a bug in the Cray compiler. They cannot and should not set
>> >> >>> the __GNUC__ flag unless they are fully compatible with GCC. There
>> >> >>>
>> >> >>> are many ways to define "fully compatible" but at a minimum, code
>> >> >>> that
>> >> >>> compiles with GCC needs to compile with any compiler that elects to
>> >> >>> define __GNUC__. It is prudent to impose a higher standard in some
>> >> >>>
>> >> >>> cases but that's not pertinent to this discussion.
>> >> >>>
>> >> >>> Lots of vendor compilers pretend to be __GNUC__ for any number of
>> >> >>> reasons. I believe that they are all wrong for doing it.
>> >> >>>
>> >> >>> Regarding this specific issue, there is nothing wrong with hwloc
>> >> >>> and I
>> >> >>>
>> >> >>> don't know why anyone should bother trying to fix Cray's problem,
>> >> >>> but
>> >> >>> I suspect that pragmatism will prevail, as it appears to have in
>> >> >>> the
>> >> >>> case of Boost
>> >> >>>
>> >> >>>
>> >> >>> (http://www.boost.org/doc/libs/1_52_0/boost/config/select_platform_config.hpp).
>> >> >>>
>> >> >>>
>> >> >>> I'll reproduce this locally and contact Cray directly about fixing
>> >> >>> this on their end.
>> >> >>>
>> >> >>> Best,
>> >> >>>
>> >> >>> Jeff
>> >> >>>
>> >> >>> On Thu, Jan 17, 2013 at 12:19 PM, Erik Schnetter
>> >> >>> <schnetter_at_[hidden]>
>> >> >>> wrote:
>> >> >>>
>> >> >>>> hwloc-1.6.1rc2 fails to build with the Cray compiler
>> >> >>>>
>> >> >>>> Cray C : Version 8.1.2 Thu Jan 17, 2013 12:18:54
>> >> >>>>
>> >> >>>>
>> >> >>>> The error message is
>> >> >>>>
>> >> >>>> CC bitmap.lo
>> >> >>>> CC-147 craycc: ERROR
>> >> >>>> Declaration is incompatible with "int ffsl(long)" (declared at
>> >> >>>> line
>> >> >>>> 526
>> >> >>>> of
>> >> >>>> "/opt/cray/xe-sysroot/4.1.20/usr/include/string.h").
>> >> >>>>
>> >> >>>>
>> >> >>>> (Yes, there is no line number with the error message.)
>> >> >>>>
>> >> >>>> This seems to be caused by the fact that the Cray c!
>> >> >>>> ompiler
>> >> >>>> sets __GNUC__,
>> >> >>>>
>> >> >>>> but is not quite compatible. A work-around is to change line 56 of
>> >> >>>> include/private/misc.h from
>> >> >>>>
>> >> >>>> #elif defined(__GNUC__)
>> >> >>>>
>> >> >>>> to
>> >> >>>>
>> >> >>>> #elif defined(__GNUC__) && !defined(_CRAYC)
>> >> >>>>
>> >> >>>>
>> >> >>>> -erik
>> >> >>>>
>> >> >>>> --
>> >> >>>> Erik Schnetter <schnetter_at_[hidden]>
>> >> >>>> http://www.perimeterinstitute.ca/personal/eschnetter/
>> >> >>>>
>> >> >>>>
>> >> >>>> ________________________________
>> >> >>>>
>> >> >>>> hwloc-users mailing list
>> >> >>>> hwloc-users_at_[hidden]
>> >> >>>> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>
>> >> >> _______________________________________________
>> >> >>
>> >> >> hwloc-users mailing list
>> >> >> hwloc-users_at_[hidden]
>> >> >> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > Erik Schnetter <schnetter_at_[hidden]>
>> >> > http://www.perimeterinstitute.ca/personal/eschnetter/
>> >>
>> >>
>> >>
>> >> --
>> >> Jeff Hammond
>> >> Argonne Leadership Computing Facility
>> >> University of Chicago Computation Institute
>> >> jhammond_at_[hidden] / (630) 252-5381
>> >> http://www.linkedin.com/in/jeffhammond
>> >> https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond
>> >
>> >
>> >
>> >
>> > --
>> > Erik Schnetter <schnetter_at_[hidden]>
>> > http://www.perimeterinstitute.ca/personal/eschnetter/
>>
>>
>>
>> --
>> Jeff Hammond
>> Argonne Leadership Computing Facility
>> University of Chicago Computation Institute
>> jhammond_at_[hidden] / (630) 252-5381
>> http://www.linkedin.com/in/jeffhammond
>> https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond
>
>
>
>
> --
> Erik Schnetter <schnetter_at_[hidden]>
> http://www.perimeterinstitute.ca/personal/eschnetter/

-- 
Jeff Hammond
Argonne Leadership Computing Facility
University of Chicago Computation Institute
jhammond_at_[hidden] / (630) 252-5381
http://www.linkedin.com/in/jeffhammond
https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond