I spoke Gautam Chakrabarti at Pathscale. It seems the long and short of it is
that using OpenMP with C++ with a GNU3.3 (RHEL4) frontend creates some
limitations inside of pathCC. On a RHEL4 system, the compilier activates the
proper frontend for GCC 3.3, this is what creates the crash. As suggested I
forced the compilier to use the newer frontend with the -gnu4 option and the
build completes without an issue. Sad though that they aren't trying to be
backwards compatible, or even testing on RHEL4 systems. I imagine there is still
large group of people using RHEL4.
Perhaps this is an OMPI FAQ entry?
The full response from Pathscale appears below:
It appears you are using the compiler on a relatively old linux distribution
which has a default GCC compiler based on version 3.3. Our compiler has a
front-end that is activated on such systems, and a different newer improved
front-end which is activated on the newer GCC4-based systems. Our compiler is
tested on GCC-based systems with versions up to 4.2. I see that you are using
OpenMP (using -mp). C++ OpenMP has limitations when being used with the GNU3.3
based front-end, and is only fully supported when on a GNU4 based system.
You can invoke the newer front-end by the option -gnu4 on a GNU3 based system.
While compiling this particular file may work with -gnu4 on a GNU3 based system,
it is generally not safe to use this option for C++ on a GNU3 based system due
to incompatibility issues.
The ideal fix would be to try your compilation on a GNU4 based linux distribution.
Jeff Squyres wrote:
> FWIW, I'm able to duplicate the error. Looks definitely like a[nother]
> pathscale bug to me.
> Perhaps David's suggestions to disable some of the optimizations may
> help; otherwise, you can disable that entire chunk of code with the
> (as Ralph mentioned, this VampirTrace code is an add-on to Open MPI;
> it's not part of core OMPI itself)
> On May 15, 2009, at 9:17 AM, David O. Gunter wrote:
>> Pathscale supports -O3 (at least as of the 3.1 line). Here are some
>> suggestions from the 3.2 Users Manual you may also want to try.
>> If there are numerical problems with -O3 -OPT:Ofast, then try either
>> of the
>> -O3 -OPT:Ofast:ro=1
>> -O3 -OPT:Ofast:div_split=OFF
>> Note that ro is short for roundoff.
>> -Ofast is equivalent to -O3 -ipa -OPT:Ofast -fno-math-errno -ffast-math
>> so similar cautions apply to it as to -O3 -OPT:Ofast.
>> To use interprocedural analysis without the "Ofast-type" optimizations,
>> use either of the following:
>> -O3 -ipa
>> -O2 -ipa
>> Testing different optimizations can be automated by pathopt2. This
>> compiles and runs your program with a variety of compiler options and
>> creates a sorted list of the execution times for each run.
>> David Gunter
>> Los Alamos National Laboratory
>> > Last I checked when we were building here, I'm not sure Pathscale
>> > supports -O3. IIRC, O2 is the max supported value, though it has been
>> > awhile since I played with it.
>> > Have you checked the man page for it?
>> > It could also be something in the VampirTrace code since that is where
>> > you are failing. That is a contributed code - not part of OMPI itself
>> > - so we would have to check with those developers.
>> > On May 14, 2009, at 2:49 PM, Åke Sandgren wrote:
>> >> On Thu, 2009-05-14 at 13:35 -0700, Joshua Bernstein wrote:
>> >>> Greetings All,
>> >>> I'm trying to build OpenMPI 1.3.2 with the Pathscale compiler,
>> >>> version 3.2. A
>> >>> bit of the way through the build the compiler dies with what it
>> >>> things is a bad
>> >>> optimization. Has anybody else seen this, or know a work around for
>> >>> it? I'm
>> >>> going to take it up with Pathscale of course, but I thought I'd
>> >>> throw it out here:
>> >>> ---SNIP---
>> >>> /opt/pathscale/bin/pathCC -DHAVE_CONFIG_H -I. -I../.. -I../../
>> >>> extlib/otf/otflib
>> >>> -I../../extlib/otf/otflib -I../../vtlib/ -I../../vtlib -
>> >>> D_GNU_SOURCE -mp
>> >>> -DVT_OMP -O3 -DNDEBUG -finline-functions -pthread -MT vtfilter-
>> >>> vt_tracefilter.o
>> >>> -MD -MP -MF .deps/vtfilter-vt_tracefilter.Tpo -c -o vtfilter-
>> >>> vt_tracefilter.o
>> >>> `test -f 'vt_tracefilter.cc' || echo './'`vt_tracefilter.cc
>> >>> Signal: Segmentation fault in Global Optimization -- Dead Store
>> >>> Elimination phase.
>> >>> Error: Signal Segmentation fault in phase Global Optimization --
>> >>> Dead Store
>> >>> Elimination -- processing aborted
>> >>> *** Internal stack backtrace:
>> >>> pathCC INTERNAL ERROR: /opt/pathscale/lib/3.2/be died due to signal 4
>> >> Haven't seen it. But I'm only using -O2 when building openmpi.
>> >> Report it quickly, if we're lucky they might get a fix into the 3.3
>> >> release that is due out very soon. (I just got the beta yesterday)
>> >> --
>> >> Ake Sandgren, HPC2N, Umea University, S-90187 Umea, Sweden
>> >> Internet: ake_at_[hidden] Phone: +46 90 7866134 Fax: +46 90 7866126
>> >> Mobile: +46 70 7716134 WWW: http://www.hpc2n.umu.se
>> >> _______________________________________________
>> >> users mailing list
>> >> users_at_[hidden]
>> >> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> > _______________________________________________
>> > users mailing list
>> > users_at_[hidden]
>> > http://www.open-mpi.org/mailman/listinfo.cgi/users
>> users mailing list