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: Rolf vandeVaart (rolf.vandevaart_at_[hidden])
Date: 2010-08-27 08:29:39


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
>