Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] atomic_spinlock test failure with xlc/ppc64 (1.5rc5 and 1.4.3rc1)
From: Paul H. Hargrove (PHHargrove_at_[hidden])
Date: 2010-08-25 22:17:52


I know Linux/PPC64 is listed as an under-tested platform, and the BG/P
release of XLC is probably not supported at all, but I tested it anyway
(on a front-end, not the BG/P compute nodes) and have the following to
report. I report here only the 1.5rc5 case, but results are identical
with 1.4.3rc1.

$ make check
[...]
--> Testing atomic_spinlock
../../../test/asm/run_tests: line 8: 25146 Segmentation fault $*
$threads
    - 1 threads: Failed
../../../test/asm/run_tests: line 8: 25148 Segmentation fault $*
$threads
    - 2 threads: Failed
../../../test/asm/run_tests: line 8: 25151 Segmentation fault $*
$threads
    - 4 threads: Failed
../../../test/asm/run_tests: line 8: 25154 Segmentation fault $*
$threads
    - 5 threads: Failed
../../../test/asm/run_tests: line 8: 25157 Segmentation fault $*
$threads
    - 8 threads: Failed
FAIL: atomic_spinlock
[...]
========================================================
1 of 8 tests failed
Please report to http://www.open-mpi.org/community/help/
========================================================

Here are the details of the platform:

$ uname -a
Linux login1 2.6.16.60-0.67.1-ppc64 #1 SMP Thu Aug 5 10:54:46 UTC 2010
ppc64 ppc64 ppc64 GNU/Linux

$ which xlc
/soft/apps/ibmcmp-aug2010/vac/bg/9.0/bin/xlc
$ xlc -qversion
IBM XL C/C++ Advanced Edition for Blue Gene/P, V9.0
Version: 09.00.0000.0009

$ /lib64/libc.so.6
GNU C Library stable release version 2.4 (20090904), by Roland McGrath
et al.
Copyright (C) 2006 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.
Configured for ppc64-suse-linux.
Compiled by GNU CC version 4.1.2 20070115 (SUSE Linux).
Compiled on a Linux 2.6.16 system on 2009-09-04.
Available extensions:
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        GNU libio by Per Bothner
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
        Native POSIX Threads Library by Ulrich Drepper et al
        BIND-8.2.3-T5B
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

Here is the configure command:

$ [path_to]/openmpi-1.5rc5/configure --enable-static --disable-shared
--with-contrib-vt-flags=--with-platform=linux CC='xlc_r -q64' CXX='xlC_r
-q64' F77='xlf -q64' FC='xlf90 -q64'

These deserve some explanation:
+ --enable-static --disable-shared
    These are due to an apparent libtool-vs-xlc problem I will report
separately
+ --with-contrib-vt-flags=--with-platform=linux
    This is due to VT's BG/P auto-detection which is not appropriate
when building for the front end
    See http://www.open-mpi.org/community/lists/devel/2010/08/8358.php
+ CC='xlc_r -q64' CXX='xlC_r -q64'
    The -q64 requests the LP64 ABI
    The "_r" suffixes are for the thread-safe versions, and are needed
to avoid undefined pthread symbols at link time
+ F77='xlf -q64' FC='xlf90 -q64'
    The -q64 flag is, again, for the LP64 ABI
    No "_r" suffix was needed, as I suspect no Fortran+pthread code is
built when compiling Open MPI

Here is the Assembler section of the configure output:

*** Assembler
checking dependency style of xlc_r -q64... none
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking for fgrep... /bin/grep -F
checking if need to remove -g from CCASFLAGS... no
checking whether to enable smp locks... yes
checking if .proc/endp is needed... no
checking directive for setting text section... .text
checking directive for exporting symbols... .globl
checking for objdump... objdump
checking if .note.GNU-stack is needed... no
checking suffix for labels... :
checking prefix for global symbol labels...
checking prefix for lsym labels... .L
checking prefix for function in .type... @
checking if .size is needed... yes
checking if .align directive takes logarithmic value... yes
checking if PowerPC registers have r prefix... no
checking if xlc_r -q64 supports GCC inline assembly... yes
checking if xlc_r -q64 supports DEC inline assembly... no
checking if xlc_r -q64 supports XLC inline assembly... no
checking if xlC_r -q64 supports GCC inline assembly... yes
checking if xlC_r -q64 supports DEC inline assembly... no
checking if xlC_r -q64 supports XLC inline assembly... no
checking for assembly format... default-.text-.globl-:--.L-_at_-1-1-0-1-0
checking for asssembly architecture... POWERPC64
checking for perl... perl
checking for pre-built assembly file... no (not in asm-data)
checking whether possible to generate assembly file... yes
checking for atomic assembly filename... atomic-local.s

Note that "supports GCC inline assembly... yes" is NOT mistake (though I
was not expecting to see "XLC inline assembly... no").

-Paul

-- 
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