[mpich-discuss] nemesis on powerpc64?

Dave Goodell goodell at mcs.anl.gov
Wed Sep 30 09:39:23 CDT 2009


Something else just occurred to me.  With a sufficiently modern  
version of GCC you should be able to get support via the GCC atomic  
intrinsic functions.  This clearly isn't happening for some reason  
because mutex-based emulation is being selected.  On the PPC970 login  
nodes here at ANL we have GCC-4.1.2, which is new enough.  I believe  
that you need GCC-4.1 or later to get the intrinsics.  Perhaps you  
have a later version of the compiler somewhere on your system?

I don't know what the performance will be like.  Probably somewhere in- 
between native ldarx/stdcx performance and mutex emulation because of  
the full barrier semantics implied by the GCC API.

-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