Well,
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:
---SNIP---
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.
---END SNIP---
-Joshua Bernstein
Software Engineer
Penguin Computing
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
following:
--enable-contrib-no-build=vt
(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.
-david
If there are numerical problems with -O3 -OPT:Ofast, then try either
of the
following:
-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
program
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: a...@hpc2n.umu.se Phone: +46 90 7866134 Fax: +46 90 7866126
>> Mobile: +46 70 7716134 WWW: http://www.hpc2n.umu.se
>>
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users