Bug 448110

Summary: libatlas.so.3.0 contains 3DNow opcodes
Product: [Fedora] Fedora Reporter: Dominic Dunlop <dominic.dunlop>
Component: atlasAssignee: Quentin Spencer <qspencer>
Status: CLOSED WONTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: 9CC: mbozzore
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-07-14 16:12:53 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Tar archive of files mentioned in Description none

Description Dominic Dunlop 2008-05-23 15:01:54 UTC
Description of problem:


Version-Release number of selected component (if applicable):
atlas-3.6.0-12-fc8 (x86_64), atlas-3.6.0-12-fc8 (x86_64)

How reproducible:
Repeatable given right stimulus

Steps to Reproduce:
1. Build HPL benchmark suite (available at
http://www.netlib.org/benchmark/hpl/software.html) on Pentium D host, following
instructions in INSTALL at top level of distribution. (HPL configuration
attached; uses libatlas as above and openmpi-1.2.4-2fc9 (x86_64)
2. Run quick test of HPL as described in INSTALL. It passes.
3. Run HPL with a fairly large test definition (attached; needs 4GB RAM --
although not it it crashes!). It dumps core within seconds due to an illegal
instruction.
  
Actual results:
gdb says:

Program terminated with signal 4, Illegal instruction.
[New process 23757]
#0  0x00000000007adadf in ATL_dJIK56x56x56TN56x56x0_a1_b1 () from
/usr/lib64/atlas/libatlas.so.3.0
(gdb) disass
Dump of assembler code for function ATL_dJIK56x56x56TN56x56x0_a1_b1:
0x00000000007adad0 <ATL_dJIK56x56x56TN56x56x0_a1_b1+0>:	mov    %rbp,-0x8(%rsp)
0x00000000007adad5 <ATL_dJIK56x56x56TN56x56x0_a1_b1+5>:	mov    %rbx,-0x10(%rsp)
0x00000000007adada <ATL_dJIK56x56x56TN56x56x0_a1_b1+10>:	mov    0x10(%rsp),%rsi
0x00000000007adadf <ATL_dJIK56x56x56TN56x56x0_a1_b1+15>:	prefetchw (%rsi)
0x00000000007adae2 <ATL_dJIK56x56x56TN56x56x0_a1_b1+18>:	prefetchw 0x40(%rsi)
0x00000000007adae6 <ATL_dJIK56x56x56TN56x56x0_a1_b1+22>:	mov    %r9,%rdi
0x00000000007adae9 <ATL_dJIK56x56x56TN56x56x0_a1_b1+25>:	prefetcht0 (%rdi)
0x00000000007adaec <ATL_dJIK56x56x56TN56x56x0_a1_b1+28>:	prefetcht0 0x40(%rdi)
0x00000000007adaf0 <ATL_dJIK56x56x56TN56x56x0_a1_b1+32>:	mov    $0x6200,%r8
0

The failing instruction, prefetchw, is not valid for the Pentium D (it's a 3DNow
extension).


Expected results:
It should work! Building ATLAS from source on the host results in a working
libatlas. See next section.

Additional info:
libatlas is tricky software: the build process sniffs around the build platform
and tries a lot of alternative algorithms and implementations (some written in
assembler), picking the best to include in the library for particular problem
classes. At run-time, the code examines the problem it's given, and picks among
the available algorithms in order to attain (it hopes) the best performance.
Hence a small problem (like the package's test example) may follow one code
path, while a large one explores another. I suspect that's what I'm seeing here.

I have not tried creating a portable libatlas myself. While I suspect it can be
done, it might be tricky, as you'd have to stop the build process from examining
non-portable implementations. There's no support in the package for this AFAICT,
as the author kind of assumes you're going to build on the exact target platform
in order to wring out its last drop of performance.

ALTERNATIVELY, it could be a compiler bug: see
https://bugs.launchpad.net/ubuntu/+source/gcc-4.1/+bug/66702, which details a
case of gcc4.1 emitting prefetchw when it should not.

Comment 1 Dominic Dunlop 2008-05-23 15:01:55 UTC
Created attachment 306509 [details]
Tar archive of files mentioned in Description

Comment 2 Mehdi Bozzo-Rey 2008-09-16 20:56:51 UTC
I ran into a similar problem (linpack compiled with same version of atlas failing on "old" intel based servers)
It looks like something is wrong in the spec file; the following file (generated during rpmbuild) : /usr/src/redhat/BUILD/ATLAS/lib/Linux_base_static

contains (see the "Architecture identifying flags" section for example): 

[root@dr08 Linux_base_static]# cat Make.inc
#  -----------------------------
#  Make.ARCH for ATLAS3.6.0
#  -----------------------------

#  ----------------------------------
#  Make sure we get the correct shell
#  ----------------------------------
   SHELL = /bin/sh

#  -------------------------------------------------
#  Name indicating the platform to configure BLAS to
#  -------------------------------------------------
   ARCH = Linux_base_static

#  -------------------
#  Various directories
#  -------------------
   TOPdir = /usr/src/redhat/BUILD/ATLAS
   INCdir = $(TOPdir)/include/$(ARCH)
   SYSdir = $(TOPdir)/tune/sysinfo/$(ARCH)
   GMMdir = $(TOPdir)/src/blas/gemm/$(ARCH)
   UMMdir = $(GMMdir)
   GMVdir = $(TOPdir)/src/blas/gemv/$(ARCH)
   GR1dir = $(TOPdir)/src/blas/ger/$(ARCH)
   L1Bdir = $(TOPdir)/src/blas/level1/$(ARCH)
   L2Bdir = $(TOPdir)/src/blas/level2/$(ARCH)
   L3Bdir = $(TOPdir)/src/blas/level3/$(ARCH)
   TSTdir = $(TOPdir)/src/testing/$(ARCH)
   AUXdir = $(TOPdir)/src/auxil/$(ARCH)
   CBLdir = $(TOPdir)/interfaces/blas/C/src/$(ARCH)
   FBLdir = $(TOPdir)/interfaces/blas/F77/src/$(ARCH)
   BINdir = $(TOPdir)/bin/$(ARCH)
   LIBdir = $(TOPdir)/lib/$(ARCH)
   PTSdir = $(TOPdir)/src/pthreads
   MMTdir = $(TOPdir)/tune/blas/gemm/$(ARCH)
   MVTdir = $(TOPdir)/tune/blas/gemv/$(ARCH)
   R1Tdir = $(TOPdir)/tune/blas/ger/$(ARCH)
   L1Tdir = $(TOPdir)/tune/blas/level1/$(ARCH)
   L3Tdir = $(TOPdir)/tune/blas/level3/$(ARCH)

#  ---------------------------------------------------------------------
#  Name and location of scripts for running executables during tuning
#  ---------------------------------------------------------------------
   ATLRUN = $(BINdir)/ATLrun.sh
   ATLFWAIT = $(BINdir)/xatlas_waitfile

#  ---------------------
#  Libraries to be built
#  ---------------------
   ATLASlib = $(LIBdir)/libatlas.a
   CBLASlib = $(LIBdir)/libcblas.a
   F77BLASlib = $(LIBdir)/libf77blas.a
   LAPACKlib = $(LIBdir)/liblapack.a

   TESTlib = $(LIBdir)/libtstatlas.a
#  -------------------------------------------
#  Upper bound on largest cache size, in bytes
#  -------------------------------------------
   L2SIZE = -DL2SIZE=2097152

#  ---------------------------------------
#  Command setting up correct include path
#  ---------------------------------------
   INCLUDES = -I$(TOPdir)/include -I$(TOPdir)/include/$(ARCH) \
              -I$(TOPdir)/include/contrib

#  -------------------------------------------
#  Defines for setting up F77/C interoperation
#  -------------------------------------------
   F2CDEFS = -DAdd_ -DStringSunStyle

#  --------------------------------------
#  Special defines for user-supplied GEMM
#  --------------------------------------
   UMMDEFS =

#  ------------------------------
#  Architecture identifying flags
#  ------------------------------
   ARCHDEFS = -DATL_OS_Linux -DATL_ARCH_HAMMER64 -DATL_SSE2 -DATL_SSE1 -DATL_GAS_x8664 -m64

#  -------------------------------------------------------------------
#  NM is the flag required to name a compiled object/executable
#  OJ is the flag required to compile to object rather than executable
#  These flags are used by all compilers.
#  -------------------------------------------------------------------
   NM = -o
   OJ = -c


#  ---------------------------------------------------------------------------
#  Fortran 77 compiler and the flags to use.  Presently, ATLAS does not itself
#  use any Fortran 77, but vendor BLAS are typically written for Fortran, so
#  any links that include non-ATLAS BLAS will use FLINKER instead of CLINKER
#  ---------------------------------------------------------------------------
   F77 = /usr/bin/gfortran
   F77FLAGS = -O
   FLINKER = $(F77)
   FLINKFLAGS = $(F77FLAGS)
   FCLINKFLAGS = $(FLINKFLAGS)


#  ---------------------------------------------------------------------------
#  Various C compilers, and the linker to be used when we are not linking in
#  non-ATLAS BLAS (which usually necessitate using the Fortran linker).
#  The C compilers recognized by ATLAS are:
#     CC :  Compiler to use to compile regular, non-generated code
#    MCC :  Compiler to use to compile generated, highly-optimized code
#    XCC :  Compiler to be used on the compile engine of a cross-compiler
#  These will typically all be the same.  An example of where this is not
#  the case would be DEC ALPHA 21164, where you want to use gcc for MCC,
#  because DEC's cc does not allow the programmer access to all 32 floating
#  point registers.  However, on normal C code, DEC's cc produces much faster
#  code than gcc, so you CC set to cc.  Of course, any system where you are
#  cross-compiling, you will need to set XCC differently than CC & MCC.
#  ---------------------------------------------------------------------------
   CDEFS = $(L2SIZE) $(INCLUDES) $(F2CDEFS) $(ARCHDEFS) $(CONFIGDEFS)

   GCCdir = /usr/bin
   GOODGCC = /usr/bin/gcc
   CC = /usr/bin/gcc
   CCFLAG0 = -fomit-frame-pointer -O -mfpmath=387 -m64
   CCFLAGS = $(CDEFS) $(CCFLAG0)
   MCC = /usr/bin/gcc
   MMFLAGS = -fomit-frame-pointer -O -mfpmath=387 -m64
   XCC = /usr/bin/gcc
   XCCFLAGS = $(CDEFS) -fomit-frame-pointer -O -mfpmath=387 -m64
   CLINKER = $(CC)
   CLINKFLAGS = $(CCFLAGS)
   BC = $(CC)
   BCFLAGS = $(CCFLAGS)
   ARCHIVER = ar
   ARFLAGS  = r
   RANLIB   = echo

#  -------------------------------------
#  tar, gzip, gunzip, and parallel make
#  -------------------------------------
   TAR    = /bin/tar
   GZIP   = /bin/gzip
   GUNZIP = /bin/gunzip
   PMAKE  = $(MAKE) -j 2

#  ------------------------------------
#  Reference and system libraries
#  ------------------------------------
   BLASlib =
   FBLASlib =
   FLAPACKlib = /usr/lib64/liblapack.a
   LIBS = -lm

#  ----------------------------------------------------------
#  ATLAS install resources (include arch default directories)
#  ----------------------------------------------------------
   ARCHDEF = $(TOPdir)/CONFIG/ARCHS/HAMMER64SSE2/gcc/misc
   MMDEF = $(TOPdir)/CONFIG/ARCHS/HAMMER64SSE2/gcc/gemm
   INSTFLAGS =

#  ---------------------------------------
#  Generic targets needed by all makefiles
#  ---------------------------------------
waitfile:





and for example, in  : /usr/src/redhat/BUILD/ATLAS/src/blas/gemm/Linux_base_static/KERNEL/ATL_dupKBmm47_1_1_b1.c



#  SSE2 register usage shown be these defines
#
#define rA0     %xmm0
#define rB0     %xmm1
#define rC0     %xmm2
#define rC1     %xmm3
#define rC2     %xmm4
#define rC3     %xmm5
#define rC4     %xmm6
#define rC5     %xmm7
#define rC6     %xmm8
#define rC7     %xmm9
#define rC8     %xmm10
#define rC9     %xmm11
#define rC10    %xmm12
#define rC11    %xmm13
#define rC12    %xmm14
#define rC13    %xmm15
#
#  Prefetch defines
#
#if 1
#define pref2(mem) prefetcht1   mem
#define prefB(mem) prefetcht0   mem
#define prefC(mem) prefetchw    mem
#else
#define pref2(mem)
#define prefB(mem)
#define prefC(mem)
#endif

        .text
.global ATL_AUSERMM
ATL_AUSERMM:
#
#       Save callee-saved iregs
#
        movq    %rbp, -8(%rsp)
        movq    %rbx, -16(%rsp)
#       movq    %r12, -32(%rsp)
#       movq    %r13, -40(%rsp)
#ifdef BETAX
   #define BOF -24
        movlpd  %xmm1, BOF(%rsp)
#endif
#
#       pA already comes in right reg
#       Initialize pB = B; pC = C;
#
        movq    16(%rsp), pC
                        prefC((pC))
                        prefC(64(pC))
        movq    %r9, pB
                        prefB((pB))
                        prefB(64(pB))
#
#
#       setup prefetch ptr for next blk of A
#

Comment 3 Mehdi Bozzo-Rey 2008-09-16 21:25:06 UTC
And in the rpmbuild logs (expect part):

If you have problems during configure or installation, consult the file
'ATLAS/README/TroubleShoot.txt'.

Are you ready to continue? [y]: ^JProbing to make operating system determination:
Operating system configured as Linux

Probing for architecture:
Enter your machine type:
   1. Other/UNKNOWN
   2. 32 bit AMD Hammer
   3. 64 bit AMD Hammer
Enter machine number [3]: ^JArchitecture is set to HAMMER64

Comment 4 Dominic Dunlop 2008-09-18 07:00:36 UTC
The safe approach is probably to build on a horrible old system with a lowest-common-denominator set of features like this ancient Celeron-based laptop:

$ cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 8
model name	: Celeron (Coppermine)
stepping	: 10
cpu MHz		: 1002.300
cache size	: 128 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse up
bogomips	: 2006.02

The result should be a binary that will run (well, jog) on anything.

Comment 5 Mehdi Bozzo-Rey 2008-09-18 11:17:29 UTC
Yes, that should work, but what will be the benefit then , in terms of performance ?

Let say you have a system with the latest and greatest cpu and you bench this version of atlas vs a standard recompiled blas ...

Comment 6 Mehdi Bozzo-Rey 2008-09-18 12:05:28 UTC
With the latest stable version (3.8.2), I am able to generate a Make.inc containing the arch I want, so looks like the next step is to recompile everything check the lib and bench it ... then package it.

[mbozzore@tyan04 test]$ ../ATLAS/configure -A 17


In the generated Make.inc on a core2duo:

#  ------------------------------
#  Architecture identifying flags
#  ------------------------------
   ARCHDEFS = -DATL_OS_Linux -DATL_ARCH_P4E -DATL_CPUMHZ=2659 -DATL_SSE3 -DATL_SSE2 -DATL_SSE1 -DATL_USE64BITS -DATL_GAS_x8664


#  -------------------------------------------------
#  Name indicating the platform to configure BLAS to
#  -------------------------------------------------
   ARCH = P4E64SSE3


And on a AMD box : (extra -Si cputhrchk 0 flag needed to bypass the CPU throttle probe: this is just a test )

#  ------------------------------
#  Architecture identifying flags
#  ------------------------------
   ARCHDEFS = -DATL_OS_Linux -DATL_ARCH_P4E -DATL_CPUMHZ=1000 -DATL_SSE3 -DATL_SSE2 -DATL_SSE1 -DATL_3DNow -DATL_USE64BITS -DATL_GAS_x8664

#  -------------------------------------------------
#  Name indicating the platform to configure BLAS to
#  -------------------------------------------------
   ARCH = P4E64SSE3

Comment 7 Mehdi Bozzo-Rey 2008-09-18 14:20:36 UTC
And removing the -DATL_3DNow flag on the AMD box looks ok : no prefetchw in the .a files


[mbozzore@tyan04 test]$ objdump -d lib/*.a | grep prefetchw
[mbozzore@tyan04 test]$ ls -alh lib/*.a
-rw-rw-r-- 1 mbozzore mbozzore 8.2M Sep 18 10:02 lib/libatlas.a
-rw-rw-r-- 1 mbozzore mbozzore 416K Sep 18 09:59 lib/libcblas.a
-rw-rw-r-- 1 mbozzore mbozzore 540K Sep 18 10:02 lib/libf77blas.a
-rw-rw-r-- 1 mbozzore mbozzore 478K Sep 18 10:02 lib/liblapack.a
-rw-rw-r-- 1 mbozzore mbozzore 417K Sep 18 10:02 lib/libptcblas.a
-rw-rw-r-- 1 mbozzore mbozzore 540K Sep 18 10:02 lib/libptf77blas.a
-rw-rw-r-- 1 mbozzore mbozzore 451K Sep 18 09:39 lib/libtstatlas.a


make check looks ok

Comment 8 Mehdi Bozzo-Rey 2008-09-18 15:20:34 UTC
This fixed my problem (linpack failing on nodes / specific cpu) so I guess the next step is repackage and do a full reg test.

Comment 9 Mehdi Bozzo-Rey 2008-09-24 19:52:43 UTC
First draft; what do you think ?

[mbozzore@stakhanov hpc]$ cat SPECS/atlas.spec
%define debug_package %{nil}
%define _atlas_pkg ATLAS
%define _atlas_builddir_static %{_atlas_pkg}_static
%define _atlas_builddir_shared %{_atlas_pkg}_shared

%define _soversionmajor 3
%define _soversionminor 0

Name:           atlas
Version:        3.8.2
Release:        1
Summary:        Automatically Tuned Linear Algebra Software

Group:          System Environment/Libraries
License:        BSD
URL:            http://math-atlas.sourceforge.net
Source0:         %{name}%{version}.tar.bz2

ExclusiveArch: x86_64

Requires:       %{_sysconfdir}/ld.so.conf.d
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: gawk
Requires: grep
Requires: coreutils
Requires: util-linux
BuildRequires:  gcc-gfortran gcc


%description
The ATLAS (Automatically Tuned Linear Algebra Software) project is an
ongoing research effort focusing on applying empirical techniques in
order to provide portable performance. At present, it provides C and
Fortran77 interfaces to a portably efficient BLAS implementation, as
well as a few routines from LAPACK.

The performance improvements in ATLAS are obtained largely via
compile-time optimizations and tend to be specific to a given hardware
configuration. In order to package ATLAS for Fedora some compromises
are necessary so that good performance can be obtained on a variety
of hardware. This set of ATLAS binary packages is therefore not
necessarily optimal for any specific hardware configuration.  However,
the source package can be used to compile customized ATLAS packages;
see the documentation for information.


%package devel
Summary:        Development libraries for ATLAS
Group:          Development/Libraries
Requires:       %{name} = %{version}-%{release}

%description devel
This package contains the static libraries and headers for development
with ATLAS (Automatically Tuned Linear Algebra Software).


##############
#%if "%{?enable_custom_atlas}" == "1"
# This flag enables building customized ATLAS libraries with all
# compile-time optimizations. Note that compilation will take a very
# long time, and that the resulting binaries are not guaranteed to
# work well or even at all on other hardware.

#%define archt %{_arch}
#%define types custom

#%package custom
#Summary:        Custom-compiled ATLAS libraries
#Group:          System Environment/Libraries
#%description custom
#This package contains the ATLAS (Automatically Tuned Linear Algebra
#Software) libraries compiled with all compile-time optimizations enabled.
#%package custom-devel
#Summary:        Development libraries for ATLAS with AltiVec extensions
#Group:          Development/Libraries
#Requires:       %{name}-custom = %{version}-%{release}
#%description custom-devel
#This package contains headers and static versions of the ATLAS
#(Automatically Tuned Linear Algebra Software) libraries compiled with
#all compile-time optimizations enabled.




#%endif
#################


%prep
%setup -c -T


%build
# Step 1a - Build ATLAS (static lib)
cp %{SOURCE0} .
tar -xjf %{name}%{version}.tar.bz2
cd ATLAS
mkdir -p %{_atlas_builddir_static}
( cd %{_atlas_builddir_static};
  ../configure -A 17 -Si cputhrchk 0
# remove 3DNow opt, if it was detected (amd build machine)
  sed -i -e 's/-DATL_3DNow//g' Make.inc
  make build;
  make check;
  make time;
)

# Step 1b - Build ATLAS (shared lib)
mkdir -p %{_atlas_builddir_shared}
( cd %{_atlas_builddir_shared};
  ../configure -A 17 -Fa alg -fPIC -Si cputhrchk 0
# remove 3DNow opt, if it was detected (amd build machine)
  sed -i -e 's/-DATL_3DNow//g' Make.inc
  make build;
  make check;
  make time;
  cd lib;
  make shared;
  for lib in libatlas.so liblapack.so libf77blas.so libcblas.so; do
     mv $lib ${lib}.%{_soversionmajor}.%{_soversionminor}
     ln -s ${lib}.%{_soversionmajor}.%{_soversionminor} \
           ${lib}.%{_soversionmajor}
     ln -s ${lib}.%{_soversionmajor}.%{_soversionminor} ${lib}
  done
)

%install

rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d/%{name}
mkdir -p $RPM_BUILD_ROOT%{_includedir}/%{name}
mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name}
mkdir -p $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}-%{version}


cd ATLAS/%{_atlas_builddir_shared}

make install


cd ..
cp -a include/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}
cp -a doc/* $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}-%{version}
echo "%{_libdir}/%{name}" > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d/%{name}.conf
( cd %{_atlas_builddir_static};
  cp -a lib/*.a $RPM_BUILD_ROOT%{_libdir}/%{name}
)
( cd %{_atlas_builddir_shared};
  cp -a lib/*.so* $RPM_BUILD_ROOT%{_libdir}/%{name}
)



%files
%defattr(-,root,root,-)
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/*.so.*
%{_sysconfdir}/ld.so.conf.d/%{name}.conf

%files devel
%defattr(-,root,root,-)
%dir %{_libdir}/%{name}
%{_defaultdocdir}/%{name}-%{version}
#%{_libdir}/%{name}_*/*.so
%{_libdir}/%{name}/*.a
%{_includedir}/%{name}

%post
/sbin/ldconfig

%postun
/sbin/ldconfig

%clean
rm -rf $RPM_BUILD_ROOT

%changelog
* Wed Sep 24 2008 Mehdi Bozzo-Rey <mbozzore> 3.8.2-1
- restart from scratch with the latest stable version and fix bugzilla 448110 (for decent x86_64 arch)





TEST: from the build log (mock):

SCOPING FOR FAILURES IN CBLAS TESTS:
fgrep -e fault -e FAULT -e error -e ERROR -e fail -e FAIL \
                interfaces/blas/C/testing/sanity.out | \
                fgrep -v PASSED
make[1]: [sanity_test] Error 1 (ignored)
DONE
SCOPING FOR FAILURES IN F77BLAS TESTS:
fgrep -e fault -e FAULT -e error -e ERROR -e fail -e FAIL \
                interfaces/blas/F77/testing/sanity.out | \
                fgrep -v PASSED
make[1]: [sanity_test] Error 1 (ignored)
DONE

DONE BUILDING TESTERS, RUNNING:
SCOPING FOR FAILURES IN BIN TESTS:
fgrep -e fault -e FAULT -e error -e ERROR -e fail -e FAIL \
                bin/sanity.out
8 cases: 8 passed, 0 skipped, 0 failed
4 cases: 4 passed, 0 skipped, 0 failed
8 cases: 8 passed, 0 skipped, 0 failed
4 cases: 4 passed, 0 skipped, 0 failed
8 cases: 8 passed, 0 skipped, 0 failed
4 cases: 4 passed, 0 skipped, 0 failed
8 cases: 8 passed, 0 skipped, 0 failed
4 cases: 4 passed, 0 skipped, 0 failed
DONE
SCOPING FOR FAILURES IN CBLAS TESTS:
fgrep -e fault -e FAULT -e error -e ERROR -e fail -e FAIL \
                interfaces/blas/C/testing/sanity.out | \
                fgrep -v PASSED
make[1]: [sanity_test] Error 1 (ignored)
DONE
SCOPING FOR FAILURES IN F77BLAS TESTS:
fgrep -e fault -e FAULT -e error -e ERROR -e fail -e FAIL \
                interfaces/blas/F77/testing/sanity.out | \
                fgrep -v PASSED
make[1]: [sanity_test] Error 1 (ignored)
DONE


and installing the rpm on the same machine I was able to see the failure:


Old rpm:

[mbozzore@dr08 mpich1]$ ./xhpl
============================================================================
HPLinpack 1.0a  --  High-Performance Linpack benchmark  --   January 20, 2004
Written by A. Petitet and R. Clint Whaley,  Innovative Computing Labs.,  UTK
============================================================================

An explanation of the input/output parameters follows:
T/V    : Wall time / encoded variant.
N      : The order of the coefficient matrix A.
NB     : The partitioning blocking factor.
P      : The number of process rows.
Q      : The number of process columns.
Time   : Time in seconds to solve the linear system.
Gflops : Rate of execution for solving the linear system.

The following parameter values will be used:

N      :    5000       29       30       34
NB     :      80
PMAP   : Row-major process mapping
P      :       1
Q      :       1
PFACT  :    Left
NBMIN  :       2
NDIV   :       2
RFACT  :    Left
BCAST  :   1ring
DEPTH  :       0
SWAP   : Mix (threshold = 64)
L1     : transposed form
U      : transposed form
EQUIL  : yes
ALIGN  : 8 double precision words

----------------------------------------------------------------------------

- The matrix A is randomly generated for each test.
- The following scaled residual checks will be computed:
   1) ||Ax-b||_oo / ( eps * ||A||_1  * N        )
   2) ||Ax-b||_oo / ( eps * ||A||_1  * ||x||_1  )
   3) ||Ax-b||_oo / ( eps * ||A||_oo * ||x||_oo )
- The relative machine precision (eps) is taken to be          1.110223e-16
- Computational tests pass if scaled residuals are less than           16.0

p0_6934:  p4_error: interrupt SIGx: 4
[mbozzore@dr08 mpich1]$ ldd xhpl
        libf77blas.so.3 => /usr/lib64/atlas/libf77blas.so.3 (0x00002b84cbf89000)
        libatlas.so.3 => /usr/lib64/atlas/libatlas.so.3 (0x00002b84cc1a5000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x000000350b800000)
        librt.so.1 => /lib64/librt.so.1 (0x000000350c000000)
        libgfortran.so.1 => /usr/lib64/libgfortran.so.1 (0x00002b84ccb45000)
        libm.so.6 => /lib64/libm.so.6 (0x000000350b000000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000351ae00000)
        libc.so.6 => /lib64/libc.so.6 (0x000000350ac00000)
        /lib64/ld-linux-x86-64.so.2 (0x000000350a800000)
[mbozzore@dr08 mpich1]$ rpm -aq | grep atlas
atlas-3.6.0-12.el5
atlas-devel-3.6.0-12.el5


New rpm:

[mbozzore@dr08 mpich1]$ rpm -qa | grep atlas
atlas-3.8.2-1
[mbozzore@dr08 mpich1]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/atlas/
[mbozzore@dr08 mpich1]$ ldd ./xhpl
        libf77blas.so.3 => /usr/lib64/atlas/libf77blas.so.3 (0x00002b632421e000)
        libatlas.so.3 => /usr/lib64/atlas/libatlas.so.3 (0x00002b632443b000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x000000350b800000)
        librt.so.1 => /lib64/librt.so.1 (0x000000350c000000)
        libgfortran.so.1 => /usr/lib64/libgfortran.so.1 (0x00002b63249dd000)
        libm.so.6 => /lib64/libm.so.6 (0x000000350b000000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000351ae00000)
        libc.so.6 => /lib64/libc.so.6 (0x000000350ac00000)
        /lib64/ld-linux-x86-64.so.2 (0x000000350a800000)
[mbozzore@dr08 mpich1]$ ./xhpl
============================================================================
HPLinpack 1.0a  --  High-Performance Linpack benchmark  --   January 20, 2004
Written by A. Petitet and R. Clint Whaley,  Innovative Computing Labs.,  UTK
============================================================================

An explanation of the input/output parameters follows:
T/V    : Wall time / encoded variant.
N      : The order of the coefficient matrix A.
NB     : The partitioning blocking factor.
P      : The number of process rows.
Q      : The number of process columns.
Time   : Time in seconds to solve the linear system.
Gflops : Rate of execution for solving the linear system.

The following parameter values will be used:

N      :    5000       29       30       34
NB     :      80
PMAP   : Row-major process mapping
P      :       1
Q      :       1
PFACT  :    Left
NBMIN  :       2
NDIV   :       2
RFACT  :    Left
BCAST  :   1ring
DEPTH  :       0
SWAP   : Mix (threshold = 64)
L1     : transposed form
U      : transposed form
EQUIL  : yes
ALIGN  : 8 double precision words

----------------------------------------------------------------------------

- The matrix A is randomly generated for each test.
- The following scaled residual checks will be computed:
   1) ||Ax-b||_oo / ( eps * ||A||_1  * N        )
   2) ||Ax-b||_oo / ( eps * ||A||_1  * ||x||_1  )
   3) ||Ax-b||_oo / ( eps * ||A||_oo * ||x||_oo )
- The relative machine precision (eps) is taken to be          1.110223e-16
- Computational tests pass if scaled residuals are less than           16.0

============================================================================
T/V                N    NB     P     Q               Time             Gflops
----------------------------------------------------------------------------
WR00L2L2        5000    80     1     1              19.32          4.314e+00
----------------------------------------------------------------------------
||Ax-b||_oo / ( eps * ||A||_1  * N        ) =        0.0355591 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_1  * ||x||_1  ) =        0.0234744 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_oo * ||x||_oo ) =        0.0045822 ...... PASSED
============================================================================
T/V                N    NB     P     Q               Time             Gflops
----------------------------------------------------------------------------
----------------------------------------------------------------------------
||Ax-b||_oo / ( eps * ||A||_1  * N        ) =        0.0975040 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_1  * ||x||_1  ) =        0.0751081 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_oo * ||x||_oo ) =        0.0251828 ...... PASSED
============================================================================
T/V                N    NB     P     Q               Time             Gflops
----------------------------------------------------------------------------
----------------------------------------------------------------------------
||Ax-b||_oo / ( eps * ||A||_1  * N        ) =        0.0413537 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_1  * ||x||_1  ) =        0.0497874 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_oo * ||x||_oo ) =        0.0177425 ...... PASSED
============================================================================
T/V                N    NB     P     Q               Time             Gflops
----------------------------------------------------------------------------
----------------------------------------------------------------------------
||Ax-b||_oo / ( eps * ||A||_1  * N        ) =        0.3621940 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_1  * ||x||_1  ) =        0.0548972 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_oo * ||x||_oo ) =        0.0143985 ...... PASSED
============================================================================

Finished      4 tests with the following results:
              4 tests completed and passed residual checks,
              0 tests completed and failed residual checks,
              0 tests skipped because of illegal input values.
----------------------------------------------------------------------------

End of Tests.
============================================================================

Comment 10 Bug Zapper 2009-06-10 01:07:08 UTC
This message is a reminder that Fedora 9 is nearing its end of life.
Approximately 30 (thirty) days from now Fedora will stop maintaining
and issuing updates for Fedora 9.  It is Fedora's policy to close all
bug reports from releases that are no longer maintained.  At that time
this bug will be closed as WONTFIX if it remains open with a Fedora 
'version' of '9'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version prior to Fedora 9's end of life.

Bug Reporter: Thank you for reporting this issue and we are sorry that 
we may not be able to fix it before Fedora 9 is end of life.  If you 
would still like to see this bug fixed and are able to reproduce it 
against a later version of Fedora please change the 'version' of this 
bug to the applicable version.  If you are unable to change the version, 
please add a comment here and someone will do it for you.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events.  Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

The process we are following is described here: 
http://fedoraproject.org/wiki/BugZappers/HouseKeeping

Comment 11 Bug Zapper 2009-07-14 16:12:53 UTC
Fedora 9 changed to end-of-life (EOL) status on 2009-07-10. Fedora 9 is 
no longer maintained, which means that it will not receive any further 
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of 
Fedora please feel free to reopen this bug against that version.

Thank you for reporting this bug and we are sorry it could not be fixed.