Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

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
>