Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] Problem w/ documented SPARC/gcc flags (1.5rc5 and 1.4.3rc1)
From: Paul H. Hargrove (PHHargrove_at_[hidden])
Date: 2010-08-27 13:44:03


Rolf,

Thanks, your explanation makes sense (intersection of ILP32 and V9 ISA
yields V8+ ABI).

When updating the README, please also consider my posting regarding the
recommended flags for the Sun C compiler, which are causing warnings
from recent Sun compilers:
http://www.open-mpi.org/community/lists/devel/2010/08/8334.php

-Paul

Rolf vandeVaart wrote:
> Paul, I believe you are right. I was referencing information from
> here http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html From this
> site, I also read the following:
>
> "With -mv8plus, GCC generates code for the SPARC-V8+ ABI. The
> difference from the V8 ABI is that the global and out registers are
> considered 64-bit wide. This is enabled by default on Solaris in
> 32-bit mode for all SPARC-V9 processors."
>
> So, by compiling in 32-bit mode with mcpu=v9, we get the same ABI. I
> experimented with both "-mcpu=v9" and "-mv8plus -Wa,-xarch=v8plus" and
> the results were the same.
>
> # file orterun
> release-v8/bin/orterun: ELF 32-bit MSB executable SPARC32PLUS Version
> 1, V8+ Required, dynamically linked, not stripped
>
> Rolf
>
> On 08/26/10 14:23, Paul H. Hargrove wrote:
>> Rolf,
>>
>> Thanks for looking into this issue. Can you explain for me why V8+
>> is OK w/ the Sun C complier, but V9 is required w/ gcc? I am
>> guessing that one is an ABI flag and the other is a CPU flag, right?
>>
>> -Paul
>>
>> P.S.
>> The V8+ vs V9 ABI differences are described at
>> http://developers.sun.com/solaris/articles/sparcv9abi.html
>>
>> Rolf vandeVaart wrote:
>>> I have dug a little more into this. I am now just planning to fix
>>> the README to match
>>> the configure message. In short, use CFLAGS="-mcpu=v9". It turns
>>> out this change
>>> was made in the configure code, but the README was never updated.
>>> This should
>>> work properly for all cases.
>>>
>>> Rolf
>>>
>>> On 8/25/2010 6:53 PM, Paul H. Hargrove wrote:
>>>> In the message below I fouled up some cut-and-paste.
>>>> Please mentally replace
>>>>
>>>> And have configured (again stopping after the Assembler ABI probe)
>>>> with gcc-4.3.3 AND Rolf's flags
>>>> CC=gcc-4.3.3 CXX=g++-4.3.3 CFLAGS=-mv8plus CC=gcc-4.3.3
>>>> CXX=g++-4.3.3 CFLAGS=-mv8plus
>>>>
>>>> with
>>>>
>>>> And have configured (again stopping after the Assembler ABI probe)
>>>> with gcc-4.3.3 AND Rolf's flags
>>>> CC=gcc-4.3.3 CXX=g++-4.3.3 CFLAGS="-mv8plus -Wa,-xarch=v8plus"
>>>> CXXFLAGS="-mv8plus -Wa,-xarch=v8plus"
>>>>
>>>> -Paul
>>>>
>>>>
>>>>
>>>> Paul H. Hargrove wrote:
>>>>> Trying Rolf's suggestion, I configure 1.4.3rc1 with
>>>>> CFLAGS="-mv8plus -Wa,-xarch=v8plus" CXXFLAGS="-mv8plus
>>>>> -Wa,-xarch=v8plus"
>>>>> I find that I get configure past the v8+/v9 Assembler ABI probe
>>>>> (but didn't wait for the full configure to run).
>>>>>
>>>>> Another datapoint in favor of #2 is that I can successfully build
>>>>> 1.4.3rc1 w/ gcc-4.3.3 when I configure with
>>>>> CC=gcc-4.3.3 CXX=g++-4.3.3 CFLAGS=-mv8plus CXXFLAGS=-mv8plus
>>>>> And have configured (again stopping after the Assembler ABI probe)
>>>>> with gcc-4.3.3 AND Rolf's flags
>>>>> CC=gcc-4.3.3 CXX=g++-4.3.3 CFLAGS=-mv8plus CC=gcc-4.3.3
>>>>> CXX=g++-4.3.3 CFLAGS=-mv8plus
>>>>>
>>>>> So, here is MY summary:
>>>>>
>>>>> + For gcc-4.3.3 README is providing correct information
>>>>> + For gcc-3.3.2 README is providing INcorrect information
>>>>> + For both gcc versions configure provides correct info on
>>>>> failure, but following it prevents using the V8+ ABI.
>>>>>
>>>>> My suggestion fix:
>>>>>
>>>>> + Edit README and configure both to suggest "-mv8plus
>>>>> -Wa,-xarch=v8plus" as that should be correct for either compiler
>>>>> version.
>>>>>
>>>>> -Paul
>>>>>
>>>>> Rolf vandeVaart wrote:
>>>>>> Paul, is it possible for you to try one more thing. Can you
>>>>>> reconfigure with
>>>>>>
>>>>>> CFLAGS="-mv8plus -Wa,-xarch=v8plus"
>>>>>>
>>>>>> I think this will get past the configure test as the configure
>>>>>> test is compiling a piece
>>>>>> of assembly, and for some reason, the -mv8plus is not finding its
>>>>>> way to the assembler.
>>>>>>
>>>>>> If that works, then we eliminate #2 on your list below, and have
>>>>>> to decide between
>>>>>> #1 and #3.
>>>>>> Rolf
>>>>>>
>>>>>> On 08/25/10 15:56, Paul H. Hargrove wrote:
>>>>>>> In both 1.5rc5 and 1.4.3rc1, README says:
>>>>>>> - Open MPI does not support the Sparc v8 CPU target, which is the
>>>>>>> default on Sun Solaris. The v8plus (32 bit) or v9 (64 bit)
>>>>>>> targets must be used to build Open MPI on Solaris. This can be
>>>>>>> done by including a flag in CFLAGS, CXXFLAGS, FFLAGS, and FCFLAGS,
>>>>>>> -xarch=v8plus for the Sun compilers, -mv8plus for GCC.
>>>>>>>
>>>>>>> However, the -mv8plus flag DOES NOT work for me.
>>>>>>> The following occurs for both 1.5rc5 and 1.4.3rc1:
>>>>>>>
>>>>>>> $ uname -a
>>>>>>> SunOS lem.lbl.gov 5.10 s10_69 sun4u sparc SUNW,Ultra-5_10
>>>>>>>
>>>>>>> $ gcc --version
>>>>>>> gcc (GCC) 3.3.2
>>>>>>> Copyright (C) 2003 Free Software Foundation, Inc.
>>>>>>> This is free software; see the source for copying conditions.
>>>>>>> There is NO
>>>>>>> warranty; not even for MERCHANTABILITY or FITNESS FOR A
>>>>>>> PARTICULAR PURPOSE.
>>>>>>>
>>>>>>> $ [path_to]/configure --disable-mpi-f77 --disable-mpi-f90
>>>>>>> CFLAGS=-mv8plus CXXFLAGS=-mv8plus
>>>>>>> [...]
>>>>>>> *** Assembler
>>>>>>> [...]
>>>>>>> checking if have Sparc v8+/v9 support... no
>>>>>>> configure: WARNING: Sparc v8 target is not supported in this
>>>>>>> release of Open MPI.
>>>>>>> configure: WARNING: You must specify the target architecture v8plus
>>>>>>> configure: WARNING: (cc: -xarch=v8plus, gcc: -mcpu=v9) for
>>>>>>> CFLAGS, CXXFLAGS,
>>>>>>> configure: WARNING: FFLAGS, and FCFLAGS to compile Open MPI in
>>>>>>> 32 bit mode on
>>>>>>> configure: WARNING: Sparc processors
>>>>>>> configure: error: Can not continue.
>>>>>>>
>>>>>>>
>>>>>>> Following the recommendation from configure:
>>>>>>> $ [path_to]/configure --disable-mpi-f77 --disable-mpi-f90
>>>>>>> CFLAGS=-mcpu=v9 CXXFLAGS=-mcpu=v9
>>>>>>> DOES work for both of the current RCs.
>>>>>>>
>>>>>>> So, I see a few possibilities:
>>>>>>>
>>>>>>> 1) -mv8plus SHOULD work (as -xarch=v8plus appears to w/ Suc C
>>>>>>> 5.10) but configure is unconditionally too strict.
>>>>>>> OR
>>>>>>> 2) My gcc is older than other have tested and configure is
>>>>>>> mistakenly thinking the ABI is wrong.
>>>>>>> OR
>>>>>>> 3) -mcpu=v9 is the proper incantation and README needs correction.
>>>>>>>
>>>>>>> No matter which of the above is correct, I suspect REAME and
>>>>>>> configure need to give the user the same information.
>>>>>>>
>>>>>>> -Paul
>>>>>>>
>>>>>>> P.S. I can provide temporary machine access if needed to
>>>>>>> resolve this.
>>>>>>> P.P.S. I am /still/ not finished testing all the platforms
>>>>>>> available to me ;-)
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> devel mailing list
>>>>>> devel_at_[hidden]
>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>
>>>>
>>>
>>> _______________________________________________
>>> devel mailing list
>>> devel_at_[hidden]
>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

-- 
Paul H. Hargrove                          PHHargrove_at_[hidden]
Future Technologies Group
HPC Research Department                   Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900