[mpich-discuss] nemesis on powerpc64?

Dave Goodell goodell at mcs.anl.gov
Wed Sep 30 08:52:48 CDT 2009


So it looks like the login nodes are indeed PPC970, but the system  
toolchain creates 32-bit binaries:

------8<--------
% uname -a
Linux login2 2.6.16.60-0.42.5-ppc64 #1 SMP Mon Aug 24 09:41:41 UTC  
2009 ppc64 ppc64 ppc64 GNU/Linux
% file a.out
a.out: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1  
(SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs),  
for GNU/Linux 2.6.4, not stripped
------8<--------

We've had a ticket open to support this for a while but haven't had a  
chance to implement it yet: https://trac.mcs.anl.gov/projects/openpa/ticket/3 
.

I think it should just be a matter of using ldarx/stdcx when we have a  
64-bit pointer.  You should be able to add yourself to the CC line of  
that ticket and I'll update it once we implement the feature.

In the mean time you have a couple of different options, but the best  
one is probably just to configure with "--with-device=ch3:sock".

-Dave

On Sep 30, 2009, at 8:09 AM, Dave Goodell wrote:

> Let me take a look at this.  The "ppc" atomics implementation is  
> really just an IBM BlueGene/P compute-node implementation (basically  
> 32-bit PPC440).  I thought things were working on the login nodes  
> though, which are 64-bit PPC970  machines, IIRC.
>
> -Dave
>
> On Sep 29, 2009, at 8:13 PM, Martin Siegert wrote:
>
>> Hi,
>>
>> I am trying to compile mpich2-1.1.1p1 with
>> --with-device=ch3:nemesis
>> on a PowerPC 64bit Linux system using CC="gcc -m64" and FC="xlf - 
>> q64".
>>
>> configure fails with
>> configure: error:
>> The nemesis channel was selected yet no native atomic primitives are
>> available on this platform.  OpenPA can emulate atomic primitives  
>> using
>> locks by specifying --with-atomic-primitives=no but performance  
>> will be
>> very poor.  This override should only be specified for correctness
>> testing purposes.
>>
>> and src/openpa/config.log contains
>>
>> onfigure:6160: checking for support for gcc PowerPC atomics
>> configure:6223: gcc -m64 -o conftest -O3 -mcpu=970 -mtune=970 - 
>> maltivec -I./src -I/usr/local/src/mpich2-1.1.1p1/src/openpa/src -I/ 
>> usr/local/src/mpich2-1.1.1p1/src/openpa/src -DUSE_PROCESS_LOCKS   
>> conftest.c -lpthread  -lpthread >&5
>> In file included from conftest.c:41:
>> src/primitives/opa_gcc_ppc.h: In function `OPA_LL_ptr':
>> src/primitives/opa_gcc_ppc.h:80: error: duplicate case value
>> src/primitives/opa_gcc_ppc.h:80: error: previously used here
>> src/primitives/opa_gcc_ppc.h:82: warning: cast to pointer from  
>> integer of different size
>> src/primitives/opa_gcc_ppc.h: In function `OPA_SC_ptr':
>> src/primitives/opa_gcc_ppc.h:90: error: duplicate case value
>> src/primitives/opa_gcc_ppc.h:90: error: previously used here
>> src/primitives/opa_gcc_ppc.h:92: warning: cast from pointer to  
>> integer of different size
>> configure:6230: $? = 1
>>
>> Line 80 in opa_gcc_ppc.h is:
>>
>> OPA_COMPILE_TIME_ASSERT(sizeof(int) == sizeof(void *));
>>
>> I am not sure whether I am interpreting this correctly, but this  
>> looks
>> to me as if this fails if sizeof(int) != sizeof(void *), i.e., on any
>> 64bit platform.
>>
>> Is there a fix for this?
>>
>> Thanks!
>>
>> Cheers,
>> Martin
>>
>> -- 
>> Martin Siegert
>> Head, Research Computing
>> WestGrid Site Lead
>> IT Services                                phone: 778 782-4691
>> Simon Fraser University                    fax:   778 782-4242
>> Burnaby, British Columbia                  email: siegert at sfu.ca
>> Canada  V5A 1S6
>



More information about the mpich-discuss mailing list