Compare commits

...

4 Commits
master ... f21

Author SHA1 Message Date
Susi Lehtola 36b85772cc Really unbundle lapack. 2015-02-08 05:49:45 +01:00
Frantisek Kluknavsky ce75bd4e22 rebuild with new lapack, https://bugzilla.redhat.com/show_bug.cgi?id=1149032 2015-02-02 15:23:07 +01:00
Jaromir Capik 8ffdb3e93b patching for Power8 to pass performance tunings and tests on P8 builders 2014-10-31 17:28:09 +01:00
Frantisek Kluknavsky 42cf841726 added pkgconfig file 2014-10-24 15:30:45 +02:00
9 changed files with 314 additions and 38 deletions

View File

@ -0,0 +1,17 @@
diff -up wrk/makes/Make.lib.wrk wrk/makes/Make.lib
--- wrk/makes/Make.lib.wrk 2015-01-23 21:14:46.465494411 +0100
+++ wrk/makes/Make.lib 2015-01-23 22:48:39.632479588 +0100
@@ -185,11 +185,11 @@ TRYALL :
#
fat_ptshared : # threaded target
$(MAKE) TRYALL outso=libtatlas.so \
- libas="libptlapack.a libptf77blas.a libptcblas.a libatlas.a" \
+ libas="libptlapack.a libptf77blas.a libptcblas.a libatlas.a $(SLAPACKlib)" \
LIBINSTdir="$(LIBINSTdir)"
fat_shared : # serial target
$(MAKE) TRYALL outso=libsatlas.so \
- libas="liblapack.a libf77blas.a libcblas.a libatlas.a" \
+ libas="liblapack.a libf77blas.a libcblas.a libatlas.a $(SLAPACKlib)" \
LIBINSTdir="$(LIBINSTdir)"
#
# Builds shared lib, not include fortran codes from LAPACK

View File

@ -5,7 +5,7 @@ Version: 3.10.1
%if "%{?enable_native_atlas}" != "0"
%define dist .native
%endif
Release: 14%{?dist}
Release: 18%{?dist}
Summary: Automatically Tuned Linear Algebra Software
Group: System Environment/Libraries
@ -21,7 +21,6 @@ Source3: README.dist
#Source7: IBMz1064.tgz
#Source8: IBMz19632.tgz
#Source9: IBMz19664.tgz
Source10: http://www.netlib.org/lapack/lapack-3.5.0.tgz
#archdefs taken from debian:
Source11: POWER332.tar.bz2
Source12: IBMz932.tar.bz2
@ -43,12 +42,20 @@ Patch6: atlas-affinity.patch
Patch7: atlas-aarch64port.patch
Patch8: atlas-genparse.patch
Patch9: atlas.3.10.1-unbundle.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: gcc-gfortran
# ppc64le patches
Patch95: initialize_malloc_memory.invtrsm.wms.oct23.patch
Patch96: xlf.command.not.found.patch
Patch98: getdoublearr.stripwhite.patch
Patch99: ppc64le-remove-vsx.patch
Patch100: ppc64le-abiv2.patch
Patch110: p8-mem-barrier.patch
Provides: bundled(lapack)
BuildRequires: gcc-gfortran
BuildRequires: lapack-static
%ifarch x86_64
Obsoletes: atlas-sse3 < 3.10
@ -324,6 +331,7 @@ ix86 architecture.
%patch7 -p1 -b .aarch64
%endif
%patch8 -p1 -b .genparse
%patch9 -p1 -b .unbundle
cp %{SOURCE1} CONFIG/ARCHS/
#cp %{SOURCE2} CONFIG/ARCHS/
@ -334,6 +342,16 @@ cp %{SOURCE13} CONFIG/ARCHS/
cp %{SOURCE14} CONFIG/ARCHS/
#cp %{SOURCE8} CONFIG/ARCHS/
#cp %{SOURCE9} CONFIG/ARCHS/
%ifarch ppc64le
%patch99 -p2
%patch98 -p2
%patch96 -p2
%patch95 -p2
%patch100 -p2
%patch110 -p1
%endif
%ifarch %{arm}
# Set arm flags in atlcomp.txt
sed -i -e 's,-mfpu=vfpv3,-mfpu=neon,' CONFIG/src/atlcomp.txt
@ -344,7 +362,19 @@ sed -i -e 's,-mfpu=vfpv3,,' tune/blas/gemm/CASES/*.flg
# Debug
#sed -i -e 's,> \(.*\)/ptsanity.out,> \1/ptsanity.out || cat \1/ptsanity.out \&\& exit 1,' makes/Make.*
# Generate lapack library
mkdir lapacklib
cd lapacklib
ar x %{_libdir}/liblapack_pic.a
# Remove functions that have ATLAS implementations
rm cgelqf.o cgels.o cgeqlf.o cgeqrf.o cgerqf.o cgesv.o cgetrf.o cgetri.o cgetrs.o clarfb.o clarft.o clauum.o cposv.o cpotrf.o cpotri.o cpotrs.o ctrtri.o dgelqf.o dgels.o dgeqlf.o dgeqrf.o dgerqf.o dgesv.o dgetrf.o dgetri.o dgetrs.o dlamch.o dlarfb.o dlarft.o dlauum.o dposv.o dpotrf.o dpotri.o dpotrs.o dtrtri.o ieeeck.o ilaenv.o lsame.o sgelqf.o sgels.o sgeqlf.o sgeqrf.o sgerqf.o sgesv.o sgetrf.o sgetri.o sgetrs.o slamch.o slarfb.o slarft.o slauum.o sposv.o spotrf.o spotri.o spotrs.o strtri.o xerbla.o zgelqf.o zgels.o zgeqlf.o zgeqrf.o zgerqf.o zgesv.o zgetrf.o zgetri.o zgetrs.o zlarfb.o zlarft.o zlauum.o zposv.o zpotrf.o zpotri.o zpotrs.o ztrtri.o
# Create new library
ar rcs ../liblapack_pic_pruned.a *.o
cd ..
%build
p=$(pwd)
for type in %{types}; do
if [ "$type" = "base" ]; then
libname=atlas
@ -358,8 +388,11 @@ for type in %{types}; do
../configure %{mode} %{?threads_option} %{?arch_option} -D c -DWALL -Fa alg '%{armflags} -g -Wa,--noexecstack -fPIC'\
--prefix=%{buildroot}%{_prefix} \
--incdir=%{buildroot}%{_includedir} \
--libdir=%{buildroot}%{_libdir}/${libname} \
--with-netlib-lapack-tarfile=%{SOURCE10}
--libdir=%{buildroot}%{_libdir}/${libname}
#--with-netlib-lapack-tarfile=%{SOURCE10}
#matches both SLAPACK and SSLAPACK
sed -i "s#SLAPACKlib.*#SLAPACKlib = ${p}/liblapack_pic_pruned.a#" Make.inc
%if "%{?enable_native_atlas}" == "0"
%ifarch x86_64
@ -469,6 +502,14 @@ for type in %{types}; do
sed -i 's#-m64#-m32#g' Make.inc
%endif
%ifarch ppc64le
sed -i 's#-mvsx##g' Make.inc
sed -i 's#-DATL_VSX##g' Make.inc
sed -i 's#-DATL_AltiVec##g' Make.inc
sed -i 's#-maltivec##g' Make.inc
sed -i 's#ARCH =.*#ARCH = POWER464#' Make.inc
%endif
%endif
make build
cd lib
@ -502,6 +543,17 @@ for type in %{types}; do
> %{buildroot}/etc/ld.so.conf.d/atlas-%{_arch}-${type}.conf
fi
done
#create pkgconfig file
mkdir -p $RPM_BUILD_ROOT%{_libdir}/pkgconfig/
cat > $RPM_BUILD_ROOT%{_libdir}/pkgconfig/atlas.pc << DATA
Name: %{name}
Version: %{version}
Description: %{summary}
Cflags: -I%{_includedir}/atlas/
Libs: -L%{_libdir}/atlas/ -lsatlas
DATA
mkdir -p %{buildroot}%{_includedir}/atlas
@ -668,6 +720,7 @@ fi
%{_includedir}/atlas-%{_arch}-base/
%{_includedir}/*.h
%ghost %{_includedir}/atlas
%{_libdir}/pkgconfig/atlas.pc
%files static
%defattr(-,root,root,-)
@ -809,6 +862,18 @@ fi
%endif
%changelog
* Sat Feb 07 2015 Susi Lehtola <jussilehtola@fedoraproject.org> - 3.10.1-18
- Really do the unbundling of lapack.
* Mon Feb 02 2015 Frantisek Kluknavsky <fkluknav@redhat.com> - 3.10.1-17
- rebuild with new lapack, https://bugzilla.redhat.com/show_bug.cgi?id=1149032
* Fri Oct 31 2014 Jaromir Capik <jcapik@redhat.com> - 3.10.1-16
- patching for Power8 to pass performance tunings and tests on P8 builders
* Fri Oct 24 2014 Frantisek Kluknavsky <fkluknav@redhat.com> - 3.10.1-15
- added pkgconfig file
* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.1-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild

View File

@ -0,0 +1,50 @@
Subject: getdoublearr.stripwhite
From: Michel Normand <normand@fr.ibm.com>
GetDoubleArr must only handle the comma delimited list at string head
and ignore anything after the first blank character.
Signed-off-by: Michel Normand <normand@fr.ibm.com>
---
ATLAS/include/atlas_genparse.h | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
Index: atlas/ATLAS/include/atlas_genparse.h
===================================================================
--- atlas.orig/ATLAS/include/atlas_genparse.h
+++ atlas/ATLAS/include/atlas_genparse.h
@@ -149,13 +149,24 @@ static int asmNames2bitfield(char *str)
}
/* procedure 7 */
-static int GetDoubleArr(char *str, int N, double *d)
+static int GetDoubleArr(char *callerstr, int N, double *d)
/*
* Reads in a list with form "%le,%le...,%le"; N-length d recieves doubles.
* RETURNS: the number of doubles found, or N, whichever is less
*/
{
- int i=1;
+ int i;
+ char *dupstr = DupString(callerstr);
+ char *str = dupstr;
+ /* strip the string to end on first white space */
+ for (i=0; dupstr[i]; i++)
+ {
+ if (isspace(dupstr[i])) {
+ dupstr[i] = '\0';
+ break;
+ }
+ }
+ i = 1;
assert(sscanf(str, "%le", d) == 1);
while (i < N)
{
@@ -166,6 +177,7 @@ static int GetDoubleArr(char *str, int N
break;
i++;
}
+ free(dupstr);
return(i);
}

View File

@ -0,0 +1,10 @@
--- ./ATLAS.first/tune/blas/level3/invtrsm.c 2013-10-22 19:35:03.000000000 +0000
+++ ./ATLAS/tune/blas/level3/invtrsm.c 2013-10-23 21:24:01.000000000 +0000
@@ -525,6 +525,7 @@
a = A = malloc(i * ATL_MulBySize(incA));
if (A)
{
+ memset(A,0,i*ATL_MulBySize(incA)); /* wms (!!) malloc call above returns non-initialized memory. */
if (Uplo == TestGE)
for (i=0; i < k; i++)
Mjoin(PATL,gegen)(N, N, A+i*incA, lda, N+lda);

12
p8-mem-barrier.patch Normal file
View File

@ -0,0 +1,12 @@
diff -Naur ATLAS.orig/include/atlas_pca.h ATLAS/include/atlas_pca.h
--- ATLAS.orig/include/atlas_pca.h 2013-01-08 19:15:40.000000000 +0100
+++ ATLAS/include/atlas_pca.h 2014-10-23 13:45:36.956698637 +0200
@@ -26,7 +26,7 @@
#endif
#elif defined(ATL_ARCH_POWER3) || defined(ATL_ARCH_POWER4) || \
defined(ATL_ARCH_POWER5) || defined(ATL_ARCH_POWER6) || \
- defined(ATL_ARCH_POWER7)
+ defined(ATL_ARCH_POWER7) || 1
#ifdef __GNUC__
#define ATL_membarrier __asm__ __volatile__ ("dcs")
/* #define ATL_USEPCA 1 */

60
ppc64le-abiv2.patch Normal file
View File

@ -0,0 +1,60 @@
--- atlas/ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c 2013-12-05 19:19:57.000000000 +0100
+++ atlas/ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c.new 2013-12-06 16:29:57.000000000 +0100
@@ -170,13 +170,21 @@ void ATL_USERMM(const int M, const int N
const TYPE beta, TYPE *C, const int ldc)
(r10) 8(r1)
*******************************************************************************
-64 bit ABIs:
+64 bit ABIv1s:
r3 r4 r5 r6/f1
void ATL_USERMM(const int M, const int N, const int K, const TYPE alpha,
r7 r8 r9 r10
const TYPE *A, const int lda, const TYPE *B, const int ldb,
f2 120(r1) 128(r1)
const TYPE beta, TYPE *C, const int ldc)
+
+64 bit ABIv2s:
+ r3 r4 r5 r6/f1
+void ATL_USERMM(const int M, const int N, const int K, const TYPE alpha,
+ r7 r8 r9 r10
+ const TYPE *A, const int lda, const TYPE *B, const int ldb,
+ f2 104(r1) 112(r1)
+ const TYPE beta, TYPE *C, const int ldc)
#endif
#ifdef ATL_AS_AIX_PPC
.csect .text[PR]
@@ -202,7 +210,7 @@ Mjoin(.,ATL_USERMM):
.globl Mjoin(_,ATL_USERMM)
Mjoin(_,ATL_USERMM):
#else
- #if defined(ATL_USE64BITS)
+ #if defined(ATL_USE64BITS) && _CALL_ELF != 2
/*
* Official Program Descripter section, seg fault w/o it on Linux/PPC64
*/
@@ -217,6 +225,7 @@ ATL_USERMM:
.globl Mjoin(.,ATL_USERMM)
Mjoin(.,ATL_USERMM):
#else
+/* ppc64 have no longer function descriptors in ABIv2 */
.globl ATL_USERMM
ATL_USERMM:
#endif
@@ -257,9 +266,17 @@ ATL_USERMM:
#endif
#endif
+
#if defined (ATL_USE64BITS)
+#if _CALL_ELF == 2
+/* ABIv2 */
+ ld pC0, 104(r1)
+ ld incCn, 112(r1)
+#else
+/* ABIv1 */
ld pC0, 120(r1)
ld incCn, 128(r1)
+#endif
#elif defined(ATL_AS_OSX_PPC) || defined(ATL_AS_AIX_PPC)
lwz pC0, 68(r1)
lwz incCn, 72(r1)

39
ppc64le-remove-vsx.patch Normal file
View File

@ -0,0 +1,39 @@
Subject: ppc64le remove vsx
From: Michel Normand <normand@fr.ibm.com>
temporarily remove the vsx related flags
as long as not supported for ppc64le
Note that also force as power4
Signed-off-by: Michel Normand <normand@fr.ibm.com>
Index: atlas/ATLAS/CONFIG/src/atlcomp.txt
===================================================================
--- atlas.orig/ATLAS/CONFIG/src/atlcomp.txt
+++ atlas/ATLAS/CONFIG/src/atlcomp.txt
@@ -187,9 +187,9 @@ MACH=PPCG5 OS=ALL LVL=1000 COMPS=dmc,icc
MACH=PPCG5 OS=ALL LVL=1000 COMPS=skc
'gcc' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -O2 -mvrsave'
MACH=POWER7 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc
- 'gcc' '-O2 -mvsx -mcpu=power7 -mtune=power7 -m64 -mvrsave -funroll-all-loops'
+ 'gcc' '-O2 -m64 -mvrsave -funroll-all-loops'
MACH=POWER7 OS=ALL LVL=1010 COMPS=f77
- 'gfortran' '-O2 -mvsx -mcpu=power7 -mtune=power7 -m64 -mvrsave -funroll-all-loops'
+ 'gfortran' '-O2 -m64 -mvrsave -funroll-all-loops'
MACH=POWER6 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc
'gcc' '-mcpu=power6 -mtune=power6 -maltivec -O3 -fno-schedule-insns -fschedule-insns2 -minsert-sched-nops=2'
MACH=POWER5 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc
Index: atlas/ATLAS/CONFIG/src/probe_comp.c
===================================================================
--- atlas.orig/ATLAS/CONFIG/src/probe_comp.c
+++ atlas/ATLAS/CONFIG/src/probe_comp.c
@@ -446,8 +446,8 @@ COMPNODE **GetDefaultComps(enum OSTYPE O
if ((vecexts & (1<<ISA_AVXFMA4)) && arch == AmdDozer)
vp = "-msse4.2 -mfma4";
- else if (vecexts & (1<<ISA_VSX))
- vp = "-mvsx";
+ /*else if (vecexts & (1<<ISA_VSX))
+ vp = "-mvsx";*/
else if (vecexts & (1<<ISA_AV))
vp = "-maltivec";
else if (vecexts & (1<<ISA_AVX))

View File

@ -11,4 +11,3 @@ ebb4732aff468bbc223e7f734252173b USII32.tgz
f3e4ca175b5ffc49dce7f3c37f791827 IBMz964.tar.bz2
27e7baa49c588299260188afa78303dc POWER332.tar.bz2
af1f95e19d7afaf0342fb1377ec94817 ARMv732NEON.tar.bz2
e7ba742120bd75339ac4c6fbdd8bce92 lapack-3.5.0.tgz

View File

@ -0,0 +1,24 @@
Subject: xlf.command.not.found
From: Michel Normand <normand@fr.ibm.com>
try to bypass error while building ppc64le
"make[2]: xlf: Command not found"
Signed-off-by: Michel Normand <normand@fr.ibm.com>
---
ATLAS/CONFIG/src/atlcomp.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: atlas/ATLAS/CONFIG/src/atlcomp.txt
===================================================================
--- atlas.orig/ATLAS/CONFIG/src/atlcomp.txt
+++ atlas/ATLAS/CONFIG/src/atlcomp.txt
@@ -199,7 +199,7 @@ MACH=POWER6 OS=ALL LVL=1010 COMPS=f77
MACH=POWER5 OS=ALL LVL=1010 COMPS=f77
'gfortran' '-mcpu=power5 -mtune=power5 -O3 -fno-schedule-insns -fno-rerun-loop-opt'
MACH=POWER7 OS=ALL LVL=1010 COMPS=f77
- 'xlf' '-qtune=pwr7 -qarch=pwr7 -O3 -qmaxmem=-1 -qfloat=hsflt'
+ 'gfortran' '-O2 -m64 -mvrsave -funroll-all-loops'
MACH=POWER5 OS=ALL LVL=1010 COMPS=f77
'xlf' '-qtune=pwr5 -qarch=pwr5 -O3 -qmaxmem=-1 -qfloat=hsflt'
MACH=POWER4 OS=ALL LVL=1010 COMPS=icc,dmc,smc,dkc,skc,xcc,gcc